1

我正在处理带有两张表的 xlsx:第一张包含原始数据,第二张包含数据透视表。如果没有以纯文本形式获取数据表,我将无法修改数据表:我见过很多人有同样的问题,但我找不到可行的解决方案。

我正在使用 openpyxl 的 2.6.2 版本,根据文档(https://openpyxl.readthedocs.io/en/stable/pivot.html)应该保留数据透视表。

在我的代码下方,它可以在不保留枢轴的情况下工作。

sheet_name='Data'
book = load_workbook(local_path + 'file_name'+ '.xlsx')

wrs = book["my_pivot_table"]
pivot = wrs ._pivots[0]
pivot.cache.refreshOnLoad = True

writer = pd.ExcelWriter(local_path + 'file_name'+ '.xlsx', engine='openpyxl')

sh = book[sheet_name]
sh.delete_cols(1, 20)
writer.book = book
writer.sheets = dict((ws.title, ws) for ws in book.worksheets)

df_tb_exp.to_excel(writer, sheet_name=sheet_name, index=False)

writer.save()

谢谢

更新

我尝试不使用 Pandas 来读取和写入 xlsx,但不幸的是仍然有纯文本的数据透视表 - 此外,这段代码清空了数据表,但它没有用新数据填充它,我可能缺少 smtg ...

sheet_name='Data'
book = load_workbook(local_path + 'file_name'+ '.xlsx')

ws = book["my_pivot_table"]
pivot = ws._pivots[0]
pivot.cache.refreshOnLoad = True

sh = book[sheet_name]
sh.delete_cols(1, 20)

for r in dataframe_to_rows(df_tb_exp, index=False, header=True):
  sh.append(r)

book.save(local_path + 'file_name'+ '.xlsx')

谢谢!

4

0 回答 0