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

如何将Excel带格式列复制到Word?已尝试pandas+python-docx未保留格式

解决Excel转Word表格保留格式的问题

你的问题核心在于pandas仅读取Excel的纯数据,不包含任何格式信息,而且python-docx的cell.text方法只能设置纯文本内容,自然无法保留原格式。下面提供两种可行的解决办法:

方法一:用win32com模拟手动复制粘贴(最省心,完美保留格式)

这个方法直接调用Office的COM接口,就像你手动打开Excel复制单元格、粘贴到Word里一样,能完整保留所有格式(字体、颜色、对齐、边框、单元格背景等)。

先安装依赖:

pip install pywin32

示例代码:

import win32com.client as win32

# 启动Excel和Word应用
excel = win32.gencache.EnsureDispatch('Excel.Application')
word = win32.gencache.EnsureDispatch('Word.Application')

# 打开目标文件(替换成你的文件路径)
wb = excel.Workbooks.Open(r'C:\你的路径\file_excel.xlsx')
ws = wb.Worksheets('Sheet1')  # 替换成你的工作表名称
doc = word.Documents.Open(r'C:\你的路径\file_word.docx')

# 复制Excel中的目标区域(这里以A1:B2为例,按需修改)
ws.Range('A1:B2').Copy()

# 粘贴到Word的第一个表格的起始位置(Word索引从1开始)
doc.Tables(1).Cell(1, 1).Range.Paste()

# 保存并关闭文件,退出应用
doc.Save()
doc.Close()
wb.Close()
excel.Quit()
word.Quit()

方法二:用openpyxl读取格式,再用python-docx手动设置(适合轻量格式场景)

如果不想依赖Office客户端,可以用openpyxl读取Excel单元格的格式,再逐个映射到Word单元格中。这种方法需要自己处理格式映射,适合格式不复杂的场景。

先安装依赖:

pip install openpyxl python-docx

示例代码(以字体、对齐方式为例):

from openpyxl import load_workbook
from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

# 读取Excel和Word文件
wb = load_workbook('file_excel.xlsx')
ws = wb.active
doc = Document('file_word.docx')
table = doc.tables[0]

# 遍历单元格,复制内容和基础格式
for row_idx in range(2):  # 对应原代码中的A1:B2区域
    for col_idx in range(2):
        # 获取Excel单元格(openpyxl索引从1开始)
        excel_cell = ws.cell(row=row_idx+1, column=col_idx+1)
        # 获取Word单元格
        word_cell = table.cell(row_idx, col_idx)
        
        # 设置文本内容
        word_cell.text = str(excel_cell.value) if excel_cell.value else ""
        
        # 映射字体格式
        word_font = word_cell.paragraphs[0].runs[0].font
        excel_font = excel_cell.font
        word_font.name = excel_font.name
        word_font.size = Pt(excel_font.size) if excel_font.size else None
        word_font.bold = excel_font.bold
        word_font.italic = excel_font.italic
        if excel_font.color and excel_font.color.rgb:
            word_font.color.rgb = excel_font.color.rgb
        
        # 映射对齐方式
        align_map = {
            'center': WD_PARAGRAPH_ALIGNMENT.CENTER,
            'left': WD_PARAGRAPH_ALIGNMENT.LEFT,
            'right': WD_PARAGRAPH_ALIGNMENT.RIGHT,
        }
        excel_align = excel_cell.alignment.horizontal if excel_cell.alignment else 'left'
        word_cell.paragraphs[0].alignment = align_map.get(excel_align, WD_PARAGRAPH_ALIGNMENT.LEFT)

# 保存修改后的Word文件
doc.save('file_word.docx')

注意:第二种方法仅覆盖了基础格式,像单元格背景色、边框等复杂格式还需要额外编写代码处理。如果需要完整保留所有格式,优先选择第一种方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:10:04