如何生成带有嵌入图表的Excel电子表格?
我想用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