前面分享了使用xlsxwriter创建excel和写入数据GUC:(原创)xlsxwriter,python excel 写入数据\图表等操作_创建、写入(一)​zhuanlan.zhihu.com

xlsxwrite除了常规数据操作,还可以灵活,精细的操作图表,这也为吸引我要分享的原因之一,对于固定格式报表可以自动输出,大大提升日常的办公效率

先用上一篇文章的方法写入数据

import xlsxwriter

wb = xlsxwriter.Workbook("e:\\xlsxwriter\\filename.xlsx")

ws = wb.add_worksheet("案例")

# 数据

data = [

('地区','1月销售量','2月销售量'),

('广州',52641,45641,),

('上海',65444,54584,),

('北京',57485,65484,),

('深圳',42314,85214,)

]

#字段格式

header = {

'bold' : True, #粗体

'font_name' : '微软雅黑',

'font_size' : 10,

'border' : True, #边框线

'align' : 'center', #水平居中

'valign' : 'vcenter', #垂直居中

'bg_color' : '#66DD00' #背景颜色

}

text = {

'font_name' : '微软雅黑',

'font_size' : 9,

'border' : True,

'align' : 'left', #左对齐

'valign' : 'vcenter'

}

headerpm = wb.add_format(header)

textpm = wb.add_format(text)

ws.set_column('C:C',13) #C列宽度

for row,rowdata in enumerate(data):

for col,coldata in enumerate(rowdata):

if row==0:

ws.write(row,col,coldata,headerpm)

else:

ws.write(row, col, coldata, textpm)

wb.close()

结果数据如下:

使用Workbook的add_chart()方法创建图表对象,以字典表的方式传入参数

chart = workbook.add_chart({'type': 'column'}) #创建一个柱状图

type表示要创建的图表类型,值及对应类型如下:area:面积图

bar:条形图

column:柱状图

line:折线图

pie:饼图

doughnut:圆环图

scatter:散点图

stock:股价图

radar:雷达图

使用add.series()数据系列添加的图表,以字典表的方式传入参数

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4'

}name:该数据系列的名称 ,可以填写引用单元格值,也可以直接填写值

categories:图表类别标签

values:该数据系列的值

values选项为必须,其他选项为可选

categories、values可以使用单元格的名称,也可以使用行/列索引表示,即[所在的sheet名, 首行索引, 首列索引, 尾行索引,尾列索引 ]

以下表示同上

data1 = {

'name': '1月销售量',

'categories' : ['案例',1,0,4,0],

'values' : ['案例',1,1,4,1]

}

图表中增加数据系列

chart.add_series(data1)

使用Worksheet的insert_chart()方法插入工作表中,需指定起始位置

ws.insert_chart('B8',chart) #在B10单位格位置插入图表

结果如下

再插入2月销售量数据系列

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4'

}

data2 = {

'name': '案例!$C$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$C$2:$C4'

}

chart.add_series(data1)

chart.add_series(data2)

ws.insert_chart('B8',chart)

结果如下

再美化一下表格

'overlap' : -20

overlap:两个数据系列之间重叠的距离,范围+/-100,默认值为0,适用于条形图/柱状图

如下图红框的距离

'gap' : 100

gap:在条形图/柱形图中数据系列之间的间隔。范围是0-500。默认值是150

如下图红框的距离

'data_labels' : {'value':True,'font':{'name':'微软雅黑','size':9}}

添加数据标签,并设置数据标签的字体为微软雅黑,大小为9

如下图红框部分

设置X轴参数,斜体,大小10,加粗

chart.set_x_axis(

{

'num_font': {'italic': True,'size':11,'bold':True,}

}

)

结果见下图

设置Y轴参数,去除Y轴及背景网格线

chart.set_y_axis(

{

'major_gridlines':{'visible':False}, #去除Y轴背景网格线

'visible':None #去除Y轴

}

)

结果如下图

设置图表标题

chart.set_title(

{

'name':'1-2月销售量',

'name_font': {'name': '微软雅黑'}

}

)

