Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Đọc ghi file Excel với openpyxl trong Python

Module openpyxl thao tác file Excel .xlsx (Office 2007+): tạo, đọc, ghi, format, chart.

Cài đặt

pip install openpyxl

1. Tạo workbook, đặt tên sheet

import openpyxl

wb = openpyxl.Workbook()
ws = wb.active
print(ws.title)  # Sheet

ws.title = "My New Sheet"
print(ws.title)  # My New Sheet

2. Ghi dữ liệu

wb = openpyxl.Workbook()
ws = wb.active

# Cách 1: cell(row, col)
ws.cell(row=1, column=1, value="Aadrika")
ws.cell(row=1, column=2, value="Adwaita")

# Cách 2: địa chỉ A1
ws['A2'] = "Satyajit"
ws['B2'] = "Bivas"

wb.save("Book1.xlsx")

3. Thêm sheet

wb.create_sheet(index=1, title="New Sheet")
wb.save("Book1.xlsx")

4. Đọc file

wb = openpyxl.load_workbook("Book1.xlsx")
ws = wb.active

# Kích thước
print(ws.max_row)    # 2
print(ws.max_column) # 2

# Đọc cell
print(ws.cell(row=1, column=1).value)  # Aadrika
print(ws['A1'].value)                  # Aadrika

# Đọc hàng 1 (header)
for i in range(1, ws.max_column + 1):
    print(ws.cell(row=1, column=i).value, end=" ")
# Aadrika Adwaita

# Đọc cột 1
for i in range(1, ws.max_row + 1):
    print(ws.cell(row=i, column=1).value)
# Aadrika
# Satyajit

# Đọc hàng 2
for i in range(1, ws.max_column + 1):
    print(ws.cell(row=2, column=i).value, end=" ")
# Satyajit Bivas

5. Duyệt tất cả dữ liệu

for row in ws.iter_rows(values_only=True):
    print(row)
# ('Aadrika', 'Adwaita')
# ('Satyajit', 'Bivas')

# Hoặc iter_cols
for col in ws.iter_cols(values_only=True):
    print(col)

6. Định dạng (Style)

from openpyxl.styles import Font, Alignment, PatternFill

ws['A1'].font = Font(bold=True, size=14, color="FF0000")
ws['A1'].alignment = Alignment(horizontal="center")
ws['A1'].fill = PatternFill(start_color="FFFF00", fill_type="solid")

Lưu ý

  • Chỉ hỗ trợ .xlsx, không đọc được .xls (cũ) – dùng xlrd.
  • Không hỗ trợ macro (.xlsm cần openpyxl.load_workbook(..., keep_vba=True)).
  • Performance: write_only=True cho file lớn (chỉ ghi, không đọc).