2010-02-14 4 views
3

파이썬에 차트가 내장 된 엑셀 차트를 만들기위한 모듈이 있습니까? The modules mentioned in this question 해당 기능이없는 것 같습니다.파이썬 : 차트로 엑셀 워크 시트 만들기

Windows 기반 모듈이 아닌 우분투에서 작동하는 일반 모듈을 선호합니다.

EDIT : 외부 프로그램에서 차트를 만들고이를 올바른 시트에 배치 할 수 있으므로 작성된 차트 내에 이미지를 포함하는 방법에 대해서도 고맙게 생각합니다.

감사합니다, Windows에서

아담

답변

3

다소 복잡하지만 (예 : 악의적 인 경우) SmartXLS Excel Java 라이브러리를 포장하기 위해 JPype을 사용하여 교차 플랫폼 (Linux 포함)에서 작동합니다.

이 예제에서는 SmartXLS의 간단한 차트 생성 (Charts/ChartSample.class) 예제를 사용합니다.

#!/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() 
+0

이것은 Java를 사용하여 직접 수행 할 수 있습니다. –

+0

그렇습니다. 그러나 이것은 기존 Python 코드에서 "직접"Excel 차트를 프로그래밍 방식으로 만들 수있게 해줍니다 (직접 값의 일부 값에 대해서). –

5

, 당신은 pywin32 및 COM을 사용할 필요가 것입니다. * x 상자에서는 .NET 용으로 작성된 Iron Python, Mono 및 Excel 조작 라이브러리를 조합하여 사용할 수 있습니다. 두 경우 모두, 행운을 빈다.

+0

+1 감사합니다. 외부 프로그램에서 내 차트를 만들어 이미지로 포함시킬 것입니다. –

3

나는 최근에 xlsxwriter을 발견했습니다. 그것은 내가 찾은 가장 유용한 xlsx 파이썬 모듈이며 차트와 그래프로 작동합니다. 또한 비표준 파이썬 모듈을 필요로하지 않으며 모든 유형의 상자에서 작동합니다. Windows 또는 차트 작성 소프트웨어가 필요 없습니다.