我收到了在另一台计算机上创建的 XLSX 文件,该文件无法使用 pandas.read_excel(filename,engine='openpyxl',sheet_name=None)
正确打开。有一个警告 Workbook contains no default style, apply openpyxl's default
,返回的对象是空数据框,只导入了第一个列名,每个工作表都有一个空索引。
然后我以如下方式直接使用了 openpyxl:
from openpyxl import load_workbook
wb = load_workbook(filename,read_only=True)
ws = wb['First Sheet']
for row in ws.rows:
for cell in row:
print(cell.value)
# first_col_header
ws.calculate_dimension(force=True)
# 'A1:A1'
print(ws['A1'].value)
# first_col_header
print(ws['B1'].value)
# second_col_header
print(ws['C1'].value)
# third_col_header
print(ws['A2'].value)
# first_val
print(ws['B2'].value)
# sec_val
print(ws['C2'].value)
# val_3
calculate_dimension()
仅拉入第一个单元格,但我能够从其他单元格获取值。
我正在考虑手动迭代以查找维度,但访问单元格似乎具有线性时间,查找速度会很慢:
%%time
ws['A1'].value # 5 ms
ws['A10'].value # 50 ms
ws['A100'].value # 250 ms
ws['A1000'].value # 2.3 s
ws['A10000'].value # 22 s
我发现的唯一解决方法是,如果我打开文件并自己保存,pandas 可以导入它。问题是我有很多文件,有些非常大,无法逐一手动保存。
有什么我可以做的事情吗?