我正在尝试此代码,因为它可以使用打开的 Excel 工作簿读取数据。
import xlwings as xw
xlsfile = r'C:\Users\matth\OneDrive\Dokumente\20241023-1904097928-umsatz.xlsx'
workbook = xw.Book(xlsfile)
ws = workbook.sheets[4]
tbl = ws.api.ListObjects(1) # or .ListObjects(1)
rng = ws.range(tbl.range.address) # get range from table address
df = rng.options(pd.DataFrame, header=True).value # load range to dataframe
此代码现在运行了 10 分钟,消耗了超过 1 GB 的内存。 Excel 被冻结。要加载的表包含大约 2500 行。数据不多,应该可以在 < 1s.
中加载出了什么问题?
您的代码可能会挂在“rng”选择上,这是不必要的。
试试这个;
注意
ws.tables[0].name
将从范围中排除表格标题。 ws.tables[0].range
将包括整个表格和标题。
import xlwings as xw
import pandas as pd
xlsfile = r'C:\Users\matth\OneDrive\Dokumente\20241023-1904097928-umsatz.xlsx'
workbook = xw.Book(xlsfile)
ws = workbook.sheets[4]
### Create Dataframe
df = ws.range(ws.tables[0].name).options(pd.DataFrame, index=False, header=1).value
df = ws.range(ws.tables[0].range).options(pd.DataFrame, index=False, header=1).value
print(df)