[問題] openpyxl處理大型xlsx檔案的問題

看板Python作者 (Nate)時間4年前 (2019/07/15 16:55), 編輯推噓0(004)
留言4則, 3人參與, 4年前最新討論串1/1
最近寫了一段程式處理EXCEL檔 主要是比對檔案中第一個資料表的第7欄中如果含有「字串」這個字串 就把整個資料列刪除,目前跑起來在500個資料列以下的檔案都算順暢 但是如果跑10000列以上的xlsx檔,效能顯得非常的差 有時候得跑幾個小時才會出來,請問各位有沒有可以提高效能的寫法 感謝!! 程式碼如下: from openpyxl import load_workbook import time start = time.time() wb = load_workbook(filename = 'test.xlsx') a=wb.get_sheet_names()[0] sheet_ranges = wb[a] row=sheet_ranges.max_row for i in range(1,row): print(i) a="字串" if row == sheet_ranges.max_row: for arow in range(1,int(row)): b=str(sheet_ranges.cell(row=int(arow),column=7).value) if b.find(a)>=0: sheet_ranges.delete_rows(arow) wb.save('test.xlsx') else: continue else: rowa=sheet_ranges.max_row for arow in range(1,int(rowa)): b=str(sheet_ranges.cell(row=int(arow),column=7).value) if b.find(a)>=0: sheet_ranges.delete_rows(arow) wb.save('test.xlsx') else: continue print('執行結束') end = time.time() elapsed = end - start print ("程式運行了:", elapsed, "秒") -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.137.116.1 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1563180923.A.2D4.html

07/15 17:02, 4年前 , 1F
直接操作既有的 xlsx 檔案本來開銷就高。如果我是你,我會
07/15 17:02, 1F

07/15 17:03, 4年前 , 2F
讀取存入一個 2D array 進行操作,操作完再寫入新檔
07/15 17:03, 2F

07/15 17:50, 4年前 , 3F
不要每刪一行就存一次 ...
07/15 17:50, 3F

07/15 21:20, 4年前 , 4F
感謝樓上們,尤其3樓提醒後效能好很多,感恩!!
07/15 21:20, 4F
文章代碼(AID): #1TB3zxBK (Python)