python XlsxWriter編寫Excel文件

介紹

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()

參考

XlsxWriter

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容