如何使用嵌入式图形生成Excel电子表格?

时间:2011-12-11 04:47:31

标签: python excel graph

我想创建带有嵌入式图形的Excel电子表格。理想情况下,我想在Mac上使用Python。如果我不能这样做,我想在Mac上使用某种Excel自动化。如果我不能这样做,我愿意在Windows上通过COM操作Excel来做,但我仍然希望从Python中做到这一点。有没有人有任何代码?感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我知道在Mac上处理Excel的主要工具是xlrd/xlwt和Excel 2004 XML格式。 AFAICT,这些都不支持嵌入式图形。

所以,我认为只留下在Windows上通过COM操作Excel的选项。