在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 ,使用示例如下:

python 图表_python导出excel charts图表相关推荐

  1. 案例分享:Qt多通道数据采集系统(通道配置、电压转换、采样频率、通道补偿值、定时采集、导出excel和图表、自动XY轴、隐藏XY轴、实时隐藏显示通道)

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/110941614 长期持续带来更多项目与技术分 ...

  2. python读excel表格数据绘制图表_Python读取Excel数据生成图表 v2.0

    原博文 2020-06-15 15:09 − ## Python读取Excel数据生成图表 v2.0 ## 一.需求背景 自己一直在做一个周基金定投模拟,每周需要添加一行数据,并生成图表.以前一直是用 ...

  3. 使用python将数据导出excel表格

      python可用于数据分析,有时候获得了数据需要导出以作其他作用.本文就介绍python导出excel表格的方法.   导出excel表格,python提供了两个库:xlwt,xlrd.本文只讨论 ...

  4. 风变python怎么样_Python取代Excel?风变编程带你了解如何更好地学Python!

    当前最简单.最流行的编程语言是什么?是Python.最近,谷歌公布的编程语言流行指数显示,Python目前仍然是全球范围内最受欢迎的技术语言. 而得益于简洁.易读.易维护等特点,Python可广泛运用 ...

  5. python自动化_Python 实现Excel自动化办公上

    今天的文章分享Python 如何轻松操作Excel 这款office 办公软件的,在Python 中你要针对某个对象进行操作,是需要安装与其对应的第三方库的,这里对于Excel 也不例外,它也有对应的 ...

  6. python 制作数据图表_python制作各种数据图表

    工具集合 数据由python处理,所以首先需要安装python,官网下载即可.可以不用安装python的编辑器,自己用Notepad写就可以. 安装图表处理库pyecharts,命令是:pip ins ...

  7. python 热力图_python高维数据型图表热力图、树形图

    热力图 热力图(heat map) 一种将规则化矩阵数据转换成颜色色调的常用的可视化方法: 每个单元对应数据的某些属性: 属性的值通过颜色映射转换为不同色调并填充规则单元: 表格坐标的排列和顺序都可以 ...

  8. python给excel添加超链接_python导出excel(含插入图片,超链接)

    使用xlsxwriter模块 ``` import xlsxwriter import pymysql.cursors connect = pymysql.Connect( host='localho ...

  9. Python自动化巡检导出Excel表

    简介 在现在这个网络越来越大的情况下,我们管理调式设备手工方式已经显得效率低下,Python自动化运维能够很好的帮助我们把一些单调的命令批量进行配置,还可以在巡检的时候提取我们需要的信息. 介绍 下面 ...

最新文章

  1. ubuntu终端基础命令
  2. 怎么学python-没有任何基础的人,该如何学习Python?「附具体步骤」
  3. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划
  4. 一文看尽9篇语义分割最新论文(GPSNet/Graph-FCN/HMANet等)
  5. 寻仙新马源码一键端_强大,腾讯开源前后端接口开发工具!
  6. sqlalchemy与mysql区别_sqlite3和sqlalchemy有什么区别?
  7. leetcode 122. 买卖股票的最佳时机 II 思考分析
  8. 游戏入口点GameEntryPoint
  9. 「leetcode」234. 回文链表:【数组模拟】【翻转后半部分】详解
  10. URAL-1998 The old Padawan 二分
  11. 【细胞分割】基于matlab GUI分水岭算法细胞分割计数【含Matlab源码 637期】
  12. win10系统查看占用端口
  13. 四十个鹏城春夏,一场数字繁花
  14. mac c语言 新手,第1次买Mac必看,新手买Mac全攻略!
  15. 8种绝对成交的销售话术技巧
  16. 服务器怎么修改mac地址怎么办,服务器修改mac地址重启后会恢復原mac吗?
  17. 服务器系统能装打印机吗,现在云服务器怎么安装打印机
  18. redis的zset为什么用跳表不用红黑树
  19. 一个迷你音频播放器项目
  20. 【云原生 · Kubernetes】部署kube-apiserver集群

热门文章

  1. Centos 7.5 安装Zabbix4.0
  2. (译)第一次Android开发单飞
  3. .NET Core的日志[2]:将日志输出到控制台
  4. LINUX下的21个特殊符号 转
  5. SQL Server 判断数据库是否存在,表是否存在
  6. transmission Linux(debian)下的BT下载客户端安装
  7. AIX HA模拟宕机--维护磁带机
  8. Lucene的简单应用
  9. SilverlightMMORPG窝窝世界明天4月28日封测
  10. 【硬核】秒杀活动技术方案,Redis申请32个G,被技术总监挑战了...