You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现XLSX转CSV并保留公式计算值而非公式本身的方法咨询

解决方案

最优方案:从根源避免写入公式

你在合并两个表生成users.xlsx时,完全可以直接在Python中完成邮箱拼接逻辑,不要把Excel公式写入文件,后续转换不会有任何兼容性问题。示例代码如下:

import pandas as pd

# 假设df为合并两个表后得到的DataFrame,用户名列名为username,企业域名为@yourdomain.com
df['邮箱'] = df['username'] + '@yourdomain.com'

# 此时写入的邮箱就是纯文本数值,不存在公式
df.to_excel(combined_xlsx_2, index=False)

# 后续直接转csv即可
df.to_csv(combined_xlsx_2.replace('.xlsx', '.csv'), index=False, encoding='utf-8')

备选方案:直接计算已有文件的公式值

如果你无法修改生成users.xlsx的逻辑,可以用支持Excel公式计算的openpyxl库处理已有的带公式文件,操作步骤如下:

  1. 先安装依赖:
pip install openpyxl
  1. 转换代码:
import pandas as pd
from openpyxl import load_workbook

# 加载Excel文件
wb = load_workbook(combined_xlsx_2, data_only=False)
# 自动计算所有公式的结果
wb.calculate()
ws = wb.active

# 读取表格内容转为DataFrame,默认第一行为表头
data = list(ws.values)
df = pd.DataFrame(data[1:], columns=data[0])

# 导出为CSV
csv_path = combined_xlsx_2.replace('.xlsx', '.csv')
df.to_csv(csv_path, index=False, encoding='utf-8')

原方案失败原因说明

pandas、xlrd本身不内置Excel公式计算引擎,只能读取Excel文件中已经缓存的公式计算结果。你通过Python生成的users.xlsx没有被桌面版Excel打开过,不存在缓存的计算值,所以直接读取只能拿到空值或者公式本身,无法得到计算后的邮箱地址。

内容的提问来源于stack exchange,提问作者TheCrazySwede

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:48:02