Python第三方常用模塊openpyxl的簡單介紹

openpyxl

openpyxl模塊屬於第三方模塊,是一個在 python 中能夠處理 excel 文件的模塊,還有比較出名的是xlrd、xlwt 分別控制excel文件的讀寫,這倆個能夠兼容所有版本的文件。openpyxl 針對 excel 2003版本之前的兼容性可能不好 但是功能更加強大。

excel文件的版本及後綴
    2003版本之前 excel的文件後綴是xls
    2003版本之後 excel的文件後綴是xlsx、csv

創建文件

Workbook() —創建 excel 文件

使用 openpyxl 創建文件。隻需導入Workbook類

from openpyxl import Workbook
wb = Workbook()
# 一個 excel 文件創建成功

Workbook.create_sheet() —創建 excel 工作簿

Workbook.create_sheet() 可以創建自定義名稱的工作簿。括號裡的參數是工作簿名稱,還有一個參數是工作簿的位置,也可以不寫

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)  # 創建瞭一個用戶信息表並放在第一位,如下圖

Sheet 工作簿是自動生成的

可以創建多個工作簿,並且它們按順序排列。

Worksheet.title —給工作簿重命名

使用 Worksheet.title屬性更改表名稱

from openpyxl import Workbook

wb = Workbook()  # 創建 excel 文件
ws1 = wb.create_sheet('用戶信息表', 0)  # 創建工作簿用戶信息表放在第一位
ws2 = wb.create_sheet('bank_info')  # 創建工作簿bank_info
ws1.title = 'user_info'  # 更改工作簿用戶信息表的名稱
'''用代碼保存一下後,如下圖所示'''

用戶信息表 被改名成 user_info

ws.sheet_properties.tabColor = " " 修改標題背景

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
ws1.sheet_properties.tabColor = 'FF6666'  # 將標題背景改為指定RRGGBB顏色代碼
'''用代碼保存一下後,如下圖所示'''

變得更好看瞭…

Workbook.sheetname —查看 excel 所有工作簿

返回包含 excel 文件下所有工作簿名稱的列表

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
print(wb.sheetnames)

打印結果 ['用戶信息表', 'Sheet']

Workbook.copy_worksheet() —創建工作表的副本

Workbook.copy_worksheet()方法可以在單個工作簿中創建工作表的副本。 僅復制單元格(包括值、樣式、超鏈接和註釋)和某些工作表屬性(包括尺寸、格式和屬性)。不會復制所有其他工作簿/工作表屬性 – 例如圖像、圖表。

獲取修改數據

訪問一個單元格

在 excel 中可以通過位置找到裡面的內容,同樣使用代碼也能通過位置找到內容。

Worksheet[ ]

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
ws1['A1'] = 'XWenXiang'  # ws1['A1'] 代表的是該表中的 A1 位置,我們可以將數據直接賦值給它
'''用代碼保存一下後,如下圖所示'''

此時的 A1 被填入內容 XWenXiang

Worksheet.cell()

----'除瞭直接獲取位置還可以使用 Worksheet.cell()方法'-----
 
from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
ws1.cell(row=4, column=2, value=10)  

此方法是通過指定坐標的方式賦值,其中 row 參數代表行數, column 代表列數,value 是填入的數據。
'''用代碼保存一下後,如下圖所示'''

在第2列第4行的位置填入數字10

Worksheet.append()

Worksheet.append() 可以同時寫入多個數據。

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
ws1.append(['name', 'age', 'gender'])
ws1.append(['XWenXiang', '15', 'man'])  # 要用 [] 括起來
'''用代碼保存一下後,如下圖所示'''

批量寫入數據,重復數據還可以加一個循環寫入。

公式

模塊裡使用的公式和 excel 中的公式是一樣的

ws1['A6'] = '=sum(A4:A5)' # 對A4和A5進行求和並寫入到A6

訪問多個單元格

可以使用切片訪問單元格范圍

x = ws['A1':'C2']
x1 = ws['C']
x2 = ws['C:D']
x3 = ws[10]
x4 = ws[5:10]

Worksheet.values —獲取單元格值

from openpyxl import Workbook

wb = Workbook()
ws1 = wb.create_sheet('用戶信息表', 0)
ws1.append(['name', 'age', 'gender'])
ws1.append(['XWenXiang', '15', 'man'])

for row in ws1.values:
    print(row)

打印結果:
('name', 'age', 'gender')
('XWenXiang', '15', 'man')

保存文件

保存工作簿最簡單、最安全的方法是使用 對象的 Workbook.save() 方法 Workbook。

在前面的代碼示例都沒有將保存代碼加入。

wb = Workbook()
wb.save('balances.xlsx')  # balances.xlsx 是保存的路徑,也就是文件名。
編輯完要保存才行。

打開文件

openpyxl.load_workbook() —讀取 excel 文件

和 Workbook 寫入一樣,使用 openpyxl.load_workbook() 可以打開現有工作簿。

from openpyxl import load_workbook  # 導入 load_workbook 
wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)  # ex_a.xlsx是文件名
print(wb.sheetnames)  # 打印所有工作簿的名稱

讀取工作簿數據

方式一
	from openpyxl import load_workbook
	
	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
	ws = wb['用戶信息表']  # 拿到工作薄對象
	print(ws['A1'].value)  # 取出工作薄對象中 A1 位置的值

方式二
	from openpyxl import load_workbook
	
	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
	ws = wb['用戶信息表']
	print(ws.cell(row=2, column=1).value)  # 通過行與列的形式來取值
	
方式三(逐行讀取)
	from openpyxl import load_workbook
	
	wb = load_workbook('ex_a.xlsx', read_only=True, data_only=True)
	ws = wb['用戶信息表']
	for row in ws.rows:  # 獲取每一行的數據
	    for data in row:  # 獲取每一行中單元格的數據
	        print(data.value)  # 打印單元格的值

 總結

到此這篇關於Python第三方常用模塊openpyxl的文章就介紹到這瞭,更多相關Python openpyxl模塊介紹內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: