python导出excel charts图表的例子

在Excel vba将chart另存为图片篇中讲了如何通过vba宏将excel 中的chart图表导出为的图片,本篇讲下如何使用纯python代码将excel 中的图表导出为图片。这里需要使用的模块有win32com、pythoncom模块。

网上经查询有人已经写好的模块pyxlchart,具体代码如下:

from win32com.client import Dispatch
import os
import pythoncom
class Pyxlchart(object):
    """
    This class exports charts in an Excel Spreadsheet to the FileSystem
    win32com libraries are required.
    """
    def __init__(self):
        pythoncom.CoInitialize()
        self.WorkbookDirectory = ''
        self.WorkbookFilename = ''
        self.GetAllWorkbooks = False
        self.SheetName = ''
        self.ChartName = ''
        self.GetAllWorkbookCharts = False
        self.GetAllWorksheetCharts = False
        self.ExportPath = ''
        self.ImageFilename = ''
        self.ReplaceWhiteSpaceChar = '_'
        self.ImageType = 'jpg'
    def __del__(self):
        pass
    def start_export(self):
        if self.WorkbookDirectory == '':
            return "WorkbookDirectory not set"
        else:
            self._export()
    def _export(self):
        """
        Exports Charts as determined by the settings in class variabels.
        """
        excel = Dispatch("excel.application")
        excel.Visible = False
        wb = excel.Workbooks.Open(os.path.join(self.WorkbookDirectory ,self.WorkbookFilename))
        self._get_Charts_In_Worksheet(wb,self.SheetName,self.ChartName)
        wb.Close(False)
        excel.Quit()
    def _get_Charts_In_Worksheet(self,wb,worksheet = "", chartname = ""):
        if worksheet != "" and chartname != "":
            sht = self._change_sheet(wb,worksheet)
            cht = sht.ChartObjects(chartname)
            self._save_chart(cht)
            return
        if worksheet == "":
            for sht in wb.Worksheets:
                for cht in sht.ChartObjects():
                    if chartname == "":
                        self._save_chart(cht)
                    else:
                        if chartname == cht.Name:
                            self._save_chart(cht)
        else:
            sht = wb.Worksheets(worksheet)
            for cht in sht.ChartObjects():
                if chartname == "":
                    self._save_chart(cht)
                else:
                    if chartname == cht.Name:
                        self._save_chart(cht)
    def _change_sheet(self,wb,worksheet):
        try:
            return wb.Worksheets(worksheet)
        except:
            raise NameError('Unable to Select Sheet: ' + worksheet + ' in Workbook: ' + wb.Name)
    def _save_chart(self,chartObject):
        imagename = self._get_filename(chartObject.Name)
        savepath = os.path.join(self.ExportPath,imagename)
        print savepath
        chartObject.Chart.Export(savepath,self.ImageType)
    def _get_filename(self,chartname):
        """
        Replaces white space in self.WorkbookFileName with the value given in self.ReplaceWhiteSpaceChar
        If self.ReplaceWhiteSpaceChar is an empty string then self.WorkBookFileName is left as is
        """
        if self.ImageFilename == '':
            self.ImageFilename == chartname
        if self.ReplaceWhiteSpaceChar != '':
            chartname.replace(' ',self.ReplaceWhiteSpaceChar)
        if self.ImageFilename != "":
            return self.ImageFilename + "_" + chartname + "." + self.ImageType
        else:
            return chartname + '.' + self.ImageType
if __name__ == "__main__":
    xl = Pyxlchart()
    xl.WorkbookDirectory = "\\\\maawtns01\\discipline\\procurement\\MATERIEL\\Raw Material\\Data Management\\Hawk"
    xl.WorkbookFilename = "Hawk Workability KPI.xlsm"
    xl.SheetName = ""
    xl.ImageFilename = "MyChart1"
    xl.ExportPath = "d:\\pycharts"
    xl.ChartName = ""
    xl.start_export()
    print "This file does not currently allow direct access"
    print "Please import PyXLChart and run start_export()"
   
这里还使用Excel vba将chart另存为图片篇中创建的chart_column.xlsx表,使用上面的模块的方法如下:

from pyxlchart import Pyxlchart
xl = Pyxlchart()
xl.WorkbookDirectory = "D:\\"
xl.WorkbookFilename = "chart_column.xlsx"
xl.SheetName = ""
#xl.ImageFilename = "MyChart1"
xl.ExportPath = "d:\\"
xl.ChartName = ""
xl.start_export()

