为帮助他人统计excel中的数据,我用python写了一个读写excel文件的脚本。
虽然最终功能实现了但是速度却很慢,处理一个7列,4K行数据的excel文件用了3分钟左右的时间,后来了解到是我把接口用错了。
脚本在读取excel文件时是以 行 为单位读取的,而我在实现读取整行时是一个单元格一个单元格的读取,然后将这些单元格在拼成一行,如下面代码:
ValidRowCount = self.m_xlsSheet.UsedRange.Rows.Count
ValidColCount = self.m_xlsSheet.UsedRange.Columns.Count
indexRow = 1
while (indexRow <= ValidRowCount):
indexCol = 1;
rowData = [];
while indexCol <= ValidColCount:
val = self.m_xlsSheet.Cells(indexRow , indexCol).Value
if val:
rowData.append(val)
else:
rowData.append('')
indexCol += 1;
后来了解到可以
通过Sheets.Range 一次性读取一个区域的数据,于是代码改成了:
while (indexRow <= ValidRowCount):
indexCol = 1;
rowData = [];
first = self.m_xlsSheet.Cells(indexRow , 1);
end = self.m_xlsSheet.Cells(indexRow , ValidColCount);
rowDatas = list(self.m_xlsSheet.Range(first , end).Value)
indexCol += 1
用修改后的再测了下,同样的文件只用了50秒左右,比原先的省了2/3的时间。
后来又增加了每次的读取亮,速度又快了不少。
posted on 2012-10-28 18:15
zhaoyg 阅读(487)
评论(0) 编辑 收藏 引用 所属分类:
Python