介紹
XlsxWriter是一個Python模塊,用于以Excel 2007+ XLSX文件格式編寫文件。
它可以用于將文本,數(shù)字和公式寫入多個工作表,并且支持諸如格式設(shè)置,圖像,圖表,頁面設(shè)置,自動過濾器,條件格式設(shè)置等功能。
但是 XlsxWriter只能創(chuàng)建新文件。它無法讀取或修改現(xiàn)有文件。
安裝XlsxWriter
pip install XlsxWriter
創(chuàng)建XLSX文件
import xlsxwriter
# Create a workbook and add a worksheet.
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
worksheet = workbook.add_worksheet()
# Some data we want to write to the worksheet.
expenses = (
['Rent', 1000],
['Gas', 100],
['Food', 300],
['Gym', 50],
)
# Start from the first cell. Rows and columns are zero indexed.
row = 0
col = 0
# Iterate over the data and write it out row by row.
for item, cost in (expenses):
worksheet.write(row, col, item)
worksheet.write(row, col + 1, cost)
row += 1
# Write a total using a formula.
worksheet.write(row, 0, 'Total')
worksheet.write(row, 1, '=SUM(B1:B4)')
workbook.close()
將獲得一個如下所示的電子表格:

- Workbook 接受一個非可選參數(shù),即我們要創(chuàng)建的文件名:
workbook = xlsxwriter.Workbook('Expenses01.xlsx')
- add_worksheet()方法使用工作簿對象添加新的工作表 :
worksheet2 = workbook.add_worksheet('Data') # 名為Data工作表.
- write()方法寫入數(shù)據(jù):
worksheet.write(row, col, some_data)
- close()方法關(guān)閉Excel文件:
workbook.close()
將格式添加到XLSX文件
1. 使用對象接口
# Add a bold format to use to highlight cells.
cell_format = workbook.add_format()
cell_format.set_bold()
cell_format.set_font_color('red')
# Write some data headers.
worksheet.write('A1', 'Item', cell_format)
2. 將屬性設(shè)置為構(gòu)造函數(shù)中鍵/值對的字典
# Add a bold format to use to highlight cells.
cell_format = workbook.add_format({'bold': True, 'font_color': 'red'})
# Write some data headers.
worksheet.write('A1', 'Item', cell_format)
需要注意的是:
XlsxWriter電子表格中的每種唯一單元格格式都必須具有一個對應的Format對象。不能將Format與write()方法一起使用,然后重新定義它以供以后使用。這是因為格式不是以當前狀態(tài)而是以最終狀態(tài)應用于單元格??紤]以下示例:
cell_format = workbook.add_format({'bold': True, 'font_color': 'red'})
worksheet.write('A1', 'Cell A1', cell_format)
# Later...
cell_format.set_font_color('green')
worksheet.write('B1', 'Cell B1', cell_format)
單元格A1分配了一種格式,該格式最初將字體設(shè)置為紅色。但是,顏色隨后設(shè)置為綠色。當Excel顯示單元格A1時,它將顯示格式的最終??狀態(tài),在這種情況下將為綠色。
將不同類型的數(shù)據(jù)寫入XLSX文件
Excel通常以不同的方式對用戶透明地處理不同類型的輸入數(shù)據(jù),例如字符串和數(shù)字。XlsxWriter嘗試在工作表中對此進行模擬。write()通過將Python數(shù)據(jù)類型映射到Excel支持的類型的方法。
- write_string()
- write_number()
- write_blank()
- write_formula()
- write_datetime()
- write_boolean()
- write_url()
worksheet.write_string (row, col, item )
worksheet.write_datetime(row, col + 1, date, date_format )
worksheet.write_number (row, col + 2, cost, money_format)
爬蟲中的數(shù)據(jù)存儲
def save_to_xlsx(filename, data):
# data = [ {'key1': 'value1', 'key2', 'value2'}, {}, {}]
workbook = xlsxwriter.Workbook(filename)
worksheet = workbook.add_worksheet()
bg_format = workbook.add_format()
bg_format.set_pattern(1)
# 寫入頭
fieldnames = data[0].keys()
for col, fieldname in enumerate(fieldnames):
worksheet.write(0, col, fieldname)
for row, items in enumerate(data):
real_row = row + 1
for col, (key, value) in enumerate(items.items()):
worksheet.write_string(real_row, col, value)
workbook.close()