我从DB中读取汉字数据,并通过xlwt将数据写入excel中。
代码如下:
ws0.write(0,0, unicode(cell, 'big5'))在Windows下可以,但在Linux下删除时,excel中的数据乱码了。
你能帮我解决一下吗?
发布于 2010-04-25 23:13:33
如果你发布了你实际运行的代码,那将会有所帮助。假设ws0是一个Worksheet对象,正确的语法是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字符串存储在文件中;它根据需要使用'latin1‘或'utf_16le’进行编码,并对下一个参数使用‘unicode_text.encode()’,而不是'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 ...这样,如果需要,你可以很容易地给我发送文件查看,当有新的帖子发布时,我会收到电子邮件,而不是必须每隔一段时间轮询网站……
https://stackoverflow.com/questions/2708530
复制相似问题