xlwt:python的寫excel模塊


最近工作時碰到了將數據導出,生成一個excel表,對其中的部分數據進行統計,並給其中部分符合條件的數據添加對應的背景顏色的功能需求,於是乎,對Python中寫excel的模塊xlwt研究了一下,在工作過程中發現,想要實現數據統計的話,xlwt並沒有直接的公式,而是給了一個把內容以公式的格式寫入excel的方法,所以又對excel的公式什么的研究了一下,也算是終於實現了想要的功能,現把覺得用處比較大的記錄一下,以便以后用到的時候可以直接撿起來用。

xlwt的安裝

很簡單,可以直接使用pip安裝

pip install xlwt

xlwt的導入

很簡單,直接import即可

import xlwt

最簡單的例子(xltw使用的坐標和excel表的坐標不同,excel有兩種坐標表示方式,但都是從1開始,例如左上角第一個單元格為A1(字母為橫坐標,數字為縱坐標)或者R1C1(R1表示縱坐標,C1表示橫坐標),而xlwt模塊中,坐標的數字則是從0開始左上角第一個單元格的坐標為(0,0),其中的一個數字為縱坐標,第二個數字為橫坐標)

import xlwt
xls = xlwt.Workbook(encoding="utf-8") # 創建一個xls對象,用來保存對excel表的操作 sheet1 = xls.add_sheet('成績表', cell_overwrite_ok=True) # 給 xls 添加一張‘成績表’的表格 sheet1.write(0, 0, '學生姓名') # 在坐標為0,0的單元格內添加內容'學生姓名' sheet1.write(0, 1, '成績') # 在坐標為1,1的單元格內添加內容'成績'   sheet1.write(0, 2, '評語') # 在坐標為0,2的單元格內添加內容'評語' xls.save('測試表') # 將xls保存為'測試表'

即可生成如下圖如所示的excel表

 設置字體屬性

import xlwt
workbook = xlwt.Workbook(encoding = 'utf-8')
worksheet = workbook.add_sheet('測試表')
font = xlwt.Font()    #  創建一個font對象,用來保存對字體進行的操作
font.name = '微軟雅黑'    # 將字體設置為'微軟雅黑'
font.bold = True    # 設置字體加粗
font.underline = True    # 設置字體加下划線
font.italic = True    # 設置字體傾斜
style = xlwt.XFStyle()    # 創建一個style對象,用來保存excel的樣式
style.font = font    # 將字體信息保存到style對象中
worksheet.write(0, 0, '無字體格式')
worksheet.write(1, 0, '有字體格式', style)    # 在坐標為1,0的單元格內添加內容'有字體格式',並帶有字體屬性
workbook.save('測試表.xlsx')

生成如下圖如所示的excel表

 

設置背景圖案

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('測試表')
pattern = xlwt.Pattern()    # 創建一個pattern對象,用來保存單元格背景的樣式
pattern.pattern = 0x01    # 設置單元格的背景圖案樣式(0x01-0x12共18種樣式)
pattern.pattern_fore_colour = xlwt.Style.colour_map['yellow']    # 設置單元格的背景顏色
style = xlwt.XFStyle()
style.pattern = pattern    # 將背景顏色信息保存到styke對象中
worksheet.write(0, 0, '有背景顏色', style)    # 在坐標為0,0的單元格內添加內容'有背景',並帶有背景顏色
workbook.save('測試表.xlsx')

生成如下圖如所示的excel表

 

合並單元格

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('測試表')
worksheet.write_merge(0, 0, 0, 1, '合並兩列')    # 將坐標為0,0和0,1的兩列合並,並添加內容'合並兩列'
worksheet.write_merge(1, 2, 0, 0, '合並兩行')    # 將坐標為1,0和2,0的兩行合並,並添加內容'合並兩行'
worksheet.write_merge(3, 5, 0, 2, '合並三行三列')    # 將縱坐標為3-5橫坐標為0-2的三行三列合並,並添加內容'合並三行三列'
workbook.save('測試表.xlsx')

生成如下圖如所示的excel表

 

 設置單元格的列寬(xlwt中沒有專門的設置行高的方法,可通過設置單元格的字號調整行高)(xlwt中列寬的單位為默認字體(10號字)的0的寬度的1/256)

import xlwt
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('測試表')
first_col=sheet.col(0)    # 獲得測試表中橫坐標為0的列
first_col.width=256*20    # 將或的的列的寬設置為256*20個單位,即20個10號字的0的寬度
book.save('測試表.xlsx')

生成如下圖如所示的excel表

在單元格內插入公式

import xlwt
workbook = xlwt.Workbook()
worksheet = workbook.add_sheet('測試表')
worksheet.write(0, 0, 1)
worksheet.write(0, 1, 2)
worksheet.write(0, 2, xlwt.Formula('A1*B1'))    # 在坐標為0,2的單元格單元格內添加一個公式,公式內容為‘=A1*B1’,顯示的值為A1與B1兩單元格的值得積:2
worksheet.write(0, 3, xlwt.Formula('SUM(A1,B1)'))    # 在坐標為0,3的單元格單元格內添加一個公式,公式內容為‘=SUM(A1,B1)’,顯示的值為A1與B1兩單元格的值得和:3
workbook.save('測試表.xlsx')

生成如下圖如所示的excel表

另附部分excel公式(好吧,我承認是我在工作中用到的)

統計數量(COUNTIF(區域,條件))

例子1:統計1出現的次數

例子2:統計不是1的值出現的次數

乘積之和(SUMPRODUCT(數組1,數組2, ··· ···)):

例子:計算數組1和數組2的對應位置的數的乘積的和

條件求和(SUMIF(條件區域,判斷條件,運算區域)(若省略運算區域,則條件區域即是運算區域))

例子:在A1-A6范圍內值為1的單元格,在B1-B6范圍內對應的單元格的值的和

多條件求和(SUMIFS(運算區域,條件區域1,判斷條件1,條件區域2,判斷條件2,··· ···))

例子:在A1-A6范圍內值為1,在B1-B6范圍內值為1的單元格,在C1-C6范圍內對應的單元格的值的和

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM