Данные xlwt искажен

голоса
0

Я извлечь данные китайских иероглифов из БД и записывать данные в Excel с помощью xlwt,
кода , как показано ниже:

ws0.write(0,0, unicode(cell, 'big5'))

Это нормально , под Windows, но когда я deloyed под Linux, данные в Excel искажаются,
могли бы вы помочь с этим делать?

Задан 25/04/2010 в 13:25
источник пользователем
На других языках...                            


1 ответов

голоса
0

Это поможет , если вы разместили код , который вы на самом деле бежал. Предполагая , что ws0является Worksheetобъектом, правильный синтаксис ws0.write(row_index, column_index, unicode_text).

Что cellотноситься, и как вы извлечь его из какой базы данных?

Что означает «данные в Excel искаженный» означает? Что вы используете на Linux, чтобы просмотреть содержимое файла XLS? Что вы на самом деле видите на экране? Вы можете получить китайские символы отображаются должным образом на Linux с другими программами?

Попробуйте ввести это в интерактивном режиме Python на Linux:

>>> import xlwt
>>> b = xlwt.Workbook()
>>> s = b.add_sheet('zh')
>>> big5_text = '\xa7A\xa6n\xa1I'
>>> u_text = big5_text.decode('big5')
>>> s.write(0, 0, u_text)
>>> b.save('nihao.xls')

Затем попробуйте открыть файл XLS с OpenOffice Calc ... Что вы видите?

Обновить

(1) «Код, который вы запускали» должен быть более чем на 1 линию; пожалуйста, покажите это.

(2) Пожалуйста, запустите небольшой кусок кода, который я дал вам, и сообщить о результатах. Если это работает, мы можем сосредоточиться на вещах, как, как вы получаете то, что данные из базы данных, что [Пожалуйста, ответьте на этот вопрос тоже]

(3) Пожалуйста, ответьте на вопрос о отображая китаец под Linux.

(4) Рассмотрим , что видящими "???" вместо китайского (или любой другой ) символов, как правило , является результатом unicode_text.encode('some_encoding', 'replace')(или другого кода с тем же намерением) с несоответствующей кодирования (например, «ASCii») - возможно , предшествовал аналогичный де кодом. xlwt делает unicode_text.encode()для хранения Юникода строки в файле; он использует «latin1» или «utf_16le» , как это требуется для кодирования и «строгий», не «заменить», на следующий арг. Если Excel показывает вам «???», вполне вероятно , что данные уже искажен , прежде чем кормить его xlwt. Что print repr(cell)вам сказать?

(5) Если вы запускаете одни и те же версии xlwt и Python с теми же входными данными и тем же сценарием Python, выходной файл с Linux должен быть идентичными байты-в-байт с выходным файлом из Windows. Различия в xlwt и версиях Python весьма маловероятно , чтобы эти файлы отличаются. Пожалуйста , сравните файлы , которые являются результатом короткого сценария , который я дал вам, с помощью двоичного сравнения (например, fc /b ...в окне Windows , «командной строки»). Пожалуйста , укажите версии Python и xlwt , которые вы используете в каждой среде.

(6) Пожалуйста , рассмотреть вопрос о переходе к обычному форуму для xlwt вопросов ... Таким образом вы можете легко отправить мне файлы , чтобы посмотреть, если это необходимо, и я получаю по электронной почте , когда новая проводка, вместо того, чтобы опрашивать сайт с интервалами ...

Ответил 25/04/2010 в 14:13
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more