網站首頁 編程語言 正文
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) # 打印單元格的值
?總結
原文鏈接:https://blog.csdn.net/m0_58987515/article/details/123899353
相關推薦
- 2022-06-01 Python讀取csv文件做K-means分析詳情_python
- 2022-10-04 python?numpy庫中數組遍歷的方法_python
- 2022-09-17 Python?seaborn數據可視化繪圖(直方圖,密度圖,散點圖)_python
- 2022-11-14 C#中的委托、事件與接口
- 2022-09-29 關于React動態修改元素樣式的三種方式_React
- 2022-03-15 使用jib-maven-plugin插件打包docker鏡像上傳到私有鏡像庫,為了賬戶安全,需要設置
- 2022-05-25 String.isEmpty() 方法使用報空指針異常?那怎么才能更好的判斷String返回值為空的
- 2023-07-09 Go 數組與切片的區別
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支