使用python建立excel表格 --- XlsxWriter模板詳解 ——轉載
前言 :轉載自:http://blog.51cto.com/maoyao/1772102
最近在研究自動化巡檢發郵件。因為是需要展現給領導看的,逼格當然得高,所以在郵件展現的地方需要用到excel模板,在網上查了下XlsxWriter的模板,發現還是挺強大的一個東西,能實現我所需要的高逼格:
首先,XlsxWriter支援足夠多的樣式、圖表,另外還支援函式,等各種DIY姿勢。不足地方在於只能建立excel,無法去修改讀取,只能是建立!
一、建立一個表格
從輸出一個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() #關閉工作簿
以上程式碼,最後一步關閉工作簿尤為重要,否則會出現報錯。
批量寫入表格
官網給出了一段批量寫入的程式碼,思路是這樣:
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)') #寫入公式
執行結果:
二、表格樣式
東西雖然寫出來了,但是光禿禿的,什麼都沒有,負分,滾回馬桶!使用樣式裝飾一下吧!
表格樣式支援:字型、顏色、模式、邊框、數字格式等。
表格樣式需要用到.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() |
三、插入圖表
圖表型別支援如下
-
區塊
:建立一個區塊(填充線)樣式表。 -
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的地方
示例:插入一個圓餅型圖
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) #插入圖表
當然樣式有相當多,上邊寫的只是一小部分,更多樣式參考
官網圖表樣式:http://xlsxwriter.readthedocs.io/chart.html
(未完待續)...