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