如何生成带有嵌入图表的Excel电子表格?

2 投票
2 回答
2113 浏览
提问于 2025-04-17 08:08

我想用Python在Mac上创建带有嵌入图表的Excel表格。如果这做不到,我希望能在Mac上用某种Excel自动化的方法来实现。如果还是不行,我愿意在Windows上通过COM来操作Excel,但我还是想用Python来完成。有没有人能分享一些代码?谢谢。

2 个回答

0

我知道在Mac上处理Excel的主要工具是 xlrd/xlwt 和Excel 2004的XML格式。根据我的了解,这两个工具都不支持嵌入的图表。

所以,我觉得在Windows上通过COM来操作Excel可能是唯一的选择。

4

下面是一个在Windows上使用Python进行COM编程的简单示例:

import win32com.client
from win32com.client import constants as c

xl = win32com.client.gencache.EnsureDispatch('Excel.Application')
xl.Visible = True
wb = xl.Workbooks.Add()
ws = xl.ActiveSheet
ws.Range('A1').FormulaR1C1 = 'X'
ws.Range('B1').FormulaR1C1 = 'Y'
ws.Range('A2').FormulaR1C1 = 1
ws.Range('A3').FormulaR1C1 = 2
ws.Range('A4').FormulaR1C1 = 3
ws.Range('B2').FormulaR1C1 = 4
ws.Range('B3').FormulaR1C1 = 5
ws.Range('B4').FormulaR1C1 = 6
ws.Range('A1:B4').Select()
ch = ws.Shapes.AddChart().Select()
xl.ActiveChart.ChartType = c.xlXYScatterLines
xl.ActiveChart.SetSourceData(Source=ws.Range("A1:B4"))

这个示例是通过在Excel中录制一个宏得到的。这里有这个宏的内容,你可以看到它们是多么相似。只需在Excel中录制你想做的操作,然后把它转换成Python的语法就可以了:

Sub Macro1()
'
' Macro1 Macro
'

'
    ActiveCell.FormulaR1C1 = "X"
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Y"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "2"
    Range("A4").Select
    ActiveCell.FormulaR1C1 = "3"
    Range("B2").Select
    ActiveCell.FormulaR1C1 = "4"
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "5"
    Range("B4").Select
    ActiveCell.FormulaR1C1 = "6"
    Range("A1:B4").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlXYScatterLines
    ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$B$4")
End Sub

撰写回答