Python 3 xlwt保存工作B

2024-10-03 02:44:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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,我试着在seg1seg2中修改字体,但还是没用。 最后,我在Python2.7上运行了同样的脚本,它成功了!在

坏消息是,我需要代码在python3中工作,因为运行它的服务器只有python3,无法更改。在

有人知道是什么导致了这个问题吗?在


Tags: textimportindex错误cellcolxlssheet
2条回答

显然这是xlwt上个月修复的一个已知问题!我更新了这个软件包,现在它就像一个魔咒。在

https://github.com/python-excel/xlwt/issues/89

一年多后我也有同样的问题 使用faker的(fake.address().split('\n'))[1].split(',')作为输入,当您试图将一个列表(在我的例子中是两个字符串的列表)输入到一个单元格中时,似乎也会发生此错误。在

试着把它们分开,在我的例子中,以下方法应该有效:

temp =(fake.address().split('\n'))[1].split(',')
input = temp[0] + temp[1]
sheet.write(0, 0, input)

为了更通用,如果发生这种情况,请尝试连接字符串。

相关问题 更多 >