ValueError: в заголовке листа обнаружен недопустимый символ - PullRequest
0 голосов
/ 28 марта 2019

Сбой этого кода 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

Как создать лист, содержащий * в заголовке?

Ответы [ 3 ]

4 голосов
/ 28 марта 2019

Можем ли мы создать рабочий лист, используя символ звездочки (*)?

sheet = wb.create_sheet("&nice")

Согласно this , мы не можем использовать следующие специальные символы в именах листов

\ / * [ ] :

1 голос
/ 28 марта 2019

Вы можете использовать регулярные выражения для замены недопустимых символов:

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)

Но это не решение, а просто обходной путь.

Приветствуются лучшие решения: есть лиспособ процитировать *?

0 голосов
/ 28 марта 2019

Почему вы вообще хотите это сделать?

Я только что создал файл Excel, содержащий рабочий лист, который называется Nice*. Я сделал это, создав файл Excel с рабочим листом с именем Nice, распаковал файл (файл Excel на самом деле является заархивированной директорией / структурой файла), везде я заменил Nice на Nice* и снова сжал его.

В результате я больше не мог открыть свой файл Excel.

Таким образом, даже если вам удастся создать рабочий лист, содержащий звездочку, вы все равно получите поврежденный файл Excel.

...