日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter

系統(tǒng) 1738 0

1.excel介紹

Excel是當今最流行的電子表格處理軟件,支持豐富的計算函數(shù)及 圖表,在系統(tǒng)運營方面廣泛用于運營數(shù)據(jù)報表,比如業(yè)務(wù)質(zhì)量、資源利 用、安全掃描等報表,同時也是應(yīng)用系統(tǒng)常見的文件導(dǎo)出格式,以便數(shù) 據(jù)使用人員做進一步加工處理。本節(jié)主要講述利用Python操作Excel的模 塊XlsxWriter(https://xlsxwriter.readthedocs.org),可以操作多個工作表 的文字、數(shù)字、公式、圖表等。XlsxWriter模塊具有以下功能: ·100%兼容的Excel XLSX文件,支持Excel 2003、Excel 2007等版 本; ·支持所有Excel單元格數(shù)據(jù)格式; ·單元格合并、批注、自動篩選、豐富多格式字符串等; ·支持工作表PNG、JPEG圖像,自定義圖表; ·內(nèi)存優(yōu)化模式支持寫入大文件?! ?

2.XlsxWriter模塊的安裝方法

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第1張圖片

3.一個簡單示例

下面通過一個簡單的功能演示示例,實現(xiàn)插入文字(中英字 符)、數(shù)字(求和計算)、圖片、單元格格式等,代碼如下:?

【/home/test/XlsxWriter/simple1.py】

?

            
              #
            
            
              _*_coding:utf-8_*_
            
            
              
#
            
            
              ****************************************************************#
            
            
              
#
            
            
               ScriptName: simple01.py
            
            
              
#
            
            
               Author: BenjaminYang
            
            
              
#
            
            
               Create Date: 2019-06-02 02:37
            
            
              
#
            
            
               Modify Author: BenjaminYang
            
            
              
#
            
            
               Modify Date: 2019-06-02 02:37
            
            
              
#
            
            
               Function: 
            
            
              
#
            
            
              ***************************************************************#
            
            
              #
            
            
              !/usr/bin/python
            
            
              import
            
            
               xlsxwriter
workbook
            
            =xlsxwriter.Workbook(
            
              '
            
            
              demo1.xlsx
            
            
              '
            
            ) 
            
              #
            
            
              創(chuàng)建一個Excel文件
            
            
worksheet=workbook.add_worksheet()  
            
              #
            
            
              創(chuàng)建一個工作表對象
            
            
worksheet.set_column(
            
              '
            
            
              A:A
            
            
              '
            
            ,20)  
            
              #
            
            
              設(shè)定第一列(A)寬度為20像素
            
            
bold=workbook.add_format({
            
              '
            
            
              bold
            
            
              '
            
            :True})   
            
              #
            
            
              定義一個加粗的格式對象
            
            
worksheet.write(
            
              '
            
            
              A1
            
            
              '
            
            ,
            
              '
            
            
              Hello
            
            
              '
            
            )  
            
              #
            
            
              A1單元格寫入'Hello'
            
            
worksheet.write(
            
              '
            
            
              A2
            
            
              '
            
            ,
            
              '
            
            
              World
            
            
              '
            
            ,bold)  
            
              #
            
            
              A2單元格寫入‘World’并引用加粗格式對象bold
            
            
worksheet.write(
            
              '
            
            
              B2
            
            
              '
            
            ,U
            
              '
            
            
              中文測試
            
            
              '
            
            ,bold)  
            
              #
            
            
              A2單元格寫入中文并引用加粗格式對象bold
            
            
worksheet.write(2,0,32)  
            
              #
            
            
              用行列表示法寫入數(shù)字32
            
            
worksheet.write(3,0,35.5) 
            
              #
            
            
              行列表示法的單元格下標以0作為起始值,'3,0'等價于'A3'
            
            
worksheet.write(4,0,
            
              '
            
            
              =SUM(A3:A4)
            
            
              '
            
            ) 
            
              #
            
            
              求A3:A4的和,并將結(jié)果寫入'4,0',即'A5'
            
            
worksheet.insert_image(
            
              '
            
            
              B5
            
            
              '
            
            ,
            
              '
            
            
              img/python.jpg
            
            
              '
            
            )  
            
              #
            
            
              在B5單元格插入圖片
            
            
workbook.close()  
            
              #
            
            
              關(guān)閉Excel文件
            
          

?

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第2張圖片

4.模塊常用方法說明

1.Workbook類

Workbook類定義:Workbook(filename[,options]),該類實現(xiàn)創(chuàng) 建一個XlsxWriter的Workbook對象。Workbook類代表整個電子表格文 件,并且存儲在磁盤上。參數(shù)filename(String類型)為創(chuàng)建的Excel文件 存儲路徑;參數(shù)options(Dict類型)為可選的Workbook參數(shù),一般作為 初始化工作表內(nèi)容格式,例如值為{'strings_to_numbers':True}表示使用 worksheet.write()方法時激活字符串轉(zhuǎn)換數(shù)字。 ·add_worksheet([sheetname])方法,作用是添加一個新的工作 表,參數(shù)sheetname(String類型)為可選的工作表名稱,默認為
Sheet1。例如,下面的代碼對應(yīng)的效果圖如圖3-2所示。

?

            
              #
            
            
              _*_coding:utf-8_*_
            
            
              
#
            
            
              ****************************************************************#
            
            
              
#
            
            
               ScriptName: simple02.py
            
            
              
#
            
            
               Author: BenjaminYang
            
            
              
#
            
            
               Create Date: 2019-06-02 02:58
            
            
              
#
            
            
               Modify Author: BenjaminYang
            
            
              
#
            
            
               Modify Date: 2019-06-02 02:58
            
            
              
#
            
            
               Function: 
            
            
              
#
            
            
              ***************************************************************#
            
            
              #
            
            
              !/usr/bin/python
            
            
              import
            
            
               xlsxwriter
workbook
            
            =xlsxwriter.Workbook(
            
              '
            
            
              demo2.xlsx
            
            
              '
            
            
              )
worksheet1
            
            =workbook.add_worksheet()  
            
              #
            
            
              sheet1
            
            
worksheet2=workbook.add_worksheet(
            
              '
            
            
              Foglio2
            
            
              '
            
            ) 
            
              #
            
            
              Foglio2
            
            
worksheet3=workbook.add_worksheet(
            
              '
            
            
              Data
            
            
              '
            
            )  
            
              #
            
            
              Data
            
            
worksheet4=workbook.add_worksheet()       
            
              #
            
            
              sheet4
            
            
workbook.close()
          

?

? python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第3張圖片

·add_format([properties])方法,作用是在工作表中創(chuàng)建一個新的 格式對象來格式化單元格。參數(shù)properties(dict類型)為指定一個格式 屬性的字典,例如設(shè)置一個加粗的格式對象, workbook.add_format({'bold':True})。通過Format methods(格式化 方法)也可以實現(xiàn)格式的設(shè)置,等價的設(shè)置加粗格式代碼如下:

            bold =
            
               workbook.add_format() 
bold.set_bold()
            
          

·add_chart(options)方法,作用是在工作表中創(chuàng)建一個圖表對 象,內(nèi)部是通過insert_chart()方法來實現(xiàn),參數(shù)options(dict類型)為 圖表指定一個字典屬性,例如設(shè)置一個線條類型的圖表對象,代碼為 chart=workbook.add_chart({'type':'line'})。

·close()方法,作用是關(guān)閉工作表文件,如workbook.close()。?

?

2.Worksheet類

Worksheet類代表了一個Excel工作表,是XlsxWriter模塊操作Excel
內(nèi)容最核心的一個類,例如將數(shù)據(jù)寫入單元格或工作表格式布局等。

Worksheet對象不能直接實例化,取而代之的是通過Workbook對象調(diào)用 add_worksheet()方法來創(chuàng)建。Worksheet類提供了非常豐富的操作 Excel內(nèi)容的方法,其中幾個常用的方法如下:

·write(row,col,*args)方法,作用是寫普通數(shù)據(jù)到工作表的單 元格,參數(shù)row為行坐標,col為列坐標,坐標索引起始值為0;*args無 名字參數(shù)為數(shù)據(jù)內(nèi)容,可以為數(shù)字、公式、字符串或格式對象。為了簡 化不同數(shù)據(jù)類型的寫入過程,write方法已經(jīng)作為其他更加具體數(shù)據(jù)類型 方法的別名,包括:

·write_string()寫入字符串類型數(shù)據(jù),如:

            worksheet.write_string(0, 0, 
            
              '
            
            
              Your text here
            
            
              '
            
            );
          

·write_number()寫入數(shù)字類型數(shù)據(jù),如:

            worksheet.write_number(
            
              '
            
            
              A2
            
            
              '
            
            , 2.3451);
          

·write_blank()寫入空類型數(shù)據(jù),如:

            worksheet.write(
            
              '
            
            
              A2
            
            
              '
            
            , None);
          

·write_formula()寫入公式類型數(shù)據(jù),如:

            worksheet.write_formula(2, 0, 
            
              '
            
            
              =SUM(B1:B5)
            
            
              '
            
            );
          

·write_datetime()寫入日期類型數(shù)據(jù),如:

            worksheet.write_datetime(7, 0,datetime.datetime.strptime(
            
              '
            
            
              2013-01-23
            
            
              '
            
              '
            
            
              %Y-%m-%d
            
            
              '
            
            ),workbook.add_format({
            
              '
            
            
              num_format
            
            
              '
            
              '
            
            
              yyyy-mm-dd
            
            
              '
            
            }));
          

·write_boolean()寫入邏輯類型數(shù)據(jù),如:

            worksheet.write_boolean(0, 0, True);
          

·write_url()寫入超鏈接類型數(shù)據(jù),如:

            worksheet.write_url(
            
              '
            
            
              A1
            
            
              '
            
              '
            
            
              ftp://www.python.org/
            
            
              '
            

下列通過具體的示例來觀察別名write方法與數(shù)據(jù)類型方法的對應(yīng) 關(guān)系,代碼如下:

            worksheet.write(0, 0, 
            
              '
            
            
              Hello
            
            
              '
            
              #
            
            
               write_string()
            
            
worksheet.write(1, 0, 
            
              '
            
            
              World
            
            
              '
            
              #
            
            
               write_string()
            
            
worksheet.write(2, 0, 2)                
            
              #
            
            
               write_number()
            
            
worksheet.write(3, 0, 3.00001)          
            
              #
            
            
               write_number() 
            
            
worksheet.write(4, 0, 
            
              '
            
            
              =SIN(PI()/4)
            
            
              '
            
              #
            
            
               write_formula()
            
            
worksheet.write(5, 0, 
            
              ''
            
              #
            
            
               write_blank()
            
            
worksheet.write(6, 0, None)             
            
              #
            
            
               write_blank()
            
          

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第4張圖片

?

·set_row(row,height,cell_format,options)方法,作用是設(shè)置 行單元格的屬性。參數(shù)row(int類型)指定行位置,起始下標為0;參數(shù) height(float類型)設(shè)置行高,單位像素;參數(shù)cell_format(format類 型)指定格式對象;參數(shù)options(dict類型)設(shè)置行hidden(隱藏)、 level(組合分級)、collapsed(折疊)。操作示例如下:

            worksheet.write(
            
              '
            
            
              A1
            
            
              '
            
              '
            
            
              Hello
            
            
              '
            
              #
            
            
              在A1單元格寫入'Hello'字符串 
            
            
cell_format = workbook.add_format({
            
              '
            
            
              bold
            
            
              '
            
            : True})    
            
              #
            
            
              定義一個加粗的格式對象 
            
            
worksheet.set_row(0, 40, cell_format)    
            
              #
            
            
              設(shè)置第1行單元格高度為40像素,且引用 加粗格式對象
            
            
worksheet.set_row(1, None, None, {
            
              '
            
            
              hidden
            
            
              '
            
            : True})    
            
              #
            
            
              隱藏第2行單元格
            
          

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第5張圖片

·set_column(first_col,last_col,width,cell_format,options)方 法,作用為設(shè)置一列或多列單元格屬性。參數(shù)first_col(int類型)指定 開始列位置,起始下標為0;參數(shù)last_col(int類型)指定結(jié)束列位置, 起始下標為0,可以設(shè)置成與first_col一樣;參數(shù)width(float類型)設(shè)置 列寬;參數(shù)cell_format(Format類型)指定格式對象;參數(shù)options(dict 類型)設(shè)置行hidden(隱藏)、level(組合分級)、collapsed(折 疊)。操作示例如下:

            worksheet.write(
            
              '
            
            
              A1
            
            
              '
            
            , 
            
              '
            
            
              Hello
            
            
              '
            
              #
            
            
              在A1單元格寫入'Hello'字符串
            
            
worksheet.write(
            
              '
            
            
              B1
            
            
              '
            
            , 
            
              '
            
            
              World
            
            
              '
            
              #
            
            
              在B1單元格寫入'World'字符串 
            
            
cell_format = workbook.add_format({
            
              '
            
            
              bold
            
            
              '
            
            : True})    
            
              #
            
            
              定義一個加粗的格式對象 
            
            
worksheet.set_column(0,1, 10,cell_format)
            
              #
            
            
              設(shè)置0到1即(A到B) 列單元格寬度為10像素,且引用加粗格式對象 
            
            
worksheet.set_column(
            
              '
            
            
              C:D
            
            
              '
            
            , 20)    
            
              #
            
            
              設(shè)置C到D列單元格寬度為20像素
            
            
worksheet.set_column(
            
              '
            
            
              E:G
            
            
              '
            
            , None, None, {
            
              '
            
            
              hidden
            
            
              '
            
            : 1})    
            
              #
            
            
              隱藏E到G列單 元格
            
          

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第6張圖片

·insert_image(row,col,image[,options])方法,作用是插入圖 片到指定單元格,支持PNG、JPEG、BMP等圖片格式。參數(shù)row為行坐 標,col為列坐標,坐標索引起始值為0;參數(shù)image(string類型)為圖 片路徑;參數(shù)options(dict類型)為可選參數(shù),作用是指定圖片的位 置、比例、鏈接URL等信息。操作示例如下:

            
              #
            
            
              在B5單元格插入python-logo.png圖片,圖片超級鏈接為http://python.org 
            
            
worksheet.insert_image(
            
              '
            
            
              B5
            
            
              '
            
            , 
            
              '
            
            
              img/python-logo.png
            
            
              '
            
            , {
            
              '
            
            
              url
            
            
              '
            
              '
            
            
              http://python.org
            
            
              '
            
            })
          

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第7張圖片

5.Chart類

Chart類實現(xiàn)在XlsxWriter模塊中圖表組件的基類,支持的圖表類型 包括面積、條形圖、柱形圖、折線圖、餅圖、散點圖、股票和雷達等,
一個圖表對象是通過Workbook(工作簿)的add_chart方法創(chuàng)建,通過 {type,'圖表類型'}字典參數(shù)指定圖表的類型,語句如下:

            chart = workbook.add_chart({type, 
            
              '
            
            
              column
            
            
              '
            
            })    
            
              #
            
            
              創(chuàng)建一個column(柱形)圖表
            
          

·area:創(chuàng)建一個面積樣式的圖表;

·bar:創(chuàng)建一個條形樣式的圖表;

·column:創(chuàng)建一個柱形樣式的圖表;

·line:創(chuàng)建一個線條樣式的圖表;

·pie:創(chuàng)建一個餅圖樣式的圖表;

·scatter:創(chuàng)建一個散點樣式的圖表;

·stock:創(chuàng)建一個股票樣式的圖表;

·radar:創(chuàng)建一個雷達樣式的圖表。

然后再通過Worksheet(工作表)的insert_chart()方法插入到指 定位置,語句如下:

            worksheet.insert_chart(
            
              '
            
            
              A7
            
            
              '
            
            , chart)    
            
              #
            
            
              在A7單元格插入圖表
            
          

下面介紹chart類的幾個常用方法。

·chart.add_series(options)方法,作用為添加一個數(shù)據(jù)系列到圖 表,參數(shù)options(dict類型)設(shè)置圖表系列選項的字典,操作示例如 下:

            
              chart.add_series({
                
            
            
              '
            
            
              categories
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$A$1:$A$5
            
            
              '
            
            
              ,
                
            
            
              '
            
            
              values
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$B$1:$B$5
            
            
              '
            
            
              ,
                
            
            
              '
            
            
              line
            
            
              '
            
            :{
            
              '
            
            
              color
            
            
              '
            
            :
            
              '
            
            
              red
            
            
              '
            
            
              }
})
            
          

add_series方法最常用的三個選項為categories、values、line,其中 categories作為是設(shè)置圖表類別標簽范圍;values為設(shè)置圖表數(shù)據(jù)范圍;
line為設(shè)

·其他常用方法及示例。

·set_x_axis(options)方法,設(shè)置圖表X軸選項,示例代碼如 下,效果圖如圖3-7所示。

置圖表線條屬性,包括顏色、寬度等。

            
              chart.set_x_axis({
             
            
            
              '
            
            
              name
            
            
              '
            
            :
            
              '
            
            
              Earnings per Quarter
            
            
              '
            
            ,    
            
              #
            
            
              設(shè)置X軸標題名稱
            
            
              '
            
            
              name_font
            
            
              '
            
            :{
            
              '
            
            
              size
            
            
              '
            
            :14,
            
              '
            
            
              bold
            
            
              '
            
            :True},  
            
              #
            
            
              設(shè)置X軸標題字體屬性 
            
            
              '
            
            
              num_font
            
            
              '
            
            :{
            
              '
            
            
              italic
            
            
              '
            
            :True }    
            
              #
            
            
              設(shè)置X軸數(shù)字字體屬性 
            
            
})
          

·set_size(options)方法,設(shè)置圖表大小,如 chart.set_size({'width':720,'height':576}),其中width為寬度, height為高度。?

·set_title(options)方法,設(shè)置圖表標題,如 chart.set_title({'name':'Year End Results'})

·set_style(style_id)方法,設(shè)置圖表樣式,style_id為不同數(shù)字 則代表不同樣式,如chart.set_style(37)

·set_table(options)方法,設(shè)置X軸為數(shù)據(jù)表格形式,如 chart.set_table()

整合

            
              #
            
            
              !/usr/bin/python
            
            
              import
            
            
               xlsxwriter
workbook
            
            =xlsxwriter.Workbook(
            
              '
            
            
              demo3.xlsx
            
            
              '
            
            
              )
worksheet
            
            =
            
              workbook.add_worksheet()
chart 
            
            = workbook.add_chart({
            
              '
            
            
              type
            
            
              '
            
            :
            
              '
            
            
              column
            
            
              '
            
            }) 
            
              #
            
            
              創(chuàng)建一個column(柱形圖表)
            
            
worksheet.insert_chart(
            
              '
            
            
              A7
            
            
              '
            
            ,chart)  
            
              #
            
            
              在A7單元格插入圖表
            
            
              
chart.add_series({
                
            
            
              '
            
            
              categories
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$A$1:$A$5
            
            
              '
            
            
              ,
                
            
            
              '
            
            
              values
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$B$1:$B$5
            
            
              '
            
            
              ,
                
            
            
              '
            
            
              line
            
            
              '
            
            :{
            
              '
            
            
              color
            
            
              '
            
            :
            
              '
            
            
              red
            
            
              '
            
            
              }
})
chart.set_x_axis({
             
            
            
              '
            
            
              name
            
            
              '
            
            :
            
              '
            
            
              Earnings per Quarter
            
            
              '
            
            ,    
            
              #
            
            
              設(shè)置X軸標題名稱
            
            
              '
            
            
              name_font
            
            
              '
            
            :{
            
              '
            
            
              size
            
            
              '
            
            :14,
            
              '
            
            
              bold
            
            
              '
            
            :True},  
            
              #
            
            
              設(shè)置X軸標題字體屬性 
            
            
              '
            
            
              num_font
            
            
              '
            
            :{
            
              '
            
            
              italic
            
            
              '
            
            :True }    
            
              #
            
            
              設(shè)置X軸數(shù)字字體屬性 
            
            
              })
chart.set_size({
            
            
              '
            
            
              width
            
            
              '
            
            :720,
            
              '
            
            
              height
            
            
              '
            
            :576
            
              })
chart.set_title({
            
            
              '
            
            
              name
            
            
              '
            
            :
            
              '
            
            
              Year End Results
            
            
              '
            
            
              })
chart.set_style(
            
            37
            
              )
workbook.close()
            
          

?

報錯:可能是版本原因需要做如下的操作

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第8張圖片

?#vi /usr/lib/python2.7/site-packages/xlsxwriter/vi __init__.py

            
              import
            
            
               sys
reload(sys)
sys.setdefaultencoding(
            
            
              "
            
            
              utf-8
            
            
              "
            
            )
          

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第9張圖片

執(zhí)行效果

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第10張圖片

?

6.定制自動化業(yè)務(wù)流量報表周報

本次實踐通過定制網(wǎng)站5個頻道的流量報表周報,通過XlsxWriter 模塊將流量數(shù)據(jù)寫入Excel文檔,同時自動計算各頻道周平均流量,再 生成數(shù)據(jù)圖表。具體是通過workbook.add_chart({'type':'column'})方 法指定圖表類型為柱形,使用write_row、write_column方法分別以行、 列方式寫入數(shù)據(jù),使用add_format()方法定制表頭、表體的顯示風 格,使用add_series()方法將數(shù)據(jù)添加到圖表,同時使用 chart.set_size、set_title、set_y_axis設(shè)置圖表的大小及標題屬性,最后通 過insert_chart方法將圖表插入工作表中。

【/home/test/XlsxWriter/simple4.py】

?

            
              #
            
            
              _*_coding:utf-8_*_
            
            
              
#
            
            
              ****************************************************************#
            
            
              
#
            
            
               ScriptName: simple04.py
            
            
              
#
            
            
               Author: BenjaminYang
            
            
              
#
            
            
               Create Date: 2019-06-02 05:17
            
            
              
#
            
            
               Modify Author: BenjaminYang
            
            
              
#
            
            
               Modify Date: 2019-06-02 05:17
            
            
              
#
            
            
               Function: 
            
            
              
#
            
            
              ***************************************************************#
            
            
              #
            
            
              !/usr/bin/python
            
            
              import
            
            
               xlsxwriter
workbook
            
            =xlsxwriter.Workbook(
            
              '
            
            
              chart.xlsx
            
            
              '
            
            )   
            
              #
            
            
              創(chuàng)建一個Excel文件 
            
            
worksheet=workbook.add_worksheet()    
            
              #
            
            
              創(chuàng)建一個工作表對象 
            
            
chart=workbook.add_chart({
            
              '
            
            
              type
            
            
              '
            
            :
            
              '
            
            
              column
            
            
              '
            
            })  
            
              #
            
            
              創(chuàng)建一個圖表對象 
            
            
              
#
            
            
              定義數(shù)據(jù)表頭列表 
            
            
title=[u
            
              '
            
            
              業(yè)務(wù)名稱
            
            
              '
            
            ,u
            
              '
            
            
              星期一
            
            
              '
            
            ,u
            
              '
            
            
              星期二
            
            
              '
            
            ,u
            
              '
            
            
              星期三
            
            
              '
            
            ,u
            
              '
            
            
              星期四
            
            
              '
            
            ,u
            
              '
            
            
              星期五
            
            
              '
            
            ,u
            
              '
            
            
              星期 六
            
            
              '
            
            ,u
            
              '
            
            
              星期日
            
            
              '
            
            ,u
            
              '
            
            
              平均流量
            
            
              '
            
            
              ]
buname
            
            =[u
            
              '
            
            
              業(yè)務(wù)官網(wǎng)
            
            
              '
            
            ,u
            
              '
            
            
              新聞中心
            
            
              '
            
            ,u
            
              '
            
            
              購物頻道
            
            
              '
            
            ,u
            
              '
            
            
              體育頻道
            
            
              '
            
            ,u
            
              '
            
            
              親子頻道
            
            
              '
            
            ] 
            
              #
            
            
              定義頻 道名稱
            
            
              
#
            
            
              定義5頻道一周7天流量數(shù)據(jù)列表 
            
            
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格式對象
            
            
format.set_border(1)     
            
              #
            
            
              定義format對象單元格邊框加粗(1像素)的格式 
            
            
format_title=workbook.add_format()  
            
              #
            
            
              定義format_title格式對象 
            
            
format_title.set_border(1)          
            
              #
            
            
              定義format_title對象單元格邊框加粗(1像素)的格式
            
            
format_title.set_bg_color(
            
              '
            
            
              #cccccc
            
            
              '
            
            )  
            
              #
            
            
              定義format_title對象單元格背景顏色為 #cccccc
            
            
format_title.set_align(
            
              '
            
            
              center
            
            
              '
            
            )      
            
              #
            
            
              定義format_title對象單元格居中對齊的格式
            
            
format_title.set_bold()                
            
              #
            
            
              定義format_title對象單元格內(nèi)容加粗的格式 
            
            
format_ave=workbook.add_format()       
            
              #
            
            
              定義format_ave格式對象 
            
            
format_ave.set_border(1)               
            
              #
            
            
              定義format_ave對象單元格邊框加粗(1像素)的格式 
            
            
format_ave.set_num_format(
            
              '
            
            
              0.00
            
            
              '
            
            )      
            
              #
            
            
              定義format_ave對象單元格數(shù)字類別顯示格式 
            
            
              
#
            
            
              下面分別以行或列寫入方式將標題、業(yè)務(wù)名稱、流量數(shù)據(jù)寫入起初單元格,同時引用不同格式對象 
            
            
worksheet.write_row(
            
              '
            
            
              A1
            
            
              '
            
            
              ,title,format_title)   #第一行標題
worksheet.write_column(
            
            
              '
            
            
              A2
            
            
              '
            
            
              ,buname,format)   #第一列從A2單元格開始對應(yīng)頻道 
worksheet.write_row(
            
            
              '
            
            
              B2
            
            
              '
            
            
              ,data[0],format)    #第二行從B2開始對應(yīng)data[0] 
worksheet.write_row(
            
            
              '
            
            
              B3
            
            
              '
            
            ,data[1
            
              ],format)    #第三行從B3開始對應(yīng)data[1]
worksheet.write_row(
            
            
              '
            
            
              B4
            
            
              '
            
            ,data[2
            
              ],format)    #第四行從B4開始對應(yīng)data[2]
worksheet.write_row(
            
            
              '
            
            
              B5
            
            
              '
            
            ,data[3
            
              ],format)    #第五行從B5開始對應(yīng)data[3]
worksheet.write_row(
            
            
              '
            
            
              B6
            
            
              '
            
            ,data[4
            
              ],format)    #第六行從B6開始對應(yīng)data[4]

            
            
              #
            
            
              定義圖表數(shù)據(jù)系列函數(shù)
            
            
              def
            
            
               chart_series(cur_row):
    worksheet.write_formula(
            
            
              '
            
            
              I
            
            
              '
            
            +
            
              cur_row,\
            
            
            
              '
            
            
              =AVERAGE(B
            
            
              '
            
            +cur_row+
            
              '
            
            
              :H
            
            
              '
            
            +cur_row+
            
              '
            
            
              )
            
            
              '
            
            ,format_ave) 
            
              #
            
            
              計算(AVERAGE 函數(shù))頻道周平均流量 
            
            
                  chart.add_series({
                
            
            
              '
            
            
              categories
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$B$1:$H$1
            
            
              '
            
            , 
            
              #
            
            
              將“星期一至星期日”作為圖表數(shù)據(jù) 標簽(X軸)
            
            
              '
            
            
              values
            
            
              '
            
            :
            
              '
            
            
              =Sheet1!$B$
            
            
              '
            
            +cur_row+
            
              '
            
            
              :$H$
            
            
              '
            
            +cur_row,  
            
              #
            
            
              頻道一周 所有數(shù)據(jù)作為數(shù)據(jù)區(qū)域 
            
            
              '
            
            
              line
            
            
              '
            
            :{
            
              '
            
            
              color
            
            
              '
            
            :
            
              '
            
            
              black
            
            
              '
            
            },  
            
              #
            
            
              線條顏色定義為black(黑色) 
            
            
              '
            
            
              name
            
            
              '
            
            :
            
              '
            
            
              Sheet1!$A$
            
            
              '
            
            +cur_row,   
            
              #
            
            
              引用業(yè)務(wù)名稱為圖例項
            
            
                              })

            
            
              for
            
             row 
            
              in
            
             range(2,7):   
            
              #
            
            
              數(shù)據(jù)域以第2~6行進行圖表數(shù)據(jù)系列函數(shù)調(diào)用
            
            
                  chart_series(str(row))


            
            
              #
            
            
              chart.set_table()    #設(shè)置X軸表格格式,本示例不啟用 
            
            
              
#
            
            
              chart.set_style(30)    #設(shè)置圖表樣式,本示例不啟用 
            
            
              
chart.set_size({
            
            
              '
            
            
              width
            
            
              '
            
            :577,
            
              '
            
            
              height
            
            
              '
            
            :287})  
            
              #
            
            
              設(shè)置圖表大小
            
            
chart.set_title({
            
              '
            
            
              name
            
            
              '
            
            :u
            
              '
            
            
              業(yè)務(wù)流量周報圖表
            
            
              '
            
            })  
            
              #
            
            
              設(shè)置圖表(上方)大標題 
            
            
chart.set_y_axis({
            
              '
            
            
              name
            
            
              '
            
            :
            
              '
            
            
              Mb/s
            
            
              '
            
            })       
            
              #
            
            
              設(shè)置y軸(左側(cè))小標題 
            
            
worksheet.insert_chart(
            
              '
            
            
              A8
            
            
              '
            
            ,chart)      
            
              #
            
            
              在A8單元格插入圖表 
            
            
workbook.close()    
            
              #
            
            
              關(guān)閉Excel文檔
            
          

?

python運維開發(fā)常用模塊(8)EXCEL操作模塊XlsxWriter_第11張圖片

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 万山特区| 房山区| 鸡泽县| 涟源市| 大兴区| 伊通| 娄烦县| 洪泽县| 分宜县| 唐河县| 和政县| 邻水| 竹溪县| 阜阳市| 且末县| 梅州市| 怀远县| 米泉市| 穆棱市| 壤塘县| 石楼县| 英德市| 会东县| 陵川县| 宜阳县| 合水县| 吉安县| 万源市| 叙永县| 津南区| 穆棱市| 阿鲁科尔沁旗| 乡宁县| 固镇县| 肃宁县| 西藏| 祁连县| 新建县| 兴国县| 新竹县| 六枝特区|