python模块之XlsxWriter 详解

Xlsx是python用来构造xlsx文件的模块,可以向excel2007+中写text,numbers,formulas 公式以及hyperlinks超链接。

可以完成xlsx文件的自动化构造,包括:

合并单元格,制作excel图表等功能:

1,Introduction:

xlsxWriter支持多种excle功能;与excel完美兼容;写大文件,速度快且只占用很小的内存空间

不支持读或者改现有的excel文件

2, Installing:

sudo pip install XlsxWriter;

sudo easy_install XlsxWriter;

或者源码安装:http://github.com/jmcnamara/XlsxWriter/archive/master.tar.gz

3,使用:

import xlsxwriter

workbook = xlsxwriter.Workbook(‘hello.xlsx‘) # 建立文件

worksheet = workbook.add_worksheet() # 建立sheet, 可以work.add_worksheet(‘employee‘)来指定sheet名,但中文名会报UnicodeDecodeErro的错误

worksheet.write(‘A1‘, ‘Hello world‘) # 向A1写入

workbook.close()

excel公式计算


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

# Some data we want to write to the worksheet.

expenses = (

    [‘Rent‘1000],

    [‘Gas‘,   100],

    [‘Food‘,  300],

    [‘Gym‘,    50],

)

# Start from the first cell. Rows and columns are zero indexed. 按标号写入是从0开始的,按绝对位置‘A1‘写入是从1开始的

row = 0

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)

    row += 1

# Write a total using a formula.

worksheet.write(row, 0‘Total‘)

worksheet.write(row, 1‘=SUM(B1:B4)‘)    # 调用excel的公式表达式

workbook.close()

excel自定义格式:

