IllegalCharacterError против ValueError в openpyxlPython

Программы на Python
Ответить
Anonymous
 IllegalCharacterError против ValueError в openpyxl

Сообщение Anonymous »

Мне нужно сохранить файлы Excel с помощью pandas с помощью openpyxl.
Данные поступают из базы данных, и часто текстовые поля содержат странные символы и это вызывает ошибку IllegalCharacterError. У меня есть решение для этой ситуации: выяснить, какой лист, какая строка и какой столбец вызывает проблему.
Но недавно данные выдали мне такую ​​ошибку:

Код: Выделить всё

ValueError: All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters
Как я мог превратить это в ту же ошибку, что и предыдущий раз? Может, с заменой каких-то байт?
Пример с двумя текстами. Верхний создает ValueError, нижний — IllegalCharacterError.
См. код в сути. stackoverflow не может правильно сохранить приведенный ниже код.

Код: Выделить всё

from openpyxl import Workbook

text = "" # Including three bytes: hexadecimal FFBFBF   resulting ValueError
# text = '\x16'                                        # resulting IllegalCharacterError

wb = Workbook()
ws = wb.active
ws.append([text])
wb.save("test.xlsx")
Я использую следующую настройку:

Код: Выделить всё

openpyxl                 3.1.2
OS Linux-6.11.5-200.fc40.x86_64-x86_64-with-glibc2.39 (Fedora)
Python 3.12.7 (main, Oct  1 2024, 00:00:00) [GCC 14.2.1 20240912 (Red Hat 14.2.1-3)]
Мою первоначальную проблему с пандами можно найти по той же сути.
Моя основная проблема здесь в том, что в пандах исключение вызывается на разных этапах (to_excel и write.close), и во втором случае я даже не могу получить текст, вызвавший проблему.
Я даже подумал, что мне следует создать проблема с этим на странице github openpyxl. Я думаю, что он должен одинаково решать две проблемы с кодировкой символов, вызывая IllegalCharacterError. Имеет ли это смысл?

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-openpyxl
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»