Python3 進行讀取、修改和寫Excel表格(.xlsx檔案)的常用功能示例

COCO56發表於2018-11-23

讀取我一般用xlrd(僅支援讀),修改用openpyxl(支援讀寫改),寫用xlsxwriter(僅支援寫 )

xlrd安裝命令 pip install xlrd

openpyxl安裝命令 pip install openpyxl

xlsxwriter安裝命令 pip install xlsxwriter

(不多介紹,新手可以參考Ipython的安裝過程)

Win10中如何裝IPython?(其他Windows版本也通用)

https://blog.csdn.net/COCO56/article/details/81058483

下面是我經常用到的一些功能:

基礎功能:

xlrd

匯入庫,開啟test.xlsx,獲取該檔案的所有sheet名(呼叫的是函式,返回的是一個列表 )

import xlrd
workbook = xlrd.open_workbook('test.xlsx')
sheetnames = workbook.sheet_names()

通過名字遍歷每一個sheet,列印總行數和總列數以及第一行第一列的單元格的值(從0開始)

for sheetN in sheetnames:
            sheet = workbook.sheet_by_name(sheetN)
            print(sheet.nrows)
            print(sheet.ncols)
            print(sheet.cell(0,0).value)

 

openpyxl

載入一個已存在的檔案的例子(如果是需要新建的可以使用openpyxl.Workbook(‘hello.xlxs‘),不過單純新建的話建議用xlsxwriter)並列印Sheet_names

import openpyxl

wb = openpyxl.load_workbook('test.xlsx')

print(wb.get_sheet_names())

接著上面的程式碼,訪問第一個worksheet,獲取該sheet的最大行數和最大列數(此外還有:min_row:表格的最小,min_column:表格的最小列,rows:按行獲取單元格(Cell物件) - 生成器,columns:按列獲取單元格(Cell物件) - 生成器,values:按行獲取表格的內容(資料)  - 生成器)

ws = wb[wb.sheetnames[0]]
print(ws.max_row)
print(ws.max_column)

 列印第一行第一列的單元格的值(注意是從1開始,不是從0開始,另外 row=和column=可預設)

print(ws.cell(row=1, column=1).value)
print(ws.cell(1, 1).value)    #row=和column=可預設

修改第一行第一列的單元格的值為1並儲存(可以等全部修改完之後再儲存,不需要每次修改都儲存一下) 

ws.cell(1, 1).value = 1
wb.save('test.xlsx')

xlsxwriter

開啟一個xlsx檔案(如果開啟的檔案存在 ,則清空該檔案,如果檔案不存在,則新建)

新建一個Sheet(名字預設的話,預設從Sheet1開始,可以新增自己的sheet名字workbook.add_worksheet(‘TestSheet’))

修改該Sheet的第一行的第一列的元素為1(行號和列號預設從0開始)

最後關閉檔案

import xlsxwriter
workbook = xlsxwriter.Workbook('test2.xlsx')
worksheet = workbook.add_worksheet()
worksheet.write(0,0,1)
workbook.close()

進階功能:

openpyxl

1.openpyxl設定單元格大小(行高和列寬)

https://blog.csdn.net/COCO56/article/details/84590544

xlsxwriter

官方文件:https://xlsxwriter.readthedocs.io/

1.設定自動換行、水平居中和垂直居中

import xlsxwriter

wb = xlsxwriter.Workbook('test.xlsx')
cell_format_wrap = wb.add_format({'text_wrap':True})
cell_format_vcenter = wb.add_format({'valign':'vcenter'})
cell_format_center = wb.add_format({'align':'center'})
cell_format_vcenter_and_center = wb.add_format({'align':'center', 'valign':'vcenter'})
ws = wb.add_worksheet()
ws.write(0, 0, 'data', cell_format_wrap)

 

相關文章