使用python建立excel表格 --- XlsxWriter模板详解

前言html

       最近在研究自动化巡检发邮件。由于是须要展示给领导看的,逼格固然得高,因此在邮件展示的地方须要用到excel模板,在网上查了下XlsxWriter的模板,发现仍是挺强大的一个东西,能实现我所须要的高逼格:python

       首先,XlsxWriter支持足够多的样式图表,另外还支持函数,等各类DIY姿式。不足地方在于只能建立excel,没法去修改读取,只能是建立!ide

   


1、建立一个表格函数

      从输出一个Hello world开始:字体

    


import xlsxwriter                                    #导入模板
workbook = xlsxwriter.Workbook('hello.xlsx')         #建立一个名为 hello.xlsx 赋值给workbook
worksheet = workbook.add_worksheet()                 #建立一个默认工做簿 赋值给worksheet
                                                     #工做簿也支持命名,
                                                     #如:workbook.add_worksheet('hello')
                                                     
worksheet.write('A1', 'Hello world')                 #使用工做簿在 A1地方 写入Hello world
workbook.close()                                     #关闭工做簿

  以上代码,最后一步关闭工做簿尤其重要,不然会出现报错。url


 批量写入表格spa

 官网给出了一段批量写入的代码,思路是这样:翻译

import xlsxwriter
workbook = xlsxwriter.Workbook('Expenses01.xlsx') 
worksheet = workbook.add_worksheet() 

#须要写入的数据
 expenses = (     ['Rent',1000],       
                  ['Gas',  100],
                  ['Food', 300], 
                  ['Gym',   50],
)

#行跟列的初始位置
row = 0
col = 0

#.write方法  write(行,列,写入的内容,样式)
for item,cost in (expenses):
    worksheet.write(row,col,item)        #在第一列的地方写入item
    worksheet.write(row,col+1,cost)      #在第二列的地方写入cost
    row + 1                              #每次循环行数发生改变
    
worksheet.write(row,0,'Total')           
worksheet.write(row,1,'=SUM(B1:B4)')     #写入公式

运行结果:excel

_p_w_picpaths/tutorial01.png


2、表格样式code

  东西虽然写出来了,可是光秃秃的,什么都没有,负分,滚回马桶!使用样式装饰一下吧!

  表格样式支持:字体、颜色、模式、边框、数字格式等。

  表格样式须要用到.add_format方法

  你能够直接将其封装成一个类:

ItemStyle = workbook.add_format({
        'font_size':10,                 #字体大小
        'bold':True,                   #是否粗体
        'bg_color':'#101010',              #表格背景颜色
        'font_color':'#FEFEFE',             #字体颜色
        'align':'center',                #居中对齐
        'top':2,                     #上边框 
                                                         #后面参数是线条宽度
        'left':2,                    #左边框
        'right':2,                    #右边框
        'bottom':2                    #底边框
})

  你能够能够直接调用方法,像这样:

ItemStyle.set_font_size(10)
ItemStyle.set_bold()
ItemStyle.set_bg_color('#101010')
ItemStyle.set_font_color('#FEFEFE')
ItemStyle.set_align('center')
ItemStyle.set_align('vcenter')
ItemStyle.set_bottom(2)
ItemStyle.set_top(2)
ItemStyle.set_left(2)
ItemStyle.set_right(2)

 两个姿式都是能够的,只要你喜欢。



 固然,样式所支持的仍是不少不少不少的,这里没办法一一列举,附上官网表:http://xlsxwriter.readthedocs.io/format.html  

 大体翻译一下:




类别 描述 属性 方法名
字体 字体 font_name set_font_name()

字体大小 font_size

set_font_size()


字体颜色 font_color set_font_color()

加粗 bold set_bold()

斜体 italic

set_italic()


下划线 underline set_underline()

删除线 font_strikeout set_font_strikeout()

上标/下标 font_script set_font_script()
数字 数字格式 num_format set_num_format()
保护 表格锁定 locked set_locked()

隐藏公式 hidden set_hidden()
对齐 水平对齐 align set_align()

垂直对齐 valign

set_align()


旋转 rotation set_rotation()

文本包装 text_wrap set_text_warp()

底端对齐 text_justlast set_text_justlast()

中心对齐 center_across set_center_across

缩进 indent set_indent()

缩小填充 shrink set_shrink()
模式
表格模式
pattern set_pattern()

背景颜色 bg_color set_bg_color()

前景颜色 fg_color set_fg_color()
边框 表格边框 border

set_border()


底部边框 bottom set_bottom()

上边框 top set_top()

右边框 right set_right()

边框颜色 border_color set_border_color()

底部颜色 bottom_color set_bottom_color()

顶部颜色 top_color set_top_color()

左边颜色 left_color set_left_color()

右边颜色 right_color set_right_color()



spacer.gif3、插入图表

  图表类型支持以下   

  • 区块 :建立一个区块(填充线)样式表。

  • bar :建立一个bar风格(直方图)图。

  • 柱型 :建立一个列图表(柱状图)。

  • 行 :建立一个横行图表。

  • 圆 :建立一个圆的图表。

  • 圈 :建立一个圈同样的图表。

  • 散射 :建立一个散点图风格。

  • 股票 :建立一个股票样式表。

  • 雷达 :建立一个雷达样式表

 每一个一个类型都能细分一个子类型:


area
    stacked
    percent_stacked

bar
    stacked
    percent_stacked

column
    stacked
    percent_stacked

scatter
    straight_with_markers
    straight
    smooth_with_markers
    smooth

radar
    with_markers
    filled

如:建立一个叠加的柱型图:

workbook.add_chart({'type': 'column', 'subtype': 'stacked'})

 示例:插入一个柱型图

  插入图表须要用到.add_chartsheet()方法,以下:

ColumnChart = workbook.add_chart({'type':'column'})  #定义一个柱型图表 
ColumnChart.add_series({                             #定义样式
    'name':'Value',                                #目标值的名    
    'categories':'=Sheet1!$A$1:$D$1',              #item的名
    'values':    '=Sheet1!$A$2:$D$2',            #item的值
    'fill':    {'color':'#FF9900'},              #柱子的颜色
})
ColumnChart.set_x_axis({                             #定义x轴
    'name':'The Number of Column Chart',           #标题
    'name_font':{'size':10},                       #字体
})
ColumnChart.set_y_axis({                             #定义y轴
    'name':'Server indexes',                       #标题
    'name_font':{'size':14,'bold':True},           #字体样式
    'num_font':{'italic':True},                    #斜体
})
worksheet.insert_chart('A4',ColumnChart)             #将这个表格插入A4的地方

wKiom1cymzKQEqawAAExO9qekT8025.jpg


    示例:插入一个圆饼型图

MemChart = workbook.add_chart({'type':'pie'})    #定义一个圆饼型图表
MemChart.add_series({
    'categories':'=Sheet1!$A$20:$A$21',        #项目名
    'values':    '=Sheet1!$B$20:$B$21',      #值名
    'points':[
        {'fill':{'color':'#5ABAFE'}},        #第一个项目颜色
        {'fill':{'color':'#FE110E'}},        #第二个项目颜色
    ],
})
MemChart.set_title({'name':'Memory Usage'})      #设置标题
worksheet.insert_chart('A23',MemChart)           #插入图表

运行结果:
wKioL1cyoNuwaBOuAACqUSeVzfo184.jpg

   固然样式有至关多,上边写的只是一小部分,更多样式参考

 官网图表样式:http://xlsxwriter.readthedocs.io/chart.html

(未完待续)...

相关文章
相关标签/搜索