openpyxlで大きなエクセルファイルを読み込んだり、load_workbook()でread_onlyパラメータを読み込んだりすることについてここでかなりの質問がありました。 50x30ですが、30x1100枚のブックでそれをやろうとすると、それは失速します。今は、Excelを読み込んで多次元配列に変換するだけです。openpyxlでread_onlyを使ってexcelで300kのセルを読むのが不十分です
from openpyxl import Workbook
from openpyxl import load_workbook
def transferCols(refws,mx,refCol,newCol,header):
rmax = refws.max_row
for r in range(1, rmax+1):
if (r == 1):
mx[r-1][newCol-1] = header
else:
mx[r-1][newCol-1] = refws.cell(row = r, column = refCol).value
return
ref_wb = load_workbook("UESfull.xlsx", read_only= True)
ref_ws = ref_wb.active
rmax = ref_ws.max_row
matrix = [["fill" for col in range(30)] for row in range(rmax)]
print("step ", 1)
transferCols(ref_ws,matrix,1,1,"URL")
...
私は唯一の進行状況を追跡するために、印刷(「ステップ」)の行を置くが、驚くべきことに、ステップ1で失速!私は構造が貧弱か300k細胞がopenpyxlにはあまりにも多いかどうかは分かりません。私はまだ私のput excelに書くことを始めたhaventまだ!前もって感謝します!
それはまた、あなたが[基本的な読み取り専用の例]を使用する場合、何も印刷に失敗ん( docsからhttps://openpyxl.readthedocs.org/en/default/optimized.html)をダウンロードしますか?それが単純な2Dシートだったのならば、私はMicrosoft OfficeにCSVとして保存し、Pythonでそれを1行ずつ読むことになるだろう – jDo
読んだ後にデータをどうしたいのですか?あなたは 'pandas' – Abbas
こんにちは@Abbasのソリューションを持っているかもしれません。私は本当にここにこだわっている。私は、大きな2DのExcelシートを読み込み、すべてのエントリが一様なフォーマットになるようにデータを消去し、それを保存する必要があります。シンプルだけどリソース集約的ですか?後続のコードはtransferCols()の複数の呼び出しです。 Excelを読み込んでローカルの2Dマトリックスに保存すると思ったのですが、編集する前にそれをExcelに書き込むほうが速いでしょう。 – Philong