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()
|
相關文章
- oracle報表自動FTP指令碼OracleFTP指令碼
- 用 Python 寫指令碼傳送工作週報Python指令碼
- [ 轉載 ] HBASE啟動指令碼/Shell解析指令碼
- 轉貼:批量生成awr報告指令碼指令碼
- Oracle表結構轉換SqlSERVER表結構 指令碼OracleSQLServer指令碼
- 水晶報表官方例項下載:報表和應用程式 (轉)
- Unity指令碼生命週期Unity指令碼
- mysql 轉換表的儲存引擎指令碼MySql儲存引擎指令碼
- [轉載]ubuntu中執行python指令碼UbuntuPython指令碼
- 【轉載】linux自動分割槽指令碼Linux指令碼
- 根據快照產生statpack報表的Shell指令碼指令碼
- 業務系統表格調研指令碼指令碼
- UNIX系統高負載郵件報警指令碼負載指令碼
- linux_監控網路卡流量指令碼Linux指令碼
- Linux檢視網路流量的指令碼Linux指令碼
- 普通表自動轉化為按月分割槽表的指令碼指令碼
- HBase流量限制和表負載均衡剖析負載
- CE與歐盟指令(轉載)
- Unity基礎-指令碼生命週期Unity指令碼
- 網路卡流量監控指令碼,python實現指令碼Python
- linux網路流量實時監控指令碼Linux指令碼
- 通過shell指令碼生成資料統計資訊的報表指令碼
- 透過shell指令碼生成資料統計資訊的報表指令碼
- 資訊化再看基礎工作環境,業務憑證、業務臺賬、業務報表
- 重建重定位表指令碼指令碼
- 分析表的crontab指令碼指令碼
- MySQL批量轉換表名為小寫(Python指令碼)MySqlPython指令碼
- 建庫指令碼下載指令碼
- 非阻塞載入指令碼指令碼
- oracle報表相關指令碼Oracle指令碼
- 【轉載】監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 專案生命週期(轉載)
- Xtrabackup每週增量備份指令碼程式指令碼
- 指令碼範例(轉)指令碼
- 【TABLE】Oracle表資訊收集指令碼Oracle指令碼
- Java位元組碼指令表Java
- mysql按表備份指令碼MySql指令碼
- 指令碼建立表空間、使用者、表指令碼