openpyxl 只读取第一个单元格

时间:2021-02-11 17:23:46

标签: python pandas openpyxl

我收到了在另一台计算机上创建的 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 可以导入它。问题是我有很多文件,有些非常大,无法逐一手动保存。

有什么我可以做的事情吗?

0 个答案:

没有答案