使用xlwt写入现有工作簿
我找不到关于如何用xlwt写入已有文件的例子。我有一个已经存在的xls文件,我需要往里面写东西。当我用xlrd读取这个文件时,我不知道怎么把返回的“Book”类型转换成xlwt.Workbook。我希望有人能给我指个例子。
5 个回答
9
这个代码示例就是这样的:
from xlutils.copy import copy
from xlrd import *
w = copy(open_workbook('book1.xls'))
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')
你需要创建一个名为 book1.xls 的文件来测试,不过你大概明白意思了。
24
你需要用到 xlutils.copy
。可以试试下面这样的代码:
from xlutils.copy import copy
w = copy('book1.xls')
w.get_sheet(0).write(0,0,"foo")
w.save('book2.xls')
请记住,默认情况下你不能直接覆盖单元格,具体可以参考 这个问题。
266
这里有一些我最近用来做这个的示例代码。
这段代码打开一个工作簿,然后逐行查看。如果满足某个条件,它就会在这一行写入一些数据。最后,它会保存修改过的文件。
from xlutils.copy import copy # http://pypi.python.org/pypi/xlutils
from xlrd import open_workbook # http://pypi.python.org/pypi/xlrd
START_ROW = 297 # 0 based (subtract 1 from excel row number)
col_age_november = 1
col_summer1 = 2
col_fall1 = 3
rb = open_workbook(file_path,formatting_info=True)
r_sheet = rb.sheet_by_index(0) # read only copy to introspect the file
wb = copy(rb) # a writable copy (I can't read values out of this, only write to it)
w_sheet = wb.get_sheet(0) # the sheet to write to within the writable copy
for row_index in range(START_ROW, r_sheet.nrows):
age_nov = r_sheet.cell(row_index, col_age_november).value
if age_nov == 3:
#If 3, then Combo I 3-4 year old for both summer1 and fall1
w_sheet.write(row_index, col_summer1, 'Combo I 3-4 year old')
w_sheet.write(row_index, col_fall1, 'Combo I 3-4 year old')
wb.save(file_path + '.out' + os.path.splitext(file_path)[-1])