私は年の各月のデータを含む別々のスプレッドシートを持っています - 合計12スプレッドシート。各ワークブックには200k〜500k行が含まれています。openpyxlスプレッドシートを整理する
1月
| name | course | grade |
|-------|---------|-------|
| dave | math | 90 |
| chris | math | 80 |
| dave | english | 75 |
2月
| name | course | grade |
|-------|---------|-------|
| dave | science | 72 |
| chris | art | 58 |
| dave | music | 62 |
私は、毎月のブックを開く各行を反復処理し、各セルや個人ブックに関連するデータを書き込むことopenpyxlを使用しています。つまり、Chrisに属するすべての行は「Chris.xlsx」になり、Daveに属する行は「Dave.xlsx」に移動します。
私が遭遇している問題は、openpyxlがであり、極端にが遅いということです。私はそれが私のコードが非常に手続き的であり、反復と文章を最適化していないためだと確信しています。
ご意見は大変ありがとうございます。
def appendToWorkbooks():
print("Appending workbooks")
je_dump_path = "C:/test/"
# define list of files in path
je_dump_files = os.listdir(je_dump_path)
# define path for resultant files
results_path = "C:/test/output/"
max_row = 0
input_row = 1
for file in je_dump_files:
current_row = 1
# load each workbook in the directory
load_file = je_dump_path + file
print("Loading workbook: " + file)
wb = load_workbook(filename=load_file, read_only=True)
print("Loaded workbook: " + file)
# select the worksheet with the name Sheet in each workbook
ws = wb['Sheet']
print("Loaded worksheet")
# iterate through the rows in the currently open workbook
for row in ws.iter_rows():
# determine the person this row of data relates to
person = ws.cell(row=current_row, column=1).value
# set output workbook to that person
output_wb_file = results_path + person + ".xlsx"
output_wb = load_workbook(output_wb_file)
output_ws = output_wb["Sheet"]
# increment the current row
current_row = current_row + 1
print("Currently on row: " + str(current_row))
# determine the last row in the current output workbook
max_row = output_ws.max_row
# set the output row to the row after the last row in the current output workbook
output_row = max_row + 1
for cell in row:
output_ws.cell(row=output_row, column=column_index_from_string(cell.column)).value = cell.value
output_wb.save(output_wb_file)
あなたはhttp://stackoverflow.com/questions/35823835/reading-excel-file-is-magnitudes-slower-using-openpyxl-compared-to-に同様のポストを支援していたマイク・ミュラーソー@ xlrd – stutch