python XlsxWriter模块execl文档生成详解(1)

简介: python XlsxWriter模块execl文档生成详解(1)

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文件

输出:

1832b220aa754cd18c504acc7686a560.png

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文件

1832b220aa754cd18c504acc7686a560.png

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文件

输出:

1832b220aa754cd18c504acc7686a560.png

实例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()

输出:

1832b220aa754cd18c504acc7686a560.png

相关文章
|
18天前
|
存储 开发者 Python
Python中的collections模块与UserDict:用户自定义字典详解
【4月更文挑战第2天】在Python中,`collections.UserDict`是用于创建自定义字典行为的基类,它提供了一个可扩展的接口。通过继承`UserDict`,可以轻松添加或修改字典功能,如在`__init__`和`__setitem__`等方法中插入自定义逻辑。使用`UserDict`有助于保持代码可读性和可维护性,而不是直接继承内置的`dict`。例如,可以创建一个`LoggingDict`类,在设置键值对时记录操作。这样,开发者可以根据具体需求定制字典行为,同时保持对字典内部管理的抽象。
|
19天前
|
存储 缓存 算法
Python中collections模块的deque双端队列:深入解析与应用
在Python的`collections`模块中,`deque`(双端队列)是一个线程安全、快速添加和删除元素的双端队列数据类型。它支持从队列的两端添加和弹出元素,提供了比列表更高的效率,特别是在处理大型数据集时。本文将详细解析`deque`的原理、使用方法以及它在各种场景中的应用。
|
1天前
|
测试技术 Python
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘
|
1天前
|
Serverless 开发者 Python
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
《Python 简易速速上手小册》第3章:Python 的函数和模块(2024 最新版)
28 1
|
3天前
|
Python
python学习-函数模块,数据结构,字符串和列表(下)
python学习-函数模块,数据结构,字符串和列表
25 0
|
3天前
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
05-python之函数-函数的定义/函数的参数/函数返回值/函数说明文档/函数的嵌套使用/函数变量的作用域
|
4天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
6天前
|
SQL 关系型数据库 数据库
Python中SQLite数据库操作详解:利用sqlite3模块
【4月更文挑战第13天】在Python编程中,SQLite数据库是一个轻量级的关系型数据库管理系统,它包含在一个单一的文件内,不需要一个单独的服务器进程或操作系统级别的配置。由于其简单易用和高效性,SQLite经常作为应用程序的本地数据库解决方案。Python的内置sqlite3模块提供了与SQLite数据库交互的接口,使得在Python中操作SQLite数据库变得非常容易。
|
11天前
|
索引 Python
「Python系列」Python operator模块、math模块
Python的`operator`模块提供了一系列内置的操作符函数,这些函数对应于Python语言中的内建操作符。使用`operator`模块可以使代码更加清晰和易读,同时也能提高性能,因为它通常比使用Python内建操作符更快。
27 0
|
16天前
|
数据采集 网络协议 API
python中其他网络相关的模块和库简介
【4月更文挑战第4天】Python网络编程有多个流行模块和库,如requests提供简洁的HTTP客户端API,支持多种HTTP方法和自动处理复杂功能;Scrapy是高效的网络爬虫框架,适用于数据挖掘和自动化测试;aiohttp基于asyncio的异步HTTP库,用于构建高性能Web应用;Twisted是事件驱动的网络引擎,支持多种协议和异步编程;Flask和Django分别是轻量级和全栈Web框架,方便构建不同规模的Web应用。这些工具使网络编程更简单和高效。