python使用xlsxwriter模块生成和处理Excel文档

xlsxwriter使用实例--网站业务流量报表

安装模块

wget https://files.pythonhosted.org/packages/04/c9/d5a8b02561a32bfcbec767a7d094c1ce54874eba9bc6bbaa58dd9ad523e7/XlsxWriter-1.0.4.tar.gz

tar zxf XlsxWriter-1.0.4.tar.gz

cd XlsxWriter-1.0.4

python setup.py install

官网参考示例http://xlsxwriter.readthedocs.io/chart_examples.html

#!/usr/bin/env python
# -*- coding: utf-8 -*- 

import xlsxwriter

workbook=xlsxwriter.Workbook('chart.xlsx')
worksheet=workbook.add_worksheet()
chart=workbook.add_chart({'type':'column'})
chart1=workbook.add_chart({'type':'line'})
chart2=workbook.add_chart({'type':'column'})
line_chart2=workbook.add_chart({'type':'line'})
chart3=workbook.add_chart({'type':'line'})
chart4=workbook.add_chart({'type':'pie'})

title=[u'业务名称',u'星期一',u'星期二',u'星期三',u'星期四',u'星期五',u'星期六',u'星期日',u'平均流量']
buname=[u'业务官网',u'新闻中心',u'购物频道',u'体育频道',u'亲子频道']

data = [
    [150,152,158,149,155,145,148],
    [89,88,95,93,98,100,99],
    [201,200,198,175,170,198,195],
    [75,77,78,78,74,70,79],
    [88,85,87,90,93,88,84]
]

format=workbook.add_format()
format.set_border(1)

title_format=workbook.add_format()
title_format.set_border(1)
title_format.set_bg_color('#cccccc')
title_format.set_align('center')
title_format.set_bold()

ave_format=workbook.add_format()
ave_format.set_border(1)
ave_format.set_num_format('0.00')

worksheet.write_row('A1',title,title_format)
worksheet.write_column('A2',buname,format)
worksheet.write_row('B2',data[0],format)
worksheet.write_row('B3',data[1],format)
worksheet.write_row('B4',data[2],format)
worksheet.write_row('B5',data[3],format)
worksheet.write_row('B6',data[4],format)

def chart_series(cur_row):
        worksheet.write_formula('I'+cur_row,'=AVERAGE(B'+cur_row+':H'+cur_row+')',ave_format)
        chart.add_series({
                'categories':'=Sheet1!$B$1:$H$1',
                'values':'=Sheet1!$B$'+cur_row+':$H$'+cur_row,
                'line':{'color':'black'},
                'name':'=Sheet1!$A$'+cur_row,
        })
for row in range(2,7):
        chart_series(str(row))

chart1.add_series({
                'categories':'=Sheet1!$A$2:$A$6',
                'values':'=Sheet1!$I$2:$I$6',
                'marker':{'type':'diamond','size':7,'color':'green'},
                'data_labels':{'value':'True'},
                'line':{'color':'blue'},
                'name':u'平均流量分布'
        })

chart2.add_series({
                'categories':'=Sheet1!A2:A6',
                'values':'=Sheet1!B2:B6',
                'line':{'color':'blue'},
                'name':u'周一流量'
        })
line_chart2.add_series({
                'categories':'=Sheet1!A2:A6',
                'values':'=Sheet1!I2:I6',
                'marker':{'type':'diamond','size':7},
                'data_labels':{'value':'True'},
                'line':{'color':'blue'},
                'name':u'平均流量分布'
        })

chart2.combine(line_chart2)

chart3.add_series({
                'categories':'=Sheet1!B1:H1',
                'values':'=Sheet1!B2:H2',
                'name':u'业务官网流量'
})

chart3.add_series({
                'categories':'=Sheet1!B1:H1',
                'values':'=Sheet1!B3:H3',
                'name':u'新闻中心流量'
})
chart3.add_series({
                'categories':'=Sheet1!B1:H1',
                'values':'=Sheet1!B4:H4',
                'name':u'购物频道流量'
})
chart3.add_series({
                'categories':'=Sheet1!B1:H1',
                'values':'=Sheet1!B5:H5',
                'name':u'体育频道流量'
})

chart3.add_series({
                'categories':'=Sheet1!B1:H1',
                'values':'=Sheet1!B6:H6',
                'name':u'亲子频道流量'
})

chart4.add_series({
                'categories':'=Sheet1!A2:A6',
                'values':'=Sheet1!I2:I6',
                'data_labels':{'value':'True'},
                'name':u'平均流量分布'
})

chart.set_size({'width':577,'height':287})
chart.set_title({'name':u'业务流量报表'})
chart.set_y_axis({'name':'Mb/s'})

chart1.set_size({'width':577,'height':287})
chart1.set_title({'name':u'业务流量报表'})
chart1.set_y_axis({'name':'Mb/s'})

chart2.set_size({'width':577,'height':287})
chart2.set_title({'name':u'业务流量报表'})
chart2.set_y_axis({'name':'Mb/s'})

chart3.set_size({'width':577,'height':287})
chart3.set_title({'name':u'业务流量报表'})
chart3.set_y_axis({'name':'Mb/s'})

chart4.set_size({'width':577,'height':287})
chart4.set_title({'name':u'业务流量报表'})
chart4.set_y_axis({'name':'Mb/s'})

worksheet.insert_chart('A8',chart)
worksheet.insert_chart('K8',chart1)
worksheet.insert_chart('A24',chart2)
worksheet.insert_chart('K24',chart3)
worksheet.insert_chart('A40',chart4)
workbook.close()

python chart.py

运行结果  生产chart.xlsx文件

原文地址:http://blog.51cto.com/superleedo/2117925

时间: 2024-07-29 04:07:22

python使用xlsxwriter模块生成和处理Excel文档的相关文章

java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档

原文:java读取WORD/EXCEL模板转换生成新WORD/EXCEL文档 代码下载地址:http://www.zuidaima.com/share/1550463239670784.htm 可以通过预先设置指定的excel和word模板,通过替换文档里面指定的标志来生成新的excel和word文档.excel的部分只是实现了简单的方法.word部分可以支持word2003和word2007格式.建议word使用07及其以上. 其实excel部分标签和jstl很像,而且支持循环等.word就支

freeMarker生成word,excel文档

以前导出文档一直使用poi技术,这个项目使用freemarker技术,然后看了一下,发现比poi简单多了.于是发表一下. FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页.电子邮件.配置文件.源代码等)的通用工具. 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件. 首先,把你要导出的word文档另存为xml格式,然后使用记事本将它打开,将动态生成的代码用el表达式(jstl标签)替换. 示例如下: wor

服务器巡检shell脚本,python生成excel文档并邮件发出

背景及思路: 五一小长假之前,公司要求我做一次服务器巡检. 1.写了一个简单的脚本获取服务器的各种基础信息:cpu,内存,swap分区使用情况,磁盘,网卡信息种种,具体见脚本,将这些信息追加到一个文件中,然后在监控机上做一次汇总,汇总方式就不详谈,我用的是for循环ssh追加 2.然后利用python的xlsxwriter模块生成excel 3.最后利用python发带附件为excel的邮件到指定邮箱 获取服务器信息部分脚本: #取所需要的内网IP Int_ip=`ifconfig|awk '/

windows下安装Python的XlsxWriter模块

在windows环境下安装python的XlsxWriter模块,虽然很简单,但由于自己粗心,少了一个字符,导致不少的错误... 1.通过pip命令来安装. C:\Users\Administrator>pip install XlsWriter Collecting XlsWriter Could not find a version that satisfies the requirement XlsWriter (from versions: ) No matching distribut

php用PHPExcel库生成Excel文档的例子

<?php require_once '../libs/PHPWord/PHPWord.php'; require_once '../libs/PHPWord/PHPWord/IOFactory.php'; require_once '../../config.php'; // New Word Document $PHPWord = new PHPWord(); $objExcel->getProperties()->setCreator("office 2003 excel

Python处理Excel文档(xlrd, xlwt, xlutils)

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

后台生成EXCEL文档,自定义列

后台生成EXCEL文档,自定义列 //response输出流处理 //设置编码.类型.文件名 getResponse().reset(); getResponse().setCharacterEncoding("utf-8"); getResponse().setContentType("application/vnd.ms-excel"); String useragent = getRequest().getHeader("user-agent&quo

java生成excel文档

要做一个后台自动化,要先预先生成一份文档,以下内容生成了文档 首先下载jxl.jar包,下载地址:http://download.csdn.net/detail/prstaxy/4469935 1.生成一个简单的excel文档 WritableWorkbook workbook = null; try { workbook = Workbook.createWorkbook(new File("F:\\test.xls")); //创建新的一页 WritableSheet sheet

使用POI生成具有三级下拉菜单的Excel文档

曾在工作中遇到这种需求,研究很久编码出一个方法,提供于此供大家参考. 效果图如下: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心处理): 此部分包含几个方面: 获取三级下拉框各列的数据: 创建每个下拉功能的名称管理器 在隐藏的sheet中生成下拉菜单所需要的row 代码如下: /** * 第一部分 * 将三个列表所有字段从数据库查询出,并生成名称管理器,存放至隐藏的sheet中 */ private static HSSFWorkbook writePorpData() { int