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

如何在python-docx中生成可在Word内编辑的MS Charts?

可行解决办法

1. 直接通过COM接口操控Word生成原生可编辑图表

Windows环境下可以用pywin32库调用Word的COM对象,直接在Word里创建原生图表,这种图表完全支持Word内编辑。

安装依赖:

pip install pywin32

示例代码:

import win32com.client as win32

# 启动Word应用
word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = True  # 显示Word窗口,方便查看
doc = word.Documents.Add()

# 添加段落
doc.Paragraphs.Add().Range.Text = "销售数据图表"

# 在指定位置插入柱状图
chart_range = doc.Range()
chart = doc.Shapes.AddChart(251, Left=100, Top=100, Width=400, Height=300).Chart
# 设置图表数据(模拟数据)
data = [
    ["产品", "Q1", "Q2", "Q3"],
    ["A", 120, 150, 180],
    ["B", 90, 110, 130],
    ["C", 80, 100, 140]
]
# 填充数据到图表的数据源
workbook = chart.ChartData.Workbook
worksheet = workbook.Worksheets(1)
worksheet.Range("A1:D4").Value = data
workbook.Application.Quit()  # 关闭Excel数据源窗口

# 保存文档
doc.SaveAs("带可编辑图表的报告.docx")
# 关闭Word(可选)
# word.Quit()

这种方式生成的图表是Word原生支持的,完全可以双击进入编辑模式修改数据、样式。

2. 先在Excel生成可编辑图表,再嵌入到Word

可以用openpyxl或xlsxwriter生成带图表的Excel文件,再通过pywin32将Excel图表嵌入到Word中,嵌入后的图表支持在Word内编辑数据和样式。

步骤1:用openpyxl生成带图表的Excel

from openpyxl import Workbook
from openpyxl.chart import BarChart, Reference

wb = Workbook()
ws = wb.active

# 写入数据
ws.append(["产品", "Q1", "Q2", "Q3"])
ws.append(["A", 120, 150, 180])
ws.append(["B", 90, 110, 130])
ws.append(["C", 80, 100, 140])

# 创建柱状图
chart = BarChart()
data = Reference(ws, min_col=2, max_col=4, min_row=1, max_row=4)
categories = Reference(ws, min_col=1, min_row=2, max_row=4)
chart.add_data(data, titles_from_data=True)
chart.set_categories(categories)
chart.title = "季度销售数据"

# 添加图表到工作表
ws.add_chart(chart, "F1")
wb.save("销售数据.xlsx")

步骤2:用pywin32将Excel图表嵌入到Word

import win32com.client as win32

word = win32.gencache.EnsureDispatch('Word.Application')
word.Visible = True
doc = word.Documents.Add()

doc.Paragraphs.Add().Range.Text = "嵌入的Excel可编辑图表"

# 插入Excel图表作为OLE对象
ole_obj = doc.InlineShapes.AddOLEObject(
    ClassType="Excel.Chart.16",
    FileName="销售数据.xlsx",
    LinkToFile=False,  # 设为True则链接到原Excel,修改原文件会同步Word
    DisplayAsIcon=False
)

doc.SaveAs("嵌入Excel图表的报告.docx")

嵌入后的图表双击即可进入Excel编辑界面,修改后直接同步到Word。

3. 使用python-pptx生成PPT图表,再复制到Word(或直接转Word)

python-pptx支持生成PPT里的可编辑图表,你可以先在PPT里创建图表,再通过COM接口将PPT中的图表复制粘贴到Word,或者将PPT另存为Word格式(部分格式可能略有变动,但图表保持可编辑)。

示例代码(生成PPT图表):

from pptx import Presentation
from pptx.chart.data import CategoryChartData
from pptx.enum.chart import XL_CHART_TYPE

prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[5])  # 空白布局

# 创建图表数据
chart_data = CategoryChartData()
chart_data.categories = ["Q1", "Q2", "Q3"]
chart_data.add_series("产品A", (120, 150, 180))
chart_data.add_series("产品B", (90, 110, 130))
chart_data.add_series("产品C", (80, 100, 140))

# 添加柱状图到幻灯片
x, y, cx, cy = 100, 100, 400, 300
slide.shapes.add_chart(
    XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)

prs.save("带图表的演示.pptx")

之后可以手动复制PPT里的图表到Word,或者用pywin32自动完成复制粘贴操作,生成的图表在Word中依然可编辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:38:10