import os, sys
from xlrd import open_workbook
from xlutils.copy import copy
from xlwt import easyxf, Style
import time
rb = open_workbook('A1.xls', on_demand=True,formatting_info =True)
rs = rb.sheet_by_index(0)
wb = copy(rb)
ws = wb.get_sheet(0)
start =time.time()
g1 = dict()
for row in range(1,rs.nrows):
for cell in row:
cellContent = str(cell.value)
if cellContent not in g1.keys():
g1[cellContent]=1
else:
g1[cellContent]=g1[cellContent]+1
for cellContent in g1.keys():
print cellContent, g1[cellContent]
ws.write(row,1, cellContent)
wb.save('A2.xls')
当我运行此代码时,我收到错误消息cell
对象无法迭代
什么可能出错?
答案 0 :(得分:0)
你遇到的问题是row
是一个整数,因为它使用for row in range(1, rs.nrows):
填充range()
函数returns an integer - 在你的情况下,我认为是每个行号介于1和电子表格中的行数之间。
我不熟悉xlrd
,xlutils
和xlwt
模块的工作原理,但我想你想做更多类似的事情:
for row_number in range(1, rs.nrows):
row = rs.row(row_number)
for cell in row:
....
Sheet.row(rowx)
方法为您提供了一系列Cell
个对象,您可以在内循环中进行迭代。
答案 1 :(得分:0)
我不熟悉xlrd
或任何其他模块,但使用csv或excel电子表格做任何工作,我使用Pandas,特别是这个link。它允许您轻松阅读和进行各种修改,然后也很容易写出来。如果您想要的只是复制它将非常容易。