我正在用python3.6编写一个小程序,它读取excel文件,然后修改单元格的格式。我想在同一单元格内使用多种格式,所以我将xlwt
与{
import xlrd
import xlwt
from xlutils.copy import copy
col = 0
row = 0
rb = xlrd.open_workbook('test.xls', formatting_info=True)
r_sheet = rb.sheet_by_index(0)
text_cell = r_sheet.cell_value(row, col)
book = copy(rb)
first_sheet = book.get_sheet(0)
font1 = xlwt.easyfont('struck_out true, color_index red')
font2 = xlwt.easyfont('color_index green')
seg1 = (text_cell[0:10], font1)
seg2 = (text_cell[10:], font2)
first_sheet.write_rich_text(row, col, [seg1, seg2])
book.save('test.xls')
直到写到excel文件为止,一切都很好,但是在保存工作簿时,我得到了一个错误TypeError: must be str, not bytes
。在
完全错误:
^{pr2}$我一直在寻找这个问题的解决方案,但那里的答案似乎无法解决我的问题:
xlwt book.save TypeError: must be str, not bytes
Python code, not able to write into xls
然后我发现这个问题可能与Python3和Python2中处理字符串的方式有关,我可能在某个地方得到了一个导致错误的字节字符串。在
我看了text_cell
的类型,是str
,我试着在seg1
和seg2
中修改字体,但还是没用。
最后,我在Python2.7上运行了同样的脚本,它成功了!在
坏消息是,我需要代码在python3中工作,因为运行它的服务器只有python3,无法更改。在
有人知道是什么导致了这个问题吗?在
显然这是xlwt上个月修复的一个已知问题!我更新了这个软件包,现在它就像一个魔咒。在
https://github.com/python-excel/xlwt/issues/89
一年多后我也有同样的问题 使用faker的
(fake.address().split('\n'))[1].split(',')
作为输入,当您试图将一个列表(在我的例子中是两个字符串的列表)输入到一个单元格中时,似乎也会发生此错误。在试着把它们分开,在我的例子中,以下方法应该有效:
为了更通用,如果发生这种情况,请尝试连接字符串。
相关问题 更多 >
编程相关推荐