Python:使用图表创建Excel工作表 [英] Python: Creating Excel worksheets with charts
问题描述
是否有任何用于使用Python嵌入图表创建Excel图表的模块? 此问题中提到的模块似乎没有这种功能。
Is there any module for creating Excel charts with embedded charts in Python? The modules mentioned in this question don't seem to have that capability.
我更喜欢在Ubuntu下工作的通用模块,而不是依赖于Windows的。
I prefer a generic module that would work under Ubuntu, not a Windows-dependent one.
编辑: strong>我也会欣赏如何在创建的图表中嵌入图像,因为我可以在外部程序中创建图表并将其放在正确的表格中。
I will also appreciate ways to embed images within the created charts, as I can create the charts in an external program and place them within the right sheet.
谢谢,
Adam
推荐答案
这有点复杂(和/或邪恶),但是这样的东西将使用 JPype 跨平台(包括在Linux下)来包装 SmartXLS Excel Java库。
It's a little bit convoluted (and/or evil), but something like this will work cross-platform (including under Linux) using JPype to wrap the SmartXLS Excel Java library.
此示例使用SmartXLS中的简单图表创建(以Charts / ChartSample.class为例)。
This example uses the simple chart creation (in Charts/ChartSample.class) example from SmartXLS.
#!/usr/bin/env python
import os
import os.path
import jpype
# or wherever your java is installed
os.environ['JAVA_HOME'] = "/usr/lib64/jvm/default-java"
root = os.path.abspath(os.path.dirname(__file__))
SX_JAR = os.path.join(root, 'SX.jar')
options = [
'-Djava.class.path=%s' % SX_JAR
]
jpype.startJVM(jpype.getDefaultJVMPath(), *options)
WorkBook = jpype.JClass('com.smartxls.WorkBook')
ChartShape = jpype.JClass('com.smartxls.ChartShape')
ChartFormat = jpype.JClass('com.smartxls.ChartFormat')
Color = jpype.JClass('java.awt.Color')
workbook = WorkBook()
workbook.setText(0,1,"Jan")
workbook.setText(0,2,"Feb")
workbook.setText(0,3,"Mar")
workbook.setText(0,4,"Apr")
workbook.setText(0,5,"Jun")
workbook.setText(1,0,"Comfrey")
workbook.setText(2,0,"Bananas")
workbook.setText(3,0,"Papaya")
workbook.setText(4,0,"Mango")
workbook.setText(5,0,"Lilikoi")
for col in range(1, 5 + 1):
for row in range(1, 5 + 1):
workbook.setFormula(row, col, "RAND()")
workbook.setText(6, 0, "Total")
workbook.setFormula(6, 1, "SUM(B2:B6)")
workbook.setSelection("B7:F7")
# auto fill the range with the first cell's formula or data
workbook.editCopyRight()
left = 1.0
top = 7.0
right = 13.0
bottom = 31.0
# create chart with it's location
chart = workbook.addChart(left,top,right,bottom)
chart.setChartType(ChartShape.Column)
# link data source, link each series to columns(true to rows).
chart.setLinkRange("Sheet1!$a$1:$F$6", False)
# set axis title
chart.setAxisTitle(ChartShape.XAxis, 0, "X-axis data")
chart.setAxisTitle(ChartShape.YAxis, 0, "Y-axis data")
# set series name
chart.setSeriesName(0, "My Series number 1")
chart.setSeriesName(1, "My Series number 2")
chart.setSeriesName(2, "My Series number 3")
chart.setSeriesName(3, "My Series number 4")
chart.setSeriesName(4, "My Series number 5")
chart.setTitle("My Chart")
# set plot area's color to darkgray
chartFormat = chart.getPlotFormat()
chartFormat.setSolid()
chartFormat.setForeColor(Color.DARK_GRAY.getRGB())
chart.setPlotFormat(chartFormat)
# set series 0's color to blue
seriesformat = chart.getSeriesFormat(0)
seriesformat.setSolid()
seriesformat.setForeColor(Color.BLUE.getRGB())
chart.setSeriesFormat(0, seriesformat)
# set series 1's color to red
seriesformat = chart.getSeriesFormat(1)
seriesformat.setSolid()
seriesformat.setForeColor(Color.RED.getRGB())
chart.setSeriesFormat(1, seriesformat)
# set chart title's font property
titleformat = chart.getTitleFormat()
titleformat.setFontSize(14*20)
titleformat.setFontUnderline(True)
chart.setTitleFormat(titleformat)
workbook.write("./Chart.xls")
jpype.shutdownJVM()
这篇关于Python:使用图表创建Excel工作表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!