在Excel 97-2003
XLS文件中,
latin1如果可能的话,将对每段文本进行编码,否则
UTF-16LE使用标记来显示。为此,xlwt需要一个
unipre对象。如果调用者提供了一个
str对象,则xlwt将尝试使用Workbook()调用中指定的编码对它进行解码(默认为
ascii)。
这有效;尝试运行以下简短脚本,然后使用Excel打开生成的文件。
import xlwtwb = xlwt.Workbook(encoding="UTF-8")uc = u"".join(unichr(0x0410 + i) for i in xrange(32)) # some Cyrillic charactersu8 = uc.enpre("UTF-8")ws = wb.add_sheet("demo")ws.write(0, 0, uc)ws.write(1, 0, u8)ws.write(2, 0, xlwt.Formula("A1=A2"))ws.write(3, 0, "ASCII is a subset of UTF-8")wb.save("xlwt_write_utf8.xls")
您得到编码错误而不是解码错误的事实表明脚本的文件输入部分可能存在问题。请提供最短的脚本,该脚本会导致您遇到错误。该脚本应该
printrepr(your_utf8_text)在失败语句之前包含类似内容,以便我们可以准确地看到文本数据是什么。请提供完整的错误消息和完整的追溯,以及
printrepr(contents)非常简短的输入文件的内容()。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)