结果如下图

设置图表大小,宽620,高350

chart.set_size({'width':620,'height':350})

结果如下图

sheet完整如下图

去掉图表边框

chart.set_chartarea({'border':{'none':True}})

结果如下图

隐藏工作表网格线

ws.hide_gridlines(2)

#参数0,不隐藏

#参数1,仅隐藏打印的网格线

#参数2,隐藏屏幕和打印的网格线

结果如下图

最后附上完整代码

import xlsxwriter

wb = xlsxwriter.Workbook("e:\\xlsxwriter\\filename.xlsx")

ws = wb.add_worksheet("案例")

# 数据

data = [

('地区','1月销售量','2月销售量'),

('广州',52641,45641,),

('上海',65444,54584,),

('北京',57485,65484,),

('深圳',42314,85214,)

]

#字段格式

header = {

'bold' : True, #粗体

'font_name' : '微软雅黑',

'font_size' : 10,

'border' : True, #边框线

'align' : 'center', #水平居中

'valign' : 'vcenter', #垂直居中

'bg_color' : '#66DD00' #背景颜色

}

text = {

'font_name' : '微软雅黑',

'font_size' : 9,

'border' : True,

'align' : 'left', #左对齐

'valign' : 'vcenter'

}

headerpm = wb.add_format(header)

textpm = wb.add_format(text)

ws.set_column('C:C',13) #C列宽度

for row,rowdata in enumerate(data):

for col,coldata in enumerate(rowdata):

if row==0:

ws.write(row,col,coldata,headerpm)

else:

ws.write(row, col, coldata, textpm)

chart = wb.add_chart({'type': 'column'})

data1 = {

'name': '案例!$B$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$B$2:$B4',

'overlap' : -20,

'gap' : 100,

'data_labels' : {'value':True,'font':{'name':'微软雅黑','size':9}}

}

data2 = {

'name': '案例!$C$1',

'categories' : '案例!$A$2:$A4',

'values' : '案例!$C$2:$C4',

'data_labels': {'value': True, 'font': {'name': '微软雅黑', 'size': 9}}

}

chart.set_x_axis(

{

'num_font': {'italic': True,'size':11,'bold':True,}

}

)

chart.set_y_axis(

{

'major_gridlines':{'visible':False},

'visible':None

}

)

chart.set_title(

{

'name':'1-2月销售量',

'name_font': {'name': '微软雅黑'}

}

)

chart.set_size({'width':620,'height':350})

chart.set_chartarea({'border':{'none':True}})

ws.hide_gridlines(2)

chart.add_series(data1)

chart.add_series(data2)

ws.insert_chart('B8',chart)

wb.close()