由于有该表里有多张图表,所以上面未指定xl.ImageFilename ,使用示例如下:

时间: 2024-12-30 11:18:23

python导出excel charts图表的例子的相关文章

Python导出数据到Excel可读取的CSV文件的方法

  本文实例讲述了Python导出数据到Excel可读取的CSV文件的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 import csv with open('eggs.csv', 'wb') as csvfile: #spamwriter = csv.writer(csvfile, delimiter=' ',quotechar='|', #quoting=csv.QUOTE_MINIMAL) spamwriter = csv.writer(csvfile,

C#操作导出Excel图表时报该对象无标题

问题描述 C#操作导出Excel图表时报该对象无标题 如题,我要在网站上根据数据源导出一个Excel曲线图图表,数据源是没有错的,但在运行 xlChart.ChartWizard(cellRange.CurrentRegion Excel.XlChartType.xlLine Type.Missing Excel.XlRowCol.xlColumns 1 1 true title时间""查询次数""");报以下错误,数据源如下:在网上搜索了很长时间,没有具

asp.net-小白提问:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽。大神有例子吗?

问题描述 小白提问:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽.大神有例子吗? 如图:我想做一个 ASP.net 后台导出Excel 并且设置它的页眉页脚及列宽.大神有例子吗? 解决方案 用NPOI这个类,可以设置页眉页脚,具体google下.

ThinkPHP中用PHPExcel导出excel文件数据例子

下面给出步骤: 1.准备:自己制作一个生成的excel参考的模板文件,template.xls,我的模板为 在这个模板里面,你想在哪个位置显示什么样式就设置什么样式,到时候相对应位置 查出来的数据就会自动套用样式,比如说标题大小,背景颜色,用函数等,都会自动套用,就不用在后台代码控制那么麻烦了,这个也是选择用模板生成excel原因. 附: 1.某列用条件格式等高级一点的操作应该也是可以的,没有试. 2.大家要注意一点,我要输出的数据是从第4行开始填充的,但是最好留出一行空的,比如说第5行,并不仅

winform的GRID与图表导出EXCEL问题!

问题描述 有一界面,里面有一个DEV的XTRAGRID控件和一个DEV的CHART控件.现在客户要求需要把两个控件的内容导到一个EXCEL里面.请问要怎么实现?能用DEV控件解决的就用DEV解决.不行的话,可以考虑用MS的控件!!!!!求助啊! 解决方案 解决方案二:不懂啊学习WinFormGridView导出ExcelusingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;u

Laravel Excel导入导出Excel/CSV 文件例子

1.简介 Laravel Excel 在 Laravel 5 中集成 PHPOffice 套件中的 PHPExcel,从而方便我们以优雅的.富有表现力的代码实现Excel/CSV文件的导入和导出. 该项目的GitHub地址是:https://github.com/Maatwebsite/Laravel-Excel. 本文我们将在Laravel中使用Laravel Excel简单实现Excel文件的导入和导出. 2.安装&配置 使用Composer安装依赖 首先在Laravel项目根目录下使用Co

thinkphp调用phpexcel导出excel文件到本地的例子

记得在以前写了个导出excel结果实现了导出excel但是导出来的excel的格式非常的难看没有办法进行美化的.最原始的导出excel的办法就是利用header()函数进行文件.其实phpexcel也是利用header()函数进行导出的.只不过是多了美国的过程而以.不罗嗦了贴出代码. html部分  代码如下 复制代码     <div><a href="/esoxue.php/Article/download/"/>导出Excel</a></

ASP如何利用excel建立图表

excel|图表|excel|图表 现在我们针对EXCEL举另外一个例子,大家都询问如何用ASP建立图表的问题,以下就是解决方案 First we set the type of script首先设定脚本类型<%@ LANGUAGE="VBSCRIPT" %> Make the object, and set the object to an Excelsheet建立Excelsheet对象 Dim MyExcelChartSet MyExcelChart = Create

Java中导入、导出Excel

原文:Java中导入.导出Excel 一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际的开发中,很多时候需要实现导入.导出Excel的应用. 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta POI和Java Excel 下面我就分别讲解一下如何使用这两个技术实现导入.导出Excel 二.使用Jakarta POI导入.