為幫助他人統計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 閱讀(509)
評論(0) 編輯 收藏 引用 所屬分類:
Python