我正在处理带有两张表的 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')
谢谢!