xlsxwriter 生成 Excel 檔案

2021-10-19 15:26:57 字數 2933 閱讀 2377

xlrd 和 xlwt,以及 xlutils 足以滿足對 xls 檔案的讀、寫、追加功能。

但是辦公檔案的格式,不是 xls,還有 xlsx,還有我們很少見的 xlsm 等。

xlsx 是 xls 的公升級版,xls 是老版本的辦公軟體所支援的檔案格式,且劣勢也比較明顯,當檔案資料超過65536 行和 256 列,使用 xls 則會導致資料截斷。

xlsx 的支援則更好,同樣多的資料,xlsx 格式的檔案體積小,支援的操作更多,軟體開啟和動作執行的速度會更快。

本次介紹的庫是 xlsxwriter 和 openpyxl ,這兩個庫均支援操作 xlsx 檔案格式。

掌握 xlsx 的讀寫操作,也是大勢所趨。

首先是學習 xlsxwriter 庫,安裝命令:pip install xlsxwriter

第一步先導入庫,以及開啟乙個 xlsx 檔案:

import xlsxwriter, random

wb = xlsxwriter.workbook(

'xlsxwriter插入資料.xlsx'

)

xlsx 和 xls 的操作都是一致的,單個檔案,裡面可以新增多個 sheet。開啟檔案後,需要新建第乙個 sheet。

worksheet1 = wb.add_worksheet(

'**操作記錄'

)

headings =

['日期'

,'資料1'

,'資料2'

]worksheet1.write_row(

'a1'

,headings)

標題儲存在 headings 中,列**式,然後逐個寫入到 sheet 中。

但是這裡的寫入操作,不是行數 列數 資料格式的單個資料寫入操作,而是直接寫入一行或者一列。這裡用的是寫入 wtier_row,寫入一行,從 a1 開始,然後 a2 a3,一直往後寫。

接下來寫入資料,首先是創造資料,結構也是列**式,然後使用寫入列的操作,將資料整行的寫入。

data =[[

'2019-1'

,'2019-2'

,'2019-3'

,'2019-4'

,'2019-5'

,'2019-6'

,'2019-7'

,'2019-8'

,'2019-9'

,'2019-10'

,'2019-11'

,'2019-12',]

,[random.randint(1,

100)

for i in

range(12

)],[random.randint(1,

100)

for i in

range(12

)],]

worksheet1.write_column(

'a2'

,data[0]

)worksheet1.write_column(

'b2'

,data[1]

)worksheet1.write_column(

'c2'

,data[2]

)

這裡的資料使用了 random 庫隨機設定,所以第一塊**中,有 random 的匯入。

data 是列表,裡面有三個列表,分別是日期和兩類資料,結合頭部標題,寫入的資料,是三列,所以用的是write_column 函式。

寫完之後,直接關閉即可。

wb.close(

)

用 office 開啟檔案,如下圖:

資料寫入完畢。

資料寫好了,但是 excel 不僅僅只是存放資料的,也可以生成圖表。下面我們就學習下如何生成圖表。

圖表的資料,直接使用資料 1 和資料 2 的內容,並且前半部分,資料的寫入就是上面的**。

資料寫入之後,不關閉,然後繼續操作,生成乙個圖表資訊。

第一部分,折線圖表的定義:

chart_col = workbook.add_chart(

)

有了圖表物件,下面就是往裡加入資料。

這裡的資料有兩條,乙個是資料1,乙個是資料2,所以圖表新增資料的**如下:

chart_col.add_series(,}

)chart_col.add_series(,}

)

有兩條資料,所以新增了兩次。

資料有四項,資料名、具體值對應的橫座標 categories、具體值對應的縱座標 values、折線顏色,其中取值方式,直接是使用 sheet 的座標形式,例如 name 是 b1 和 b2,categories 都是 a2-a7,值分別是 b2-b7 和 c2-c7。

chart_col.set_title(

)chart_col.set_x_axis(

)chart_col.set_y_axis(

)#設定圖表表頭及座標軸

worksheet.insert_chart(

'd2'

,chart_col,

)#放置圖表位置

wb.close(

)

圖表的位置和大小,是根據左上角的起始**和 x 和 y 的偏移計算的。

**中是從 d2 做左上角起始,然後 x 和 y 分別便宜 25 和 10 個單位,得到了的最終大小。最後關閉 wb。

下面是最後的 excel 檔案樣式:

以上就是 xlsxwriter 的使用示例,有圖的加入,比較有趣。但是 xlsxwriter 只能建立新的檔案,不能追加和讀取。

xlsxwriter使用簡介

1.優點 一 功能比較強 相對而言,這是除excel自身之外功能最強的工具了。比如我就用到了它提供的 字型設定 前景色背景色 border設定 檢視縮放 zoom 單元格合併 autofilter freeze panes 公式 data validation 單元格注釋 行高和列寬設定等等。二 支...

xlsxwriter操作例子

import os import xlsxwriter workbook xlsxwriter.workbook 報告.xlsx worksheet workbook.add worksheet sheet1 worksheet.set column 0,12,12 cell format for ...

xlsxwriter編寫複雜表頭

作為一名資料分析小白,並且第一次寫blog,如果有錯,請多多指教。並且 可能太手工了,如果有更高效 簡易的寫法,請指點一下。先上圖,做成的效果大概就這個樣子,在excel中,如果要做成這種圖,很簡單,就是合併單元格的事。但在python裡面寫,就難倒我了。看完資料後,發現有兩個方向可以做成複雜表頭。...