import xlsxwriter

 # 建文件及sheet.
 workbook = xlsxwriter.Workbook(‘Expenses02.xlsx‘)
 worksheet = workbook.add_worksheet()

 # Add a bold format to use to highlight cells. 设置粗体,默认是False
 bold = workbook.add_format({‘bold‘: True})

 # Add a number format for cells with money.  定义数字格式
 money = workbook.add_format({‘num_format‘: ‘$#,##0‘})

 # Write some data headers. 带自定义粗体blod格式写表头
 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)  # 带自定义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()

excel写入时间格式


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

from datetime import datetime

 import xlsxwriter

 # Create a workbook and add a worksheet.

 workbook = xlsxwriter.Workbook(‘Expenses03.xlsx‘)

 worksheet = workbook.add_worksheet()

 # Add a bold format to use to highlight cells.

 bold = workbook.add_format({‘bold‘1})

 # Add a number format for cells with money.

 money_format = workbook.add_format({‘num_format‘‘$#,##0‘})

 # Add an Excel date format.

 date_format = workbook.add_format({‘num_format‘‘mmmm d yyyy‘})

 # Adjust the column width.

 worksheet.set_column(1115)

 # Write some data headers.

 worksheet.write(‘A1‘‘Item‘, bold)

 worksheet.write(‘B1‘‘Date‘, bold)

 worksheet.write(‘C1‘‘Cost‘, bold)

 # Some data we want to write to the worksheet.

 expenses = (

     [‘Rent‘‘2013-01-13‘1000],

     [‘Gas‘,  ‘2013-01-14‘,  100],

     [‘Food‘‘2013-01-16‘,  300],

     [‘Gym‘,  ‘2013-01-20‘,   50],

 )

 # Start from the first cell below the headers.

 row = 1

 col = 0

 for item, date_str, cost in (expenses):

     # Convert the date string into a datetime object.

     date = datetime.strptime(date_str, "%Y-%m-%d")

     worksheet.write_string  (row, col,     item              )

     worksheet.write_datetime(row, col + 1, date, date_format )

     worksheet.write_number  (row, col + 2, cost, money_format)

     row += 1

 # Write a total using a formula.

 worksheet.write(row, 0‘Total‘, bold)

 worksheet.write(row, 2‘=SUM(C2:C5)‘, money_format)

 workbook.close()

@@@ write方法提供了python类型到excel类型的转换, XlsxWriter支持excel工作表最大1048576行记录,16384条列记录,超出可以选择再建新sheet


1

2

3

4

5

6

7

worksheet.write(00‘Hello‘)          # write_string()

worksheet.write(10‘World‘)          # write_string()

worksheet.write(202)                # write_number()

worksheet.write(303.00001)          # write_number()

worksheet.write(40‘=SIN(PI()/4)‘)   # write_formula()

worksheet.write(50, ‘‘)               # write_blank()

worksheet.write(60None)             # write_blank()

关于更多字符串、数字、颜色及位置等excel格式:http://xlsxwriter.readthedocs.io/format.html

4, 图标

这个是我比较关注的利用excel工具进行图标统计的功能

相比较python的matplotlib的画图模块,excel的图标更加漂亮灵活一些

Chart: Area, Bar, Column, Doughnut, Line, Pie, Scatter, Stock, Radar

workbook = xlswriter.Workbook(‘chart.xls‘)

worksheet = workbook.add_sheet(‘First_example‘)  # 普通工作表

建立Chart对象: chart = workbook.add_chart({type, ‘column‘})

将图插入到sheet中: worksheet.insert_chart(‘A7‘, chart)

或者可以建立图表工作表chartsheet

chartsheet = workbook.add_charsheet()

chartsheet.set_char(chart)

柱状图:


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

import xlsxwriter

workbook = xlsxwriter.Workbook(‘chart.xlsx‘)

worksheet = workbook.add_worksheet()

# Create a new Chart object.

chart = workbook.add_chart({‘type‘‘column‘})

# Write some data to add to plot on the chart.

data = [

    [12345],

    [246810],

    [3691215],

]

worksheet.write_column(‘A1‘, data[0])  # 按列插入

worksheet.write_column(‘B1‘, data[1])

worksheet.write_column(‘C1‘, data[2])

# Configure the chart. In simplest case we add one or more data series.

chart.add_series({‘values‘‘=Sheet1!$A$1:$A$5‘})

chart.add_series({‘values‘‘=Sheet1!$B$1:$B$5‘})

chart.add_series({‘values‘‘=Sheet1!$C$1:$C$5‘})

# Insert the chart into the worksheet.

worksheet.insert_chart(‘A7‘, chart)

workbook.close()

workbook.add_chart({‘type‘:‘column‘}) # 默认格式

workbook.add_chart({‘type‘:‘column‘, ‘substyle‘:‘percent_stacked‘})  # 按百分比展示

workbook.add_chart({‘type‘:‘column‘, ‘substyle‘:‘stacked‘})

其他类型chart也是这样:

				
时间: 2024-10-13 10:37:09

python模块之XlsxWriter 详解的相关文章

Python模块调用方式详解

Python模块调用方式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 原文地址:https://www.cnblogs.com/yinzhengjie/p/8586301.html

python模块的导入详解

一:一个小问题:什么是模块? 我的理解是:有通用功能的文件的集合. 二:为什么要使用模块? 我们通常为了使自己以前写的东西保存下来,会把东西写入文件中保存下来,必要时我们把这些文件当脚本去执行,也可以把他们当做模块导入其他的模块中,实现了功能的存放利用. 三:怎样导入自己的模块? 自定义demo模块: print('in demo.py')money=100def read(): print('in read',money)print(__name__) '''import demodef re

Python对Excel操作详解

  Python对Excel操作详解 文档摘要: 本文档主要介绍如何通过python对office excel进行读写操作,使用了xlrd.xlwt和xlutils模块.另外还演示了如何通过Tcl  tcom包对excel操作. 关键字: Python.Excel.xlrd.xlwt.xlutils.TCl.tcom     1 Python简介 Python是一种面向对象.直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务.

python的sorted排序详解

排序,在编程中经常遇到的算法,我也在几篇文章中介绍了一些关于排序的算法.有的高级语言内置了一些排序函数.本文讲述Python在这方面的工作.供使用python的程序员们参考,也让没有使用python的朋友了解python.领略一番"生命有限,请用Python"的含义. 内置函数sorted()/list.sort()的使用 简单应用 python对list有一个内置函数:sorted(),专门用于排序.举例: >>> a=[5,3,6,1,9,2] >>&

Python数据类型及其方法详解

Python数据类型及其方法详解 我们在学习编程语言的时候,都会遇到数据类型,这种看着很基础也不显眼的东西,却是很重要,本文介绍了python的数据类型,并就每种数据类型的方法作出了详细的描述,可供知识回顾. 一.整型和长整型 整型:数据是不包含小数部分的数值型数据,比如我们所说的1.2.3.4.122,其type为"int" 长整型:也是一种数字型数据,但是一般数字很大,其type为"long" 在python2中区分整型和长整型,在32位的机器上,取值范围是-2

angular-ngSanitize模块-$sanitize服务详解

本篇主要讲解angular中的$sanitize这个服务.此服务依赖于ngSanitize模块. 要学习这个服务,先要了解另一个指令: ng-bing-html. 顾名思义,ng-bind-html和ng-bind的区别就是,ng-bind把值作为字符串,和元素的内容进行绑定,但是ng-bind-html把值作为html,和元素的html进行绑定.相当于jq里面的.text()和.html(). 但是,出于安全考虑,如果我们直接使用ng-bind-html是会报错的,ng-bind-html后面

python里的splitlines详解

Python的split方法函数可以分割字符串成列表,默认是以空格作为分隔符sep来分割字符串. In [1]: s = "www jeapedu com" In [2]: print s.split() ['www', 'jeapedu', 'com'] 当然可以改变sep分割字符串为其他字符串. In [6]: t = "www.jeapedu.com" In [7]: print t.split(".") ['www', 'jeapedu'

angular-ngSanitize模块-linky过滤器详解

本篇主要讲解angular中的linky这个过滤器.此过滤器依赖于ngSanitize模块. linky能找出文本中的链接,然后把它转换成html链接.什么意思,就是说,一段文本里有一个链接,但是这个链接没有被a标签嵌套,linky能把它找出来,然后给它加上a标签并且给a链接添加正确的href属性,还可以设置打开的方式(_blank,_self,等...). 它查找链接是根据这些关键词来的: http/https/ftp/mailto/,或者就直接是一个email地址. 下面来看栗子: html

Apache重写模块:规则详解

1,开其重写模块: sudo a2enmod rewrite 2,配置为可重写: 打开 /etc/apache < Directory />  Options FollowSymLinks AllowOverride All < /Directory> 在项目目录下,新建 .htaccess文件,加入以下内容: <IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteBase /