轉自:https://blog.csdn.net/qq_38830593/article/details/102870762
文章目錄
說明
碼雲地址:http://yumos.gitee.io/openpyxl3.0
本文檔是我在學習openpyxl
時期下載下載並按照自己的理解翻譯了一部分,文檔是完整的;翻譯的部分僅僅包括讀寫,后邊的圖表等高級的操作暫時沒用到,所以沒有翻譯.
0.簡介
Workbook
:指一個工作簿,也就是一個單獨的XLSX文件:Worksheet
:指一個sheet頁:sheetName
:sheet頁的名稱:row
和cell
:行 和 單元格:
1.安裝
# 使用pip安裝即可 pip install openpyxl
2.簡單使用
推薦讀文件的時候使用只讀
模式,速度會快很多;不建議使用可讀寫
模式操作xlsx文件,慢的很;讀和寫分開會好一些。
2.1 讀取xlsx
思路:
簡單示例:
from openpyxl import load_workbook # fileName 這里是指文件路徑 fileName = "工作簿.xlsx" # 以只讀模式打開工作簿 wb = load_workbook(filename = fileName,read_only = True) # sheetName 就是 sheet頁的名稱 sheetName = "Sheet1" # 通過 工作表名 獲取 工作表 ws = wb[sheetName] # 按行讀取 工作表的內容 for row in ws.rows: for cell in row: print(cell.value) # 獲取單元格內容
print(cell.column) # 獲取單元格的列號(數字值)
print(cell.row) # 獲取單元格的行號號(數字值)
2.2 保存xlsx
思路:
簡單示例:
from openpyxl import Workbook # 創建workbook對象,寫入模式 wb = Workbook(write_only=True) # 刪除默認創建的一個sheet頁 ws = wb['Sheet'] wb.remove(ws) # 給sheet頁命名 sheetName = "工作表1" # 1.創建sheet頁 ws = create_sheet(sheetName) # 構造 測試數據 row = ["A11","A12","A13"] # 2.向工作表中 按行添加數據 ws.append(row) # filePath 是指保存的 excel 文件路徑 filePath = "新工作簿.xlsx" # 3.保存xlsx wb.save(filePath)
3.主要方法介紹
創建工作簿
# 在內存里創建號工作表之后, 表內不包含任何 單元格. 當第一次 訪問它們的時候,才會被創建 # 創建在內存中,調用save方法才能保存在本地 wb = Workbook()
創建工作表
# sheet頁名稱為Mysheet ws = wb.create_sheet("Mysheet") # 在最前端插入 # ws = wb.create_sheet("Mysheet", 0)
設置sheet頁名稱
ws.title = "表名"
獲取工作表對象
# 通過表名獲取 ws = wb["表名"] # 獲取活動的工作表,這個工作表默認指向索引為0,除非你手動更改為其他的值。 否則你只能 使用該方法來獲取第一個工作表(worksheet) # ws = wb.active
打印工作表名稱
# ["Sheet1","Sheet2","Sheet3"] # 方法1 print(wb.sheetnames) # 方法2 for sheet in wb: print(sheet.title)
訪問一個單元格
# 訪問A列4行的單元格,不存在則創建 c = ws['A4'] # 還有Worksheet.cell()方法,賦值(4,1)值為10 d = ws.cell(row=4, column=1, value=10)
訪問多個單元格
# A1~C2 2行3列所有的單元格 cell_range = ws['A1':'C2']
遍歷行
# 使用 Worksheet.iter_rows() A1,B1,C1,A2,B2,C2 for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell)
遍歷列(只讀模式下不可用):
# 使用 Worksheet.iter_cols() A1,A2,B1,B2,C1,C2 for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): for cell in col: print(cell)
獲取所有工作行
# 按行為單位 rows = Worksheet.rows # row1,row2,row3,row4,...
獲取所有列:
# 按列為單位 cols = Worksheet.columns # col1,col2,col3,col4,...