此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
如何创建标题中包含*
的工作表?
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以使用正则表达式替换无效字符:
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)
但这不是解决方案,只是一种解决方法。
欢迎使用更好的解决方案:是否可以引用*
?
答案 2 :(得分:0)
您为什么还要这样做?
我刚刚创建了一个Excel文件,其中包含一个名为Nice*
的工作表。我这样做是用一个名为Nice
的工作表创建一个Excel文件,然后将该文件解压缩(一个Excel文件实际上是一个压缩的目录/文件结构),到处都用{{1}替换了Nice
},然后再次将其压缩。
结果是我无法再打开Excel文件。
因此,即使您设法创建一个包含星号的工作表,仍然会导致Excel文件损坏。