openpyxl模組的日常使用

黑月教主發表於2024-11-22

openpyxl是另一個我覺得比較好用的xlsx操作模組,支援讀和寫,功能也比較豐富 。

下面是一個讀的例子:

import openpyxl

# 開啟工作簿
workbook = openpyxl.load_workbook('示例.xlsx')

# 獲取工作表
sheet = workbook.active

# 讀取指定單元格的資料
cell_value = sheet['A1'].value
print("A1單元格的數值為:", cell_value)

# 讀取指定行和列的單元格資料
row_num = 1
col_num = 1
cell_value = sheet.cell(row=row_num, column=col_num).value
print(f"第{row_num}行,第{col_num}列的數值為: {cell_value}")

# 按行讀取資料,返回row是一個tuple
for row in sheet.iter_rows(values_only=True):
    print(row)

# 關閉工作簿
workbook.close()

下面是一個寫的例子,包括填充資料和設定格式:

from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Border, Side

# 建立一個新的工作簿
workbook = Workbook()

# 獲取活動的工作表
sheet = workbook.active

# 寫入資料
sheet['A1'] = '姓名'
sheet['B1'] = '年齡'

# 設定字型大小和加粗
sheet['A1'].font = Font(size=14, bold=True)
sheet['B1'].font = Font(size=14, bold=True)

# 寫入資料行
data = [('Alice', 30), ('Bob', 25), ('Charlie', 35)]

for row_num, row_data in enumerate(data, start=2):
    sheet[f'A{row_num}'] = row_data[0]
    sheet[f'B{row_num}'] = row_data[1]

# 設定列寬
sheet.column_dimensions['A'].width = 20
sheet.column_dimensions['B'].width = 10

# 設定背景顏色
for row in sheet.iter_rows(min_row=1, max_row=len(data)+1, min_col=1, max_col=2):
    for cell in row:
        cell.fill = PatternFill(start_color="FFFF00", end_color="FFFF00", fill_type="solid")

# 設定邊框為細實線
thin_border = Border(left=Side(style='thin'), 
                     right=Side(style='thin'), 
                     top=Side(style='thin'), 
                     bottom=Side(style='thin'))

for row in sheet.iter_rows(min_row=1, max_row=len(data)+1, min_col=1, max_col=2):
    for cell in row:
        cell.border = thin_border

# 儲存工作簿
workbook.save('example.xlsx')

相關文章