xlsxwriter可能用过的人并不是很多,不过使用后就会感觉,他的功能让你叹服,除了可以按要求生成你所需要的excel外
还可以加上很形象的各种图,比如柱状图、饼图、折线图等。
xlsxwriter 基本用法,创建 xlsx 文件并添加数据
官方文档:http://xlsxwriter.readthedocs.org/
xlsxwriter 可以操作 xls 格式文件
注意:xlsxwriter 只能创建新文件,不可以修改原有文件。如果创建新文件时与原有文件同名,则会覆盖原有文件
Linux 下安装: sudo pip install XlsxWriter
Windows 下安装: pip install XlsxWriter
请看本人生成的:
这里包含了数据公式的计算,插入图片的连接,生成的图表,当然如果你还需要其他的功能,可以继续参考库的文档
下面把源代码贴出来,希望对大家在工作遇到类似的情况,可以直接拿去用。
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author:Eric.yue
import xlsxwriter
import random
from datetime import date
import collections
def xlwt_chart(xl_obj,table):
#生成柱状图
column_chart = xl_obj.add_chart({ 'type' : 'column' })
column_chart.add_series({
'name' : '=sheet1!$D$1' ,
'categories' : '=sheet1!$D$2:$D$7' ,
'values' : '=sheet1!$E$2:$E$7'
})
table.insert_chart( 'G2' ,column_chart)
#生成饼图
column_chart2 = xl_obj.add_chart({ 'type' : 'pie' })
column_chart2.add_series({
'name' : '=sheet1!$D$1' ,
'categories' : '=sheet1!$D$2:$D$7' ,
'values' : '=sheet1!$E$2:$E$7'
})
table.insert_chart( 'G20' , column_chart2)
def xlwt_run():
data_base = [ '0-50' , '50-60' , '60-70' , '70-80' , '80-90' , '90-100' ]
#生成一个有序的字典
chart_dict = collections.OrderedDict.fromkeys(data_base, 0 )
xl_obj = xlsxwriter.Workbook( 'chart.xlsx' )
table = xl_obj.add_worksheet( 'sheet1' )
table.write_string( 0 , 0 ,u '姓名' )
table.write_string( 0 , 1 ,u '成绩' )
table.write_string( 0 , 2 ,u '日期' )
table.merge_range( 'D1:E1' , u '成绩分布' )
table.set_column( 'C:E' , 15 )
#定义格式
date_format = xl_obj.add_format({ 'num_format' : 'yyyy-mm-dd' })
color_format = xl_obj.add_format({ 'color' : 'red' })
font_format = xl_obj.add_format({ 'font_color' : 'green' , 'bold' : True })
mm = 1
for i in xrange ( 1 , 40 ):
name = 'name_%d' % i
score = random.randint( 30 , 100 )
if score < = 50 :
chart_dict[ '0-50' ] + = 1
elif score> 50 and score< = 60 :
chart_dict[ '50-60' ] + = 1
elif score> 60 and score< = 70 :
chart_dict[ '60-70' ] + = 1
elif score> 70 and score< = 80 :
chart_dict[ '70-80' ] + = 1
elif score> 80 and score< = 90 :
chart_dict[ '80-90' ] + = 1
else :
chart_dict[ '90-100' ] + = 1
if score > 60 :
table.write_string(i, 0 , name)
table.write_number(i, 1 , score)
else :
table.write_string(i, 0 , name, color_format)
table.write_number(i, 1 , score, color_format)
table.write_datetime(i, 2 ,date.today(), date_format)
mm = mm + 1
#生成图表数据
row = 1
for k,v in chart_dict.items():
table.write_string(row, 3 , k, font_format)
table.write_number(row, 4 , v, font_format)
row = row + 1
xlwt_chart(xl_obj,table)
#使用公式
table.write_formula(mm, 1 , '=AVERAGE(B2:B40)' )
#插入带链接的图片
table.insert_image( 'D20' ,r '/home/mywork/pythonchina/cto51_log/bd_logo12.png' ,{ 'url' : 'https://www.baidu.com' })
#关闭excel句柄
xl_obj.close()
if __name__ = = '__main__' :
xlwt_run()
|
没有使用类写,只是即兴而作。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:http://www.cnblogs.com/gide/p/8575249.html