python 模块 XlsxWriter 生成execl文档
文章目录
python 模块 XlsxWriter 生成execl文档
1. 介绍
2. 安装
3. 方法
3.1 Workbook类
3.1.1 `add_worksheet([sheetname])`
3.1.2 `add_format([properties])`
3.1.3 `add_chart(options)`
3.1.4 `close()`
3.2 Worksheet类
3.2.1 `write(row,col,*args)`
3.2.2 `set_row(row,height,cell_format,options)`
3.2.3 `set_column(first_col,last_col,width,cell_format,options)`
3.2.4 `insert_image(row,col,image[,options])`
3.3 Chart类
3.3.1 `chart.add_series(options)`
3.3.2 `set_x_axis(options)`
3.3.3 `set_size(options)`
3.3.4 `set_title(options)`
3.3.5 `set_style(style_id)`
3.3.6 `set_table(options)`
4 实战
4.1 画线图
4.2 定制自动化业务流量报表周报
1. 介绍
Excel是当今最流行的电子表格处理软件,支持丰富的计算函数及图表,在系统运营方面广泛用于运营数据报表,比如业务质量、资源利用、安全扫描等报表,同时也是应用系统常见的文件导出格式,以便数据使用人员做进一步加工处理。本节主要讲述利用Python操作Excel的模块XlsxWriter(https://xlsxwriter.readthedocs.org),可以操作多个工作表的文字、数字、公式、图表等。XlsxWriter 模块具有以下功能:
100%兼容的Excel XLSX文件,支持Excel 2003、Excel 2007等版本;
支持所有Excel单元格数据格式;
单元格合并、批注、自动筛选、丰富多格式字符串等;
支持工作表PNG、JPEG图像,自定义图表;
内存优化模式支持写入大文件。
2. 安装
第一种:
pip install XlsxWriter #pip安装方法
第二种:
easy_install XlsxWriter #easy_install安装方法
第三种:#源码安装方法
curl -O -L http://github.com/jmcnamara/XlsxWriter/archive/master.tar.gz tar zxvf master.tar.gz cd XlsxWriter-master/ sudo python setup.py install
示例:
#!/usr/bin/python #---coding:-utf-8--- import xlsxwriter workbook = xlsxwriter.Workbook('demo1.xlsx') #创建一个Excel文件 worksheet = worksheet = workbook.add_worksheet() #创建一个工作表对象 worksheet.set_column('A:A', 20) #设定第一列(A)宽度为20像素 bold= workbook.add_format({'bold': True}) #定义一个加粗的格式对象 worksheet.write('A1', 'Hello') #A1单元格写入’Hello’ worksheet.write('A2', 'World', bold) #A2单元格写入’World’并引用加粗格式对象bold worksheet.write('B2', u'中文测试', bold) #B2单元格写入中文并引用加粗格式对象bold worksheet.write(2, 0, 32) #用行列表示法写入数字’32’与’35.5′ worksheet.write(3, 0, 35.5) #行列表示法的单元格下标以0作为起始值,’3,0’等价于’A3’ worksheet.write(4, 0, '=SUM(A3:A4') #求A3:A4的和,并将结果写入’4,0’,即’A5’ worksheet.insert_image('B5', 'img/1.jpg') #在B5单元格插入图片 workbook.close() #关闭Excel文件
输出:
3. 方法
3.1 Workbook类
Workbook类定义:
Workbook(filename[,options]),该类实现创建一个XlsxWriter的Workbook对象。
Workbook类代表整个电子表格文件,并且存储在磁盘上。
参数filename(String类型)为创建的Excel文件存储路径;
参数options(Dict类型)为可选的Workbook参数,一般作为初始化工作表内容格式,例如值为{‘strings_to_numbers’:True}表示使用worksheet.write()方法时激活字符串转换数字。
方法:
3.1.1 add_worksheet([sheetname])
添加一个新的工作表,
参数sheetname
(String类型)为可选的工作表名称,默认为Sheet1
。
3.1.2 add_format([properties])
在工作表中创建一个新的格式对象来格式化单元格。
参数properties(dict类型)为指定一个格式属性的字典,
例如:设置一个加粗的格式对象,workbook.add_format({‘bold’:True})。通过Format methods(格式化方法)也可以实现格式的设置,等价的设置加粗格式代码如下:
#通过字典的方式直接设置格式 workfomat = workbook.add_format({ 'bold': True, #字体加粗 'border':1, #单元格边框宽度 'align': 'center', #对齐方式 'valign': 'vcenter', #字体对齐方式 'fg_color': '#F4B084', #单元格背景颜色 }) #通过format对象的方式设置单元格格式 workfomat = workbook.add_format() workfomat.set_bold(1) #设置边框宽度 workfomat.set_num_format('0.00') #格式化数据格式为小数点后两位 workfomat.set_align('center') #设置对齐方式 workfomat.set_fg_color('blue') #设置单元格背景颜色 workfomat.set_bg_color('red') #设置单元格背景颜色 (经测试和上边的功能一样)
3.1.3 add_chart(options)
在工作表中创建一个图表对象,内部是通过insert_chart()方法来实现.
参数options(dict类型)
为图表指定一个字典属性
例如:设置一个线条类型的图表对象,代码为chart=workbook.add_chart({‘type’:’line’})
。
3.1.4close()
作用是关闭工作表文件,如workbook.close()
#!/usr/bin/python #---coding:-utf-8--- import xlsxwriter workbook = xlsxwriter.Workbook('demo2.xlsx') #创建一个Excel文件 worksheet = worksheet1 = workbook.add_worksheet() # Sheet1 worksheet2 = workbook.add_worksheet('Foglio2') # Foglio2 worksheet3 = workbook.add_worksheet('Data') # Data worksheet4 = workbook.add_worksheet() #Sheet4 workbook.close() #关闭Excel文件
3.2 Worksheet类
Worksheet类代表了一个Excel工作表,是XlsxWriter模块操作Excel内容最核心的一个类,例如将数据写入单元格或工作表格式布局等。Worksheet对象不能直接实例化,取而代之的是通过Workbook对象调用add_worksheet()
方法来创建。
workbook.add_worksheet()
Worksheet类提供了非常丰富的操作Excel内容的方法,其中几个常用的方法如下:
3.2.1 write(row,col,*args)
写普通数据到工作表的单元格。
参数row为行坐标,col为列坐标,坐标索引起始值为0;*args无名字参数为数据内容,可以为数字、公式、字符串或格式对象。为了简化不同数据类型的写入过程,write方法已经作为其他更加具体数据类型方法的别名,包括:
·write_string()写入字符串类型数据,如: worksheet.write_string(0, 0, 'Your text here'); ·write_number()写入数字类型数据,如: worksheet.write_number('A2', 2.3451); ·write_blank()写入空类型数据,如: worksheet.write('A2', None); ·write_formula()写入公式类型数据,如: worksheet.write_formula(2, 0, '=SUM(B1:B5)'); ·write_datetime()写入日期类型数据,如: worksheet.write_datetime(7, 0,datetime.datetime.strptime('2013-01-23', '%Y-%m-%d'),workbook.add_format({'num_format': 'yyyy-mm-dd'})); ·write_boolean()写入逻辑类型数据,如: worksheet.write_boolean(0, 0, True); ·write_url()写入超链接类型数据,如: worksheet.write_url('A1', 'ftp://www.python.org/')。
下列通过具体的示例来观察别名write方法与数据类型方法的对应关系,代码如下:
实例1:
#!/usr/bin/python #---coding:-utf-8--- import xlsxwriter workbook = xlsxwriter.Workbook('demo3.xlsx') #创建一个Excel文件 worksheet = worksheet = workbook.add_worksheet() # Sheet1 worksheet.write(0, 0, 'Hello') # write_string() worksheet.write(1, 0, 'World') # write_string() worksheet.write(2, 0, 2) # write_number() worksheet.write(3,0, 3.00001) # write_number() worksheet.write(4, 0, '=SIN(PI()/4)') # write_formula() worksheet.write(5, 0, '') # write_blank() worksheet.write(6, 0, None) # write_blank() workbook.close() #关闭Excel文件
输出:
实例2:循环写入
import xlsxwriter # Create a workbook and add a worksheet. workbook = xlsxwriter.Workbook('Expenses02.xlsx') worksheet = workbook.add_worksheet() # 添加用于突出显示单元格的粗体格式。 bold = workbook.add_format({'bold': True}) # 为显式钱的单元格添加数字格式。 money = workbook.add_format({'num_format': '$#,##0'}) # Write some data headers. worksheet.write('A1', 'Item', bold) worksheet.write('B1', 'Cost', bold) # Some data we want to write to the worksheet. expenses = ( ['Rent', 1000], ['Gas', 100], ['Food', 300], ['Gym', 50], ) # Start from the first cell below the headers. row = 1 col = 0 # Iterate over the data and write it out row by row. for item, cost in (expenses): worksheet.write(row, col, item) worksheet.write(row, col + 1, cost, money) row += 1 # Write a total using a formula. worksheet.write(row, 0, 'Total', bold) worksheet.write(row, 1, '=SUM(B2:B5)', money) workbook.close()
输出: