Xlsx是python用來構造xlsx檔案的子產品,可以向excel2007+中寫text,numbers,formulas 公式以及hyperlinks超連結。
可以完成xlsx檔案的自動化構造,包括:
合并單元格,制作excel圖表等功能:

1,Introduction:
xlsxWriter支援多種excle功能;與excel完美相容;寫大檔案,速度快且隻占用很小的記憶體空間
不支援讀或者改現有的excel檔案
2, Installing:
sudo pip install XlsxWriter;
sudo easy_install XlsxWriter;
3,使用:
<code>import</code> <code>xlsxwriter</code>
<code>workbook </code><code>=</code> <code>xlsxwriter.Workbook(</code><code>'hello.xlsx'</code><code>) </code><code># 建立檔案</code>
<code>worksheet </code><code>=</code> <code>workbook.add_worksheet() </code><code># 建立sheet, 可以work.add_worksheet('employee')來指定sheet名,但中文名會報UnicodeDecodeErro的錯誤</code>
<code>worksheet.write(</code><code>'A1'</code><code>, </code><code>'Hello world'</code><code>) </code><code># 向A1寫入</code>
<code>workbook.close()</code>
excel公式計算
<code># Some data we want to write to the worksheet.</code>
<code>expenses </code><code>=</code> <code>(</code>
<code> </code><code>[</code><code>'Rent'</code><code>, </code><code>1000</code><code>],</code>
<code> </code><code>[</code><code>'Gas'</code><code>, </code><code>100</code><code>],</code>
<code> </code><code>[</code><code>'Food'</code><code>, </code><code>300</code><code>],</code>
<code> </code><code>[</code><code>'Gym'</code><code>, </code><code>50</code><code>],</code>
<code>)</code>
<code> </code>
<code># Start from the first cell. Rows and columns are zero indexed. 按标号寫入是從0開始的,按絕對位置'A1'寫入是從1開始的</code>
<code>row </code><code>=</code> <code>0</code>
<code>col </code><code>=</code> <code>0</code>
<code># Iterate over the data and write it out row by row.</code>
<code>for</code> <code>item, cost </code><code>in</code> <code>(expenses):</code>
<code> </code><code>worksheet.write(row, col, item)</code>
<code> </code><code>worksheet.write(row, col </code><code>+</code> <code>1</code><code>, cost)</code>
<code> </code><code>row </code><code>+</code><code>=</code> <code>1</code>
<code># Write a total using a formula.</code>
<code>worksheet.write(row, </code><code>0</code><code>, </code><code>'Total'</code><code>)</code>
<code>worksheet.write(row, </code><code>1</code><code>, </code><code>'=SUM(B1:B4)'</code><code>) </code><code># 調用excel的公式表達式</code>
excel自定義格式:
<code>import</code> <code>xlsxwriter </code><code># 建檔案及sheet.</code>
<code> </code><code>workbook </code><code>=</code> <code>xlsxwriter.Workbook(</code><code>'Expenses02.xlsx'</code><code>)</code>
<code> </code><code>worksheet </code><code>=</code> <code>workbook.add_worksheet() </code><code># Add a bold format to use to highlight cells. 設定粗體,預設是False</code>
<code> </code><code>bold </code><code>=</code> <code>workbook.add_format({</code><code>'bold'</code><code>: </code><code>True</code><code>}) </code><code># Add a number format for cells with money. 定義數字格式</code>
<code> </code><code>money </code><code>=</code> <code>workbook.add_format({</code><code>'num_format'</code><code>: </code><code>'$#,##0'</code><code>}) # Write some data headers. 帶自定義粗體blod格式寫表頭</code>
<code> </code><code>worksheet.write(</code><code>'A1'</code><code>, </code><code>'Item'</code><code>, bold)</code>
<code> </code><code>worksheet.write(</code><code>'B1'</code><code>, </code><code>'Cost'</code><code>, bold) </code><code># Some data we want to write to the worksheet.</code>
<code> </code><code>expenses </code><code>=</code> <code>(</code>
<code> </code><code>[</code><code>'Rent'</code><code>, </code><code>1000</code><code>],</code>
<code> </code><code>[</code><code>'Gas'</code><code>, </code><code>100</code><code>],</code>
<code> </code><code>[</code><code>'Food'</code><code>, </code><code>300</code><code>],</code>
<code> </code><code>[</code><code>'Gym'</code><code>, </code><code>50</code><code>],</code>
<code> </code><code>) </code><code># Start from the first cell below the headers.</code>
<code> </code><code>row </code><code>=</code> <code>1</code>
<code> </code><code>col </code><code>=</code> <code>0</code> <code># Iterate over the data and write it out row by row.</code>
<code> </code><code>for</code> <code>item, cost </code><code>in</code> <code>(expenses):</code>
<code> </code><code>worksheet.write(row, col, item) </code><code># 帶預設格式寫入</code>
<code> </code><code>worksheet.write(row, col </code><code>+</code> <code>1</code><code>, cost, money) </code><code># 帶自定義money格式寫入</code>
<code> </code><code>row </code><code>+</code><code>=</code> <code>1</code> <code># Write a total using a formula.</code>
<code> </code><code>worksheet.write(row, </code><code>0</code><code>, </code><code>'Total'</code><code>, bold)</code>
<code> </code><code>worksheet.write(row, </code><code>1</code><code>, </code><code>'=SUM(B2:B5)'</code><code>, money)</code>
<code> </code><code>workbook.close()</code>
excel寫入時間格式
<code>from</code> <code>datetime </code><code>import</code> <code>datetime</code>
<code> </code><code>import</code> <code>xlsxwriter</code>
<code> </code><code># Create a workbook and add a worksheet.</code>
<code> </code><code>workbook </code><code>=</code> <code>xlsxwriter.Workbook(</code><code>'Expenses03.xlsx'</code><code>)</code>
<code> </code><code>worksheet </code><code>=</code> <code>workbook.add_worksheet()</code>
<code> </code><code># Add a bold format to use to highlight cells.</code>
<code> </code><code>bold </code><code>=</code> <code>workbook.add_format({</code><code>'bold'</code><code>: </code><code>1</code><code>})</code>
<code> </code><code># Add a number format for cells with money.</code>
<code> </code><code>money_format </code><code>=</code> <code>workbook.add_format({</code><code>'num_format'</code><code>: </code><code>'$#,##0'</code><code>})</code>
<code> </code><code># Add an Excel date format.</code>
<code> </code><code>date_format </code><code>=</code> <code>workbook.add_format({</code><code>'num_format'</code><code>: </code><code>'mmmm d yyyy'</code><code>})</code>
<code> </code><code># Adjust the column width.</code>
<code> </code><code>worksheet.set_column(</code><code>1</code><code>, </code><code>1</code><code>, </code><code>15</code><code>)</code>
<code> </code><code># Write some data headers.</code>
<code> </code><code>worksheet.write(</code><code>'B1'</code><code>, </code><code>'Date'</code><code>, bold)</code>
<code> </code><code>worksheet.write(</code><code>'C1'</code><code>, </code><code>'Cost'</code><code>, bold)</code>
<code> </code><code># Some data we want to write to the worksheet.</code>
<code> </code><code>[</code><code>'Rent'</code><code>, </code><code>'2013-01-13'</code><code>, </code><code>1000</code><code>],</code>
<code> </code><code>[</code><code>'Gas'</code><code>, </code><code>'2013-01-14'</code><code>, </code><code>100</code><code>],</code>
<code> </code><code>[</code><code>'Food'</code><code>, </code><code>'2013-01-16'</code><code>, </code><code>300</code><code>],</code>
<code> </code><code>[</code><code>'Gym'</code><code>, </code><code>'2013-01-20'</code><code>, </code><code>50</code><code>],</code>
<code> </code><code>)</code>
<code> </code><code># Start from the first cell below the headers.</code>
<code> </code><code>col </code><code>=</code> <code>0</code>
<code> </code><code>for</code> <code>item, date_str, cost </code><code>in</code> <code>(expenses):</code>
<code> </code><code># Convert the date string into a datetime object.</code>
<code> </code><code>date </code><code>=</code> <code>datetime.strptime(date_str, </code><code>"%Y-%m-%d"</code><code>)</code>
<code> </code><code>worksheet.write_string (row, col, item )</code>
<code> </code><code>worksheet.write_datetime(row, col </code><code>+</code> <code>1</code><code>, date, date_format )</code>
<code> </code><code>worksheet.write_number (row, col </code><code>+</code> <code>2</code><code>, cost, money_format)</code>
<code> </code><code>row </code><code>+</code><code>=</code> <code>1</code>
<code> </code><code># Write a total using a formula.</code>
<code> </code><code>worksheet.write(row, </code><code>0</code><code>, </code><code>'Total'</code><code>, bold)</code>
<code> </code><code>worksheet.write(row, </code><code>2</code><code>, </code><code>'=SUM(C2:C5)'</code><code>, money_format)</code>
@@@ write方法提供了python類型到excel類型的轉換, XlsxWriter支援excel工作表最大1048576行記錄,16384條列記錄,超出可以選擇再建新sheet
<code>worksheet.write(</code><code>0</code><code>, </code><code>0</code><code>, </code><code>'Hello'</code><code>) </code><code># write_string()</code>
<code>worksheet.write(</code><code>1</code><code>, </code><code>0</code><code>, </code><code>'World'</code><code>) </code><code># write_string()</code>
<code>worksheet.write(</code><code>2</code><code>, </code><code>0</code><code>, </code><code>2</code><code>) </code><code># write_number()</code>
<code>worksheet.write(</code><code>3</code><code>, </code><code>0</code><code>, </code><code>3.00001</code><code>) </code><code># write_number()</code>
<code>worksheet.write(</code><code>4</code><code>, </code><code>0</code><code>, </code><code>'=SIN(PI()/4)'</code><code>) </code><code># write_formula()</code>
<code>worksheet.write(</code><code>5</code><code>, </code><code>0</code><code>, '') </code><code># write_blank()</code>
<code>worksheet.write(</code><code>6</code><code>, </code><code>0</code><code>, </code><code>None</code><code>) </code><code># write_blank()</code>
4, 圖示
這個是我比較關注的利用excel工具進行圖示統計的功能
相比較python的matplotlib的畫圖子產品,excel的圖示更加漂亮靈活一些
Chart: Area, Bar, Column, Doughnut, Line, Pie, Scatter, Stock, Radar
workbook = xlswriter.Workbook('chart.xls')
worksheet = workbook.add_sheet('First_example') # 普通工作表
建立Chart對象: chart = workbook.add_chart({type, 'column'})
将圖插入到sheet中: worksheet.insert_chart('A7', chart)
或者可以建立圖表工作表chartsheet
chartsheet = workbook.add_charsheet()
chartsheet.set_char(chart)
柱狀圖:
<code>workbook </code><code>=</code> <code>xlsxwriter.Workbook(</code><code>'chart.xlsx'</code><code>)</code>
<code>worksheet </code><code>=</code> <code>workbook.add_worksheet()</code>
<code># Create a new Chart object.</code>
<code>chart </code><code>=</code> <code>workbook.add_chart({</code><code>'type'</code><code>: </code><code>'column'</code><code>})</code>
<code># Write some data to add to plot on the chart.</code>
<code>data </code><code>=</code> <code>[</code>
<code> </code><code>[</code><code>1</code><code>, </code><code>2</code><code>, </code><code>3</code><code>, </code><code>4</code><code>, </code><code>5</code><code>],</code>
<code> </code><code>[</code><code>2</code><code>, </code><code>4</code><code>, </code><code>6</code><code>, </code><code>8</code><code>, </code><code>10</code><code>],</code>
<code> </code><code>[</code><code>3</code><code>, </code><code>6</code><code>, </code><code>9</code><code>, </code><code>12</code><code>, </code><code>15</code><code>],</code>
<code>]</code>
<code>worksheet.write_column(</code><code>'A1'</code><code>, data[</code><code>0</code><code>]) </code><code># 按列插入</code>
<code>worksheet.write_column(</code><code>'B1'</code><code>, data[</code><code>1</code><code>])</code>
<code>worksheet.write_column(</code><code>'C1'</code><code>, data[</code><code>2</code><code>])</code>
<code># Configure the chart. In simplest case we add one or more data series.</code>
<code>chart.add_series({</code><code>'values'</code><code>: </code><code>'=Sheet1!$A$1:$A$5'</code><code>})</code>
<code>chart.add_series({</code><code>'values'</code><code>: </code><code>'=Sheet1!$B$1:$B$5'</code><code>})</code>
<code>chart.add_series({</code><code>'values'</code><code>: </code><code>'=Sheet1!$C$1:$C$5'</code><code>})</code>
<code># Insert the chart into the worksheet.</code>
<code>worksheet.insert_chart(</code><code>'A7'</code><code>, chart)</code>
workbook.add_chart({'type':'column'}) # 預設格式
workbook.add_chart({'type':'column', 'substyle':'percent_stacked'}) # 按百分比展示
workbook.add_chart({'type':'column', 'substyle':'stacked'})
其他類型chart也是這樣:
本文轉自 326647452 51CTO部落格,原文連結:http://blog.51cto.com/svsky/1944131,如需轉載請自行聯系原作者