python写入excel表格数据绘制图表_(原创)xlsxwriter,python excel 写入数据\图表等操作_图表操作(二)...相关推荐

  1. 如何读取Excel表格中不同sheet表的同一位置单元格数据,并绘制条形图呢?

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 今天,有位朋友在群里面咨询了一个问题:如何读取Excel表格中"不同sheet表"的同一位置单元格数据,并绘制条形图呢? 有人提议 ...

  2. 前端自己导出excel表格 不需要调接口(可导出全部的数据)

    前端自己导出excel表格 不需要调接口(可导出全部的数据) 1.下载 npm install -S file-saver xlsx 2.把js放在对应的位置 全部复制(Export2Excel.js ...

  3. excel表格内数据为何无法计算机,电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制...

    电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制 我们即便在excel中隐藏了列(行),依旧可以显示出来并被复制.今天小编就告诉大家电脑EXCEL表格怎么让隐藏列(行)中的数据不被复制. 具体如下 ...

  4. python拷贝excel工作簿_几百个Excel表格需要复制粘贴,如何用Python一键搞定?

    在工作中经过会遇到大量格式一致,内容不同的Excel表格文件,需要将这里面的内容整理到一个Excel文件中的情形.一般情况下,都是将这些Excel表格文件一个一个地打开,将里面的内容复制,然后粘贴到一 ...

  5. python更新excel内容_[原创]使用 Python 读写 Excel 文件(一)更新

    项目要求 如果说是 Office 办公软件使得 Windows 成为主流的操作系统,那么 Excel 就是使得微软硬起来的法宝! Word 和 PowerPoint 都有不相上下的对手,但 Excel ...

  6. excel表格计算机簇状图,excel表格怎么绘制簇状柱形图

    在excel表格中,为了让数据更加明晰通常会使用簇状柱形图,这种图表应该怎么绘制呢?下面随学习啦小编一起来看看吧. excel表格绘制簇状柱形图的步骤 用excel简单制作可视化图表,首先我们需要添加 ...

  7. 【Python 实战基础】如何绘制树状图展示Python数据分析师的知识结构

    目录 一.实战场景 二.主要知识点 文件读写 基础语法 字符串处理 文件生成 数据构建 三.菜鸟实战 1.创建 python 文件 2.运行结果 一.实战场景 实战场景:如何绘制树状图展示Python ...

  8. 阿里开源(EasyExcel):使用Java将数据导出为Excel表格、带样式----》java web下载 Excel文件

    目录 一.技术选型 二.实现过程 1.导入依赖 2.编写工具类 EasyExcelUtil 3.公用参数类 EasyExcelParams 4.表格样式实体类 MyWriteHandler 5.数据实 ...

  9. 如何将excel表格导入word_word办公技巧:如何让Excel与Word文档数据同步

    编按: Word和Excel是一对好基友,它们之间的数据信息都是可以关联的.简单来说,就是将Excel数据导入到Word中后,可实现数据同步更新,从而避免我们重复录入或更改数据.那该怎么做呢?今天,小 ...

最新文章

  1. centos7 搭建 mysql8
  2. 【工作感悟】——聊聊面试那些事
  3. Android 中文 API —— TextSwitcher
  4. APUE2勘误-11.5节 线程终止(关于线程清理处理程序)
  5. 防止cpu 一直被占用 sleep(0) 和 yield
  6. fastapi 查询参数和字符串校验 / 路径参数和数值校验
  7. DataSnap服务器从xe2升级到xe5报错的处理
  8. SQL Server数据库备份和还原报告
  9. 关于在openstack执行nova get-vnc-console命令,无法得到vnc url并提示服务器超时的问题描述...
  10. Kafka Producer生产者原理
  11. 博文视点大咖直播伴你读No.4:用户增长、产品思维和产品的变化
  12. ul在Firefox和IE下的不同表现
  13. 随笔小杂记(四)——将语义分割标签转换为指定像素值
  14. asp.net DataReader DataTable 使用反射给给实体赋值
  15. 视频教程-2020年软考网络工程师基础知识历年真题详解软考视频教程-软考
  16. H3CNE概念思维导图
  17. kali linux渗透测试(一) --- set社工攻击
  18. 【单片机毕业设计】【mcuclub-jj-010】基于单片机的饮水机的设计
  19. python子列表_关于python:创建子列表
  20. android的版本电视怎么投屏,三星电视怎么投屏 三星电视投屏设置方法

热门文章

  1. php代码怎么看错在哪里,PHP代码不知道哪里错了。
  2. mysql 分片 数据迁移_简述MySQL分片中快速数据迁移_MySQL
  3. c语言程序设计基础的考试题,c语言程序设计基础的考试题.doc
  4. 大四阶段的社会实践的主要目的是_大四寒假社会实践报告1500字范文
  5. aliyun maven 添加jar_Maven介绍及安装
  6. php 生命变量,深入理解PHP原理之变量生命期(一)
  7. linux下性能测试mon,Linux性能评测工具之一:nmon篇
  8. java murmurhash实现_一致性哈希算法与Java实现
  9. oracle 11g的audit导致system表空间快速增长的问题
  10. 模拟usb拔出插入_拔U盘的时候到底要不要点“安全删除USB”?微软官方给了答案...