xlwt数据乱码

时间:2010-04-25 14:25:30

标签: python xlwt

我从DB中检索汉字数据,然后用xlwt,
将数据写入excel 代码如下:

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

在Windows下可以,但是当我在Linux下部署它时,excel中的数据会出现乱码,
你可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

如果您发布了实际运行的代码,那将会有所帮助。假设ws0Worksheet个对象,正确的语法为ws0.write(row_index, column_index, unicode_text)

cell引用什么,以及如何从数据库中提取它?

“excel中的数据乱码”是什么意思?您在Linux上使用什么来查看XLS文件的内容?你在屏幕上看到了什么?你能用其他软件在Linux上正确显示汉字吗?

尝试在Linux上的Python交互式提示符下输入:

>>> 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')

然后尝试使用OpenOffice Calc打开XLS文件...你看到了什么?

<强>更新

(1)“您运行的代码”必须超过1行;请出示。

(2)请运行我给你的一小段代码,并报告结果。如果可行,我们可以专注于如何从数据库中获取数据[请回答这个问题]

(3)请回答有关在Linux下显示中文的问题。

(4)考虑看“???”而不是中文(或其他)字符通常是unicode_text.encode('some_encoding', 'replace')(或具有相同意图的其他代码)具有不适当编码的结果(例如,'ascii') - 可能之前是类似的 de 代码。 xlwt执行unicode_text.encode()将unicode字符串存储在文件中;它使用编码所需的'latin1'或'utf_16le',以及下一个arg的'strict',而不是'replace'。如果Excel显示“???”,则在将数据提供给xlwt之前,数据可能已经出现乱码。 print repr(cell)告诉你什么?

(5)如果你使用相同的输入数据和相同的Python脚本运行相同版本的xlwt和Python,那么Linux的输出文件应该相同逐字节输出来自Windows的文件。 xlwt和Python版本的差异不太可能使文件不同。请使用二进制比较(例如,Windows“命令提示符”窗口中的fc /b ...)比较我给你的短脚本产生的文件。请说明您在每个环境中使用的Python和xlwt的版本。

(6)请考虑切换到the usual forum for xlwt questions ...这样你就可以轻松地发送文件给我看看,如果有必要,我会在发布新帖子时收到电子邮件,而不是必须每隔一段时间浏览一个网站......