openpyxl 的基本操作 (辦公自動化)

GA17發表於2020-04-11

openpyxl簡介

openpyxl 是一個第三方庫,可以處理xlsx格式的Excel檔案,也就是 Excel 2003 以上版本的 Excel 檔案。
(2003 版本的可以使用 xlrd 和 xlwt 這兩個庫來讀取,但是我個人建議 xls 檔案還是用 pandas 來處理比較好。)

第一步是安裝 openpyxl 這個庫
在 cmd 輸入 pip install openpyxl -i https://pypi.doubanio.com/simple
(這裡筆者使用的是豆瓣源,下載速度相比不換國內源的會快很多, 如果已經配置國內源的, 直接輸入 -i 前面部分就行)

-建立檔案

from openpyxl import Workbook


# 方法一 這種方法預設表名為 Sheet
wb = Workbook()
ws = wb.active  # 新建一個Sheet

# 方法二 這種方法可以自定義表名和插入的位置,如果輸入位置,預設為0
ws = wb.create_sheet('Shee1', 0)

- 開啟檔案

from openpyxl import load_workbook

wb = load_workbook('xxx.xlsx')

- 獲取表名

# 獲取所有 Sheet 的名稱, 得到的是一個所有 Sheet 名稱的列表
sheet_names = wb.sheetnames

- 選擇表

# 方法一 直接讀取 Excel 裡面被選中的那個 Sheet
ws = wb.active

# 方法二 自己輸入 Sheet 的名稱
ws = wb['Sheet']

- 儲存資料

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 第一種 row為行,column為列
ws.cell(row=1, column=2).value = 1
# 可直接簡化為
ws.cell(1, 2).value = 1

# 第二種方法
ws['B1'].value = 1

# 一次新增一行資料
ws.append([1, 2, 3, '4'])
# 注意,這裡新增多少數都要用中括號括起來

# 最後記得儲存資料
wb.save('檔名.xlsx')

- 讀取資料

from openpyxl import load_workbook

# 這裡的 test.xlsx 檔案你們在 py 檔案的同個目錄下新建一個填一下資料就行了
wb = load_workbook('test.xlsx')
ws = wb.active

# 讀取一個單元格 方法一
print(ws['A1'].value)

# 讀取一個單元格 方法二
print(ws.cell(1, 1).value)

# 讀取單元格的值和儲存單元格的值是差不多,一個是讀取值出來,一個是賦值進去

- 獲取 Sheet 表的最大行列數

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
ws = wb.active

# 獲取最大行數
max_r = ws.max_row
# 獲取最大列數
max_c = ws.max_column

- 遍歷單元格

from openpyxl import load_workbook

wb = load_workbook('test.xlsx')
ws = wb.active

# 注意
# openpyxl 讀取 Excel 的索引是從 1 開始的
# 因為 range 函式是左閉右開,再加上索引是從 1 開始的,所以最大值都要 +1
for i in range(1, ws.max_row+1):
    for j in range(1, ws.max_column+1):
        print(ws.cell(i, j).value)

下一篇將寫 openpyxl 一些高階一點的操作,例如給單元格弄格式,顏色等等
喜歡的文章可以關注我,覺得文章對你有用的話點個贊和收藏喔

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章