我正在对两个工作簿进行汇总比较并输出第三个工作簿。我通过将每个工作簿(结构相同,包含15个工作表)导出到一系列csv文件,然后通过读取csv文件A及其相应命名的csv文件B进行表格到表格的比较来实现这一点。第二本工作簿。
我正在使用xlrd
和csv
这是代码失败的部分:
outpath_a = os.path.join(working_directory, "out_a") # dir set earlier
workbook_a_sheets = workbook_a.sheet_names()
workbook_b_sheets = workbook_b.sheet_names()
for a in workbook_a_sheets:
out_csv = os.path.join(outpath_a, a)
with open(out_csv, 'wb') as oca:
cw = csv.writer(oca, dialect=csv.excel, quoting=csv.QUOTE_ALL)
for rownum in xrange(a.nrows):
cw.writerow(a.row_values(rownum))
它给了我错误:
AttributeError: 'unicode' object has no attribute 'nrows'
我尝试使用unicodecsv
代替csv
(import unicodecsv as csv
),但错误是相同的。
答案 0 :(得分:0)
您正尝试访问工作表名称,就像它是工作表对象一样。
您需要在工作簿上调用sheet_by_name
方法才能获得它
固定循环:
for a in workbook_a_sheets:
out_csv = os.path.join(outpath_a, a)
with open(out_csv, 'wb') as oca:
cw = csv.writer(oca, dialect=csv.excel, quoting=csv.QUOTE_ALL)
# get sheet object from its name
a_sheet = workbook_a.sheet_by_name(a)
for rownum in xrange(a_sheet.nrows):
cw.writerow(a_sheet.row_values(rownum))