仅使用pandas能否向.xlsx文件写入Excel公式而不借助xlsxwriter等工具?
问题说明
你当前的实现是在pandas内存中完成求和计算,写入Excel的是计算后的静态数值,自然不会随其他列的修改自动更新,要实现联动效果必须写入Excel本身支持的公式语法。
核心结论
- 仅依赖pandas、完全不借助任何Excel读写第三方工具的前提下,无法实现写入Excel公式的需求。
- pandas本身没有原生的Excel文件解析与生成能力,你日常使用的
read_excel、to_excel方法,底层都是依赖xlrd、openpyxl、xlsxwriter这类第三方库实现的,脱离这些依赖pandas无法完成任何Excel相关的读写操作。
可行实现方案
如果接受搭配pandas官方默认支持的openpyxl引擎(大部分pandas环境已经预装该依赖,不需要额外安装陌生工具),可以按如下代码实现公式写入:
import pandas as pd from openpyxl import load_workbook # 读取原始数据 df = pd.read_excel("excel-comp-data.xlsx") # 先将基础数据导出到目标文件,index=False避免生成多余的索引列 df.to_excel("excel-comp-data-formula-by-pandas.xlsx", index=False) # 加载生成的Excel文件写入公式 wb = load_workbook("excel-comp-data-formula-by-pandas.xlsx") ws = wb.active # 此处假设表头行是第1行,Jan、Feb、Mar分别对应B、C、D列,total是E列,数据从第2行开始 for row_num in range(2, ws.max_row + 1): ws[f"E{row_num}"] = f"=SUM(B{row_num}:D{row_num})" # 保存修改后的文件 wb.save("excel-comp-data-formula-by-pandas.xlsx")
生成的文件在LibreOffice Calc或微软Excel中打开时,修改Jan/Feb/Mar列的数值,total列的结果会自动同步更新。
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

