一. Python操作Excel
常用工具:
數據處理是Python的一大應用場景,而Excel又是當前最流行的數據處理軟件。因此用Python進行數據處理時,很容易會和Excel打交道。得益於前人的辛勤勞作,Python處理Excel
已有很多現成的輪子,比如xlrd&xlwt&xlutils, XlsxWriter, OpenPyXL, 而在Windows平台上可以直接調用Microsoft Excel的開放接口,這些都是比較常用的工具,還有其他一些優秀的
工具這里就不一樣介紹,接下來通過表格展示各工具直接的特點。
以上可以根據需求的不同,選擇合適的工具,現在給大家主要介紹最常用的xlrd&xlwt&xlutils系統工具的使用
1. xlrd&xlwt&xlutils介紹
xlrd: 用於讀取Excel文件
xlwt: 用於寫入Excel文件
xlutils: 用於操作Excel文件的實用工具,比如復制,分割,篩選等
安裝: pip install 模塊名稱

xlwt: 寫入Excel
示例代碼如下:
#!/usr/bin/python # -*- coding: utf-8 -*- #寫入Excel操作 import xlwt #創建xls文件對象 wb = xlwt.Workbook() #新增兩個表單頁 sh1 = wb.add_sheet('成績') sh2 = wb.add_sheet('匯總') #然后按照位置來添加數據,第一個參數是行,第二個參數是列 #寫入第一個sheet sh1.write(0, 0, '姓名') sh1.write(0, 1, '專業') sh1.write(0, 2, '科目') sh1.write(0, 3, '成績') sh1.write(1, 0, '張三') sh1.write(1, 1, '信息與通信工程') sh1.write(1, 2, '數值分析') sh1.write(1, 3, 99) sh1.write(2, 0, '張三') sh1.write(2, 1, '信息與通信工程') sh1.write(2, 2, '數值分析') sh1.write(2, 3, 99) #寫入第二個sheet sh2.write(0, 0, '總分') sh2.write(1, 0, 200) #最后保存文件即可 wb.save('test.xls')
執行結果:

以上就是寫入Excel的代碼
xlrd: 讀取Excel
#!/usr/bin/python # -*- coding: utf-8 -*- #讀取Excel import xlrd #打開剛才寫入的test.xls文件 wb = xlrd.open_workbook('test.xls') #獲取打印sheet數量 print('sheet 數量', wb.nsheets) #獲取打印sheet名稱 print('sheet名稱', wb.sheet_names()) #根據sheet索引獲取內容 sh1 = wb.sheet_by_index(0) #或者,根據sheet名稱獲取內容 sh1 = wb.sheet_by_name('成績') #獲取打印該sheet的行數和列數 print('sheet %s %d 行 %d 列'%(sh1.name, sh1.nrows, sh1.ncols)) #獲取並打印某個單元格的值 print('第一行第二列的值是: %s'%(sh1.cell_value(0, 1))) #獲取整行或整列的值 rows = sh1.row_values(0) #獲取第一行內容 cols = sh1.col_values(1) #獲取第二列內容 #打印獲取的行列值 print("第一行的值", rows) print("第二列的值", cols) #獲取單元格內容的數據類型 print('第二行第一列的值類型為:', sh1.cell(1, 0).ctype) #遍歷所有表單內容 for sh in wb.sheets(): for r in range(sh.nrows): #輸出指定行 print(sh.row(r))
執行結果:

我們可以獲取到單元格的類型(ctype), 上面我們讀取類型時獲取的是數字1,那么1表示什么類型呢,有都有什么類型呢?

xlrd: 修改Excel
上面說了寫入和讀取Excel內容,接下來我們就說更新修改Excel該如何操作,修改的時候就需要用到xlutils的方法。
#!/usr/bin/python # -*- coding: utf-8 -*- #修改Excel import xlrd from xlutils.copy import copy #打開Excel文件 readbook = xlrd.open_workbook('test.xls') #復制一份文件 wb = copy(readbook) #選取第一個表單 sh1 = wb.get_sheet(0) #進行新增寫入數據 sh1.write(2, 0, '王歡') sh1.write(2, 1, '計算機') sh1.write(2, 2, '機器學習') sh1.write(2, 3, 80) #選取第二個表單 sh2 = wb.get_sheet(1) #替換總成績數據 sh2.write(1, 0, 300) #保存 wb.save('test_back.xls')
從上面代碼有看出來,這里修改Excel是通過xlutils庫的copy方法將原來的Excel整個復制一份,然后在做修改,最后在保存


xlwt: 格式轉換操作
在平時我們會使用Excel時會對數據進行一下格式化,或者樣式設置,在這里把上面介紹寫入的代碼簡單修改下,使輸出的格式稍微改變一下,代碼如下
#!/usr/bin/python # -*- coding: utf-8 -*- #導入xlwt庫 import xlwt #設置寫入格式字體紅色加粗 styleBR = xlwt.easyxf('font: name Times New Roman, color-index red, bold on') #設置數字型格式為小數點后保留兩位 styleNum = xlwt.easyxf(num_format_str='#,##0.00') #設置日期型格式顯示為YYYY-MM-DD styleDate = xlwt.easyxf(num_format_str='YYYY-MM-DD') #創建xls文件對象 wb = xlwt.Workbook() #新增兩個表單頁 sh1 = wb.add_sheet('成績') sh2 = wb.add_sheet('匯總') #按照位置添加數據,第一個參數是行,第二個參數是列 sh1.write(0, 0, '姓名', styleBR) sh1.write(0, 1, '日期', styleBR) sh1.write(0, 2, '成績', styleBR) #插入數據 sh1.write(1, 0, '張三', ) sh1.write(1, 1, '2020-07-01', styleDate) sh1.write(1, 2, 80, styleNum) sh1.write(2, 0, '張三', ) sh1.write(2, 1, '2020-07-01', styleDate) sh1.write(2, 2, 80, styleNum) #設置單元格內容居中的格式 alignmnet = xlwt.Alignment() alignmnet.horz = xlwt.Alignment.HORZ_CENTER style = xlwt.XFStyle() style.alignment = alignmnet #合並A4,B4單元格,並將內容設置為居中 sh1.write_merge(3, 3, 0 , 1, '總分', style) #通過公式,計算C2 + C3單元格的和,然后寫入第四行第三列 sh1.write(3, 2, xlwt.Formula('C2+C3')) #對sheet2寫入數據 sh2.write(0, 0, '總分', styleBR) sh2.write(1, 0 ,199) #最后保存文件 wb.save('test2.xls')
執行結果:


可以看出,使用代碼我們可以對字體,顏色,對齊,合並等平時Excel的操作進行設置,也可以格式化日期和數字類型的數據。要想了解更多的功能操作可以參考官網
Python-excel官網:www.python-excel.org/
