PythonXlsxWriter業務流量週報表指令碼(轉載)
一、使用XlsxWriter模組生成Excel表格
安裝XlsxWriter模組
pip2.7 install xlsxwriter
官網:http://xlsxwriter.readthedocs.org/
常用方法說明:
Workbook(filename [ options ])用於建立一個workbook物件
建立一個Excel檔案
workbook = xlsxwriter.Workbook(`chart.xlsx`)
add_worksheet(sheetname)用於新增一個工作表,空號中可以指定工作表名稱,預設為Sheet1
建立一個工作表物件
worksheet = workbook.add_worksheet()
add_format([properties]) 用於建立一個新的格式物件,引數[properties]為指定一個格式屬性的字典如:
bold = workbook.add_format( { `bold` : True } )
也可以通過Format methods完成格式的設定如:
bold = workbook.add_format()
bold.set_bold( )
worksheet.write(row,column,`data`) 用於寫入資料到指定位置的單元格row,column,座標索引的起始位置為0
如果用座標表示位置的話比如(2,0) 就是 (A3);
這就是表示在A1位置寫入`hello`
worksheet.write( 0 , 0 `hello` )
set_row ( row,height,cell_format,options ) 用於設定行單元格的屬性,row為指定位置,height設定行高單位畫素,cell_format指定定義好的格式物件呼叫,options設定行hidden(隱藏)、level(組合分級)、collapsed(摺疊)操作示例如下:
設定第1行單元格高度為40畫素,並呼叫格式cell_format 。
worksheet.set_row( 0,40,cell_format )
隱藏第2行單元格
worksheet.set_row(1,None,None,{ `hidden`: True })
set_column(first_col,last_col,width,cell_format,options) 用於設定一列或多列單元格屬性
bold = workbook.add_format( { `bold` : True } )
設定0到1(即A到B)列單元格寬度為10畫素,並呼叫加粗格式。
worksheet.set_column( 0,1,bold )
設定C到D列單元格寬度為20畫素
worksheet.set_column( C:D,20 )
隱藏E到G列單元格
worksheet.set_column( E:G,None,None,{ `hidden` : 1} )
insert_image(row,col,image,[options]) 用於插入圖片到指定的單元格
插入圖片指定圖片超連結
worksheet.insert_image(`B5`,` img/he.jpg `,{`url`:`http://python.org`} )
add_chart(type:圖表型別) 用於建立圖表物件
圖表樣式:area面積樣式、bar條形樣式、column柱形樣式、line線條樣式、pie餅圖樣式、scatter散點樣式、stock股票樣式、radar雷達樣式;
建立一個column柱形圖表
chart = workbook.add_chart({ type,`column` })
在A5單元格插入圖表
worksheet.insert_chart( `A5`,chart )
chart.add_series( )用於新增一個資料系列到圖表
常用的三個選項:categories作為設定圖表類別標籤範圍,values為設定圖示資料範圍,line為設定圖表線條屬性。
chart.add_series({
`categories` : `=Sheet1!$A$1:$A$5`,
`values` : `=Sheet1!$B$1:$B$5`,
`line` : { `color` : `red` },
})
定製自動化業務流量報表週報
訂製網站5個頻道的流量報表週報,通過XlsxWriter模組將流量資料寫入Excel文件,同時自動計算各頻道周平均流量,再生成資料包表。
#!/usr/local/python27/bin/python2.7
#coding: utf-8
import
sys
reload``(sys)
sys.setdefaultencoding(```utf-8```) ``#用於解決windows轉linux出現的編碼問題
import
xlsxwriter
workbook ``=
xlsxwriter.Workbook(```chart.xlsx```)
worksheet ``=
workbook.add_worksheet()
#建立圖表物件,定義圖表型別。
chart ``=
workbook.add_chart({```type```:```column```})
title ``=
[```業務名稱```,```星期一```,```星期二```,```星期三```,```星期四```,```星期五```,```星期六```,```星期日```,```平均流量```]
buname ``=
[```業務官網```,```新聞中心```,```購物頻道```,```體育頻道```,```親子頻道```]
data ``=
[
[``150``,``152``,``158``,``149``,``155``,``145``,``148``],
[``89``,``88``,``95``,``93``,``98``,``100``,``99``],
[``201``,``200``,``198``,``175``,``170``,``198``,``195``],
[``75``,``77``,``78``,``78``,``74``,``70``,``79``],
[``88``,``85``,``87``,``90``,``93``,``88``,``84``],
]
format
=
workbook.add_format() ``#定義格式,用於在部分單元格呼叫
format``.set_border(``1``)
format_title ``=
workbook.add_format()
format_title.set_border(``1``)
format_title.set_bg_color(```#cccccc```)
format_ave ``=
workbook.add_format()
format_ave.set_border(``1``)
format_ave.set_num_format(```0.00```)
#使用行寫入第一行業務名稱及標題
worksheet.write_row(```A1```,title,format_title)
#使用列寫入從第一列的第二行開始寫入頻道標題
worksheet.write_column(```A2```,buname,``format``)
#從B2開始寫入資料項
worksheet.write_row(```B2```,data[``0``],``format``)
worksheet.write_row(```B3```,data[``1``],``format``)
worksheet.write_row(```B4```,data[``2``],``format``)
worksheet.write_row(```B5```,data[``3``],``format``)
worksheet.write_row(```B6```,data[``4``],``format``)
#定義圖表資料系列函式
def
chart_series(cur_row):
#這裡是在求周平均值,I當前行的資料 = B:H當前行的值相加再求平均
worksheet.write_formula(```I```+``cur_row, ```= AVERAGE(B```+``cur_row``+```:H```+``cur_row``+```)```,format_ave)
chart.add_series({
#這裡是在工作表Sheet1中指定該圖表類別的標籤範圍,從B1到H1,就是取了週一到週日。
`categories```: ```=Sheet1!$B$1:$H$1```,
#這裡是設定圖表資料的範圍,從B當前資料行到H當前資料行。
`values```: ```=Sheet1!$B$```+``cur_row``+```:$H$```+``cur_row,
`line`
: {```color```:```black```},
#引用了業務名稱為圖列項
`name`
: ```=Sheet1!$A$```+``cur_row,
})
for
row ``in
range``(``2``,``7``):
chart_series(``str``(row))
#定義圖表樣式,每一個值都是一個不一樣的樣式。
chart.set_style(``2``)
#定義圖表的大小
chart.set_size({```width```:``577``,```height```:``287``})
#設定圖表上方的大標題
chart.set_title({```name```:```業務流量週報圖```})
#設定圖表y軸的小標題
chart.set_y_axis({```name```:```Mb/s```})
#插入圖表到A8的位置
worksheet.insert_chart(```A8```,chart)
workbook.close()
|
相關文章
- [轉載]ubuntu中執行python指令碼UbuntuPython指令碼
- 用Tableau製作官網流量週報
- MySQL批量轉換表名為小寫(Python指令碼)MySqlPython指令碼
- Unity指令碼生命週期Unity指令碼
- 財務分析報表分享|現金流量表視覺化視覺化
- 轉載:linux下大資料人工智慧自動化指令碼定時任務模板Linux大資料人工智慧指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- Unity基礎-指令碼生命週期Unity指令碼
- 畢馬威:2020年“軟體即服務”(SaaS)的業務轉型報告(附下載)
- 【轉載】淘寶SPM流量跟蹤體系
- 自助報表是什麼東西?能不能利用自助報表把報表事務推給業務人員?
- Locust 任務指令碼初探指令碼
- 服務自啟指令碼指令碼
- Java位元組碼指令表Java
- shell指令碼報錯:[: missing `]‘指令碼
- 指令碼的動態載入指令碼
- 《轉載》Jenkins持續整合-自動化部署指令碼的實現《python》Jenkins指令碼Python
- 魔客學院:2018移動遊戲行業出海流量變現業務發展現狀洞察報告(附下載)遊戲行業
- DDD與資料事務指令碼指令碼
- python指令碼批次建立資料表Python指令碼
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- zabbix報警指令碼(wechat,email)指令碼AI
- sh指令碼執行報錯指令碼
- 填報指令碼之輕鬆搞定複雜表的資料入庫指令碼
- MP4 轉 TXT 專案與 M3U8 下載指令碼指令碼
- 提供財務等核心業務報表的BI軟體有哪些?
- [轉載]GIt命令一覽表Git
- 爆款自媒體帶貨指令碼,大V不外傳的流量密碼指令碼密碼
- 關係錶轉dooris 的java 指令碼Java指令碼
- 清理臨時表規範以及指令碼指令碼
- systemd 編寫服務管理指令碼指令碼
- Linu部署服務啟停指令碼指令碼
- 銀行IT行業深度報告:分散式,新週期(附下載)行業分散式
- Forrester:2020年Q4數字業務轉型服務報告REST
- shell指令碼企業巡檢指令碼
- 載入非同步指令碼的藝術非同步指令碼
- JS指令碼非同步載入淺析JS指令碼非同步
- mysql指令碼,新建表和理清表之間的聯絡MySql指令碼
- 玩轉報表超連結