首页 > 解决方案 > ValueError:工作表标题中发现无效字符

问题描述

此 Python 代码失败:

from openpyxl import Workbook

wb = Workbook()
sheet = wb.create_sheet('*nice*')

例外:

/home/foo/local/bin/python /home/foo/src/invalid.py
Traceback (most recent call last):
  File "/home/foo/src/invalid.py", line 5, in <module>
    sheet = wb.create_sheet('*nice')
  File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/workbook.py", line 158, in create_sheet
    new_ws = Worksheet(parent=self, title=title)
  File "/home/foo/local/lib/python2.7/site-packages/openpyxl/worksheet/worksheet.py", line 121, in __init__
    _WorkbookChild.__init__(self, parent, title)
  File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/child.py", line 50, in __init__
    self.title = title or self._default_title
  File "/home/foo/local/lib/python2.7/site-packages/openpyxl/workbook/child.py", line 93, in title
    raise ValueError(msg)
ValueError: Invalid character * found in sheet title

如何创建包含*在标题中的工作表?

标签: pythonexcelopenpyxl

解决方案


您可以使用正则表达式替换无效字符:

import re

from openpyxl import Workbook
from openpyxl.workbook.child import INVALID_TITLE_REGEX

wb = Workbook()
title = re.sub(INVALID_TITLE_REGEX, '_', '*nice*')
sheet = wb.create_sheet(title)

但这不是解决方案,只是一种解决方法。

欢迎更好的解决方案:有没有办法引用*


推荐阅读