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

如何用Python仅复制Excel单元格文本并保留目标文件格式?

解决方案

你的代码核心逻辑没问题,但存在两个关键问题:一是工作表名称拼写错误(Vcdorlage应为Vorlage),二是路径转义可能引发异常。另外,我们可以优化代码以更高效地仅复制单元格内容,同时确保目标文件格式完全保留。

修正并优化后的代码

import openpyxl as xl

# 使用原始字符串避免路径转义问题,或改用双反斜杠
path1 = r'.\Test_files\monats.xlsx'
path2 = r'.\Test_files\Vorlage.xlsx'

# 加载源文件时指定data_only=True,读取单元格计算后的值而非公式
wb1 = xl.load_workbook(filename=path1, data_only=True)
ws1 = wb1.worksheets[0]

wb2 = xl.load_workbook(filename=path2)
# 修正工作表名称拼写错误,与目标文件内的工作表名匹配
ws2 = wb2['Vorlage']

# 仅遍历源工作表中有数据的单元格范围,减少不必要的操作
for row in ws1.iter_rows(min_row=1, max_row=ws1.max_row, min_col=1, max_col=ws1.max_column):
    for cell in row:
        # 仅赋值单元格内容,不触碰任何格式属性
        ws2[cell.coordinate].value = cell.value

wb2.save(path2)

关键说明

  1. 格式保留机制:openpyxl中仅修改单元格的value属性,不会改变其原有样式(字体、颜色、对齐方式、数字格式等),目标文件的格式会完整保留。
  2. 路径处理:用原始字符串r''包裹路径,避免\T这类转义字符引发的路径解析错误。
  3. 数据读取优化:data_only=True确保读取的是单元格最终计算结果,而非公式本身,适合纯内容复制场景。
  4. 范围限定:通过iter_rows指定有效数据范围,避免遍历大量空单元格,提升代码运行效率。

如果仍出现格式异常,大概率是源单元格数据类型与目标单元格格式的正常兼容表现(比如目标单元格是日期格式,源单元格是数字,赋值后会按日期格式显示),并非格式被修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 13:18:13