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

如何用xlsxwriter/xlrd复制Excel列绝对数值而非公式?

如何复制Excel公式计算后的绝对数值到新文件?

这个问题我之前也碰到过,核心原因是xlsxwriter写入的公式在文件里存储的是公式字符串,而非计算后的数值,直接复制自然会把公式带过去。下面给你两种可行的解决方案,亲测有效:

方法一:用openpyxl读取计算值 + xlsxwriter写入(推荐,跨平台)

openpyxl可以直接读取公式计算后的结果,不管文件有没有被Excel打开过,步骤如下:

  1. 先安装openpyxl(如果还没装):
pip install openpyxl
  1. 读取文件A的计算后数值:
from openpyxl import load_workbook

# 加载文件A,这里不用data_only=True,因为如果文件是刚生成的,可能没存储计算值
wb_source = load_workbook("文件A.xlsx")
ws_source = wb_source.active  # 或者指定工作表名,比如ws_source = wb_source["Sheet1"]

# 强制计算所有公式(关键!如果文件没被Excel打开过,必须这一步)
wb_source.calculate()

# 提取所有行的数值
data = []
for row in ws_source.iter_rows(values_only=True):
    data.append(row)
  1. 用xlsxwriter写入目标文件:
import xlsxwriter

# 创建目标工作簿和工作表
wb_target = xlsxwriter.Workbook("目标文件.xlsx")
ws_target = wb_target.add_worksheet()

# 逐行写入数据
for row_idx, row_data in enumerate(data):
    ws_target.write_row(row_idx, 0, row_data)

# 关闭工作簿,完成写入
wb_target.close()

如果你的文件A已经被Excel打开并保存过,里面已经存储了公式的计算结果,那可以把load_workbook的参数改成data_only=True,这样就不需要调用calculate(),直接读取存储的数值即可,效率更高。

方法二:Windows平台专属——用win32com调用Excel程序计算

如果你是在Windows环境下,也可以直接调用本地的Excel程序来计算公式并读取数值,这种方式最接近手动操作Excel的效果:

import win32com.client as win32
import xlsxwriter

# 启动Excel程序(后台运行,不显示界面)
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = False

# 打开文件A
wb_source = excel.Workbooks.Open(r"C:\路径\文件A.xlsx")
ws_source = wb_source.Worksheets("Sheet1")  # 指定工作表

# 获取数据范围(假设数据从A1开始,到最后一行最后一列)
used_range = ws_source.UsedRange
data = []
for row in used_range.Rows:
    row_data = [cell.Value for cell in row]
    data.append(row_data)

# 关闭文件,退出Excel
wb_source.Close(SaveChanges=False)
excel.Quit()

# 写入目标文件(和方法一的写入步骤一致)
wb_target = xlsxwriter.Workbook("目标文件.xlsx")
ws_target = wb_target.add_worksheet()
for row_idx, row_data in enumerate(data):
    ws_target.write_row(row_idx, 0, row_data)
wb_target.close()

注意事项

  • 用xlsxwriter生成的文件,默认不会存储公式的计算结果,所以如果直接用xlrd读取,拿到的只会是公式字符串,这也是你之前复制公式的原因——xlrd不支持计算公式,只能读取存储的内容。
  • 如果必须用xlrd,那只能处理xls格式的文件,而且需要配合其他工具触发公式计算,不如openpyxl方便。

内容的提问来源于stack exchange,提问作者Nathaniel Ng Li Wen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:57:37