【发布时间】:2015-03-17 09:22:05
【问题描述】:
我正在尝试使用 utf-8 编码将数据写入 Excel 工作表。 现在我得到以下带有完整回溯的错误-->
Traceback (most recent call last):
File "C:\Users\varun\Desktop\Python_testfiles\Reports Automation\Txn.py", line 142, in <module>
domesticsheet.write(row, j, txn[payuid][j])
File "C:\Python27\lib\site-packages\xlwt\Worksheet.py", line 1030, in write
self.row(r).write(c, label, style)
File "C:\Python27\lib\site-packages\xlwt\Row.py", line 240, in write
StrCell(self.__idx, col, style_index, self.__parent_wb.add_str(label))
File "C:\Python27\lib\site-packages\xlwt\Workbook.py", line 326, in add_str
return self.__sst.add_str(s)
File "C:\Python27\lib\site-packages\xlwt\BIFFRecords.py", line 24, in add_str
s = unicode(s, self.encoding)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x80 in position 11: invalid start byte
主要问题是我随机收到此错误。我运行了与前几天对应的数据的代码,它运行得很好。 我也尝试使用“utf-16”和“ascii”编码而不是 utf - 8,但错误仍然存在(但错误语句已更改。)
有什么办法可以摆脱这个错误吗?另外,我想知道为什么会出现这个错误(我是python的初学者)。任何帮助将不胜感激。是否需要提供一些编码类型?
如果需要看代码如下-->
filehandler[booknumber] = xlwt.Workbook(encoding = "utf-8")
domesticsheet = filehandler[booknumber].add_sheet("Domestic_txn" + `booknumber`, cell_overwrite_ok=True)
for k in range(len(header)):
domesticsheet.write(0,k,header[k]);
for j in range(len(txn[payuid])):
domesticsheet.write(row, j, txn[payuid][j])
【问题讨论】:
-
请发布完整的回溯。目前尚不清楚错误来自何处。
-
您的 UTF-8 输入数据无效 - 但尚不清楚您的数据来自哪里以及错误发生的确切位置。
-
@georg:请查看我刚刚提供的回溯。谢谢!
-
旁注:使用反引号 (`) 作为调用 repr() 函数的语法糖已经有一段时间了。甚至 repr() 在这里也是一个奇怪的选择,因为那是为了调试输出。你很幸运,手头的类型/值可以正常工作,而不是 str()。
标签: python python-2.7 export-to-excel