Có thể bạn quan tâm: Hướng Dẫn Chi Tiết Tạo Pop‑up Calendar Trong Excel: Từ Cơ Bản Đến Nâng Cao
Giới thiệu
Việc xử lý dữ liệu thường xuyên được lưu trữ trong các file Excel là một nhiệm vụ phổ biến trong nhiều lĩnh vực như tài chính, khoa học dữ liệu, quản trị kinh doanh và nhiều hơn nữa. Khi làm việc với Python, một ngôn ngữ lập trình linh hoạt và mạnh mẽ, có nhiều thư viện hỗ trợ để đọc, ghi, và phân tích dữ liệu từ file Excel. Trong bài viết này, chúng ta sẽ đi sâu vào cách đọc file Excel (.xlsx) bằng Python, khám phá các thư viện phổ biến như pandas, openpyxl, xlrd, và xlwt, cùng với các kĩ thuật nâng cao như xử lý sheet đa trang, đọc dữ liệu có định dạng phức tạp, và tối ưu hiệu suất khi làm việc với file lớn. Bài viết sẽ cung cấp ví dụ cụ thể, giải thích chi tiết từng bước, và chia sẻ những lời khuyên thực tiễn giúp bạn nhanh chóng thành thạo công việc này.
Có thể bạn quan tâm: Phần Mềm Gộp File Excel: Giải Pháp Hiệu Quả Cho Quản Lý Dữ Liệu Doanh Nghiệp
1. Tại sao Python là lựa chọn tốt cho việc đọc file Excel?
Python sở hữu một cộng đồng phát triển lớn với hàng trăm thư viện chuyên dụng cho việc xử lý dữ liệu dạng bảng. Các thư viện này được thiết kế để:
- Đơn giản và trực quan: Cấu trúc API gần gũi với dữ liệu thực tế, giảm thiểu lượng code cần viết.
- Tính mở rộng: Hỗ trợ các phiên bản Excel từ 2003 (.xls) đến 2026+ (.xlsx) và nhiều định dạng khác.
- Tích hợp dễ dàng: Có thể kết hợp với các công cụ phân tích dữ liệu (NumPy, SciPy, scikit-learn) hoặc hiển thị dữ liệu (Matplotlib, Plotly) một cách liền mạch.
- Hiệu suất cao: Thư viện như
pandastận dụng các kỹ thuật tối ưu, giảm thiểu thời gian đọc và ghi dữ liệu.
Có thể bạn quan tâm: Phần Mềm Bẻ Khóa Excel: Cách Giải Quyết Mối Vấn Đề Khóa Bảo Mật Trên Tài Liệu
2. Các thư viện chính để đọc file Excel
2.1 pandas
pandas là thư viện phổ biến nhất để thao tác dữ liệu bảng trong Python. Khi đọc file Excel, pandas sử dụng thư viện openpyxl làm engine mặc định (đối với file .xlsx) và xlrd cho .xls.
Cài đặt:
bash pip install pandas openpyxlCách đọc file:
“`python
import pandas as pd
df = pd.read_excel(‘du_lieu.xlsx’)
print(df.head())
“`
Đọc sheet cụ thể:
python df = pd.read_excel('du_lieu.xlsx', sheet_name='DoanhThu')Đọc nhiều sheet cùng lúc:
python dfs = pd.read_excel('du_lieu.xlsx', sheet_name=None) # trả về dict {sheet_name: DataFrame}Lọc dữ liệu khi đọc:
python df = pd.read_excel('du_lieu.xlsx', usecols='A:D', skiprows=2, nrows=100)
2.2 openpyxl
Được dùng để đọc, viết và chỉnh sửa file Excel (.xlsx). Thư viện này hoạt động ở cấp độ ô, cho phép truy cập chi tiết tới thuộc tính của mỗi ô (định dạng, công thức, v.v.).
Cài đặt:
bash pip install openpyxlCách đọc file:
“`python
from openpyxl import load_workbook
wb = load_workbook(‘du_lieu.xlsx’)
ws = wb.active # hoặc wb’Sheet1′
for row in ws.iter_rows(values_only=True):
print(row)
“`
- Truy cập ô cụ thể:
python cell = ws'B5' print(cell.value)
2.3 xlrd và xlwt
xlrd dùng để đọc file Excel 2003-2007 (.xls), còn xlwt dùng để ghi file Excel .xls. Tuy nhiên, kể từ phiên bản 2.0, xlrd chỉ hỗ trợ định dạng .xls, không còn hỗ trợ .xlsx. Do đó, khi làm việc với .xlsx, bạn nên dùng openpyxl hoặc pandas.
Cài đặt:
bash pip install xlrd xlwtĐọc file .xls:
“`python
import xlrd
book = xlrd.open_workbook(‘du_lieu.xls’)
sheet = book.sheet_by_index(0)
for row_idx in range(sheet.nrows):
print(sheet.row(row_idx))
“`
3. Hướng dẫn chi tiết: Đọc file Excel có cấu trúc phức tạp
3.1 Xử lý file có nhiều sheet
Giả sử file kpi.xlsx có 5 sheet: Sales, Marketing, Finance, HR, IT. Bạn muốn đọc tất cả sheet và lưu thành một dictionary DataFrame.
import pandas as pd file_path = 'kpi.xlsx'
dfs = pd.read_excel(file_path, sheet_name=None) # Đọc tất cả for sheet, df in dfs.items(): print(f"--- Sheet: {sheet} ---") print(df.head())
3.2 Đọc dữ liệu có header không trong dòng đầu tiên
Nếu dữ liệu bắt đầu từ dòng thứ 5, bạn có thể bỏ qua các dòng đầu tiên:
df = pd.read_excel('du_lieu.xlsx', header=4) # header=4 => dòng 5 làm header
3.3 Đọc dữ liệu có cột không dùng
Bạn chỉ muốn lấy cột A, C, E:
df = pd.read_excel('du_lieu.xlsx', usecols='A,C,E')
3.4 Đọc dữ liệu có công thức

Có thể bạn quan tâm: Mẫu Kế Hoạch Dự Án (project Plan Timeline) Trên Excel: Hướng Dẫn Chi Tiết Từ A Đến Z
pandas không đọc giá trị tính được từ công thức mà chỉ lấy giá trị lưu trữ. Để lấy giá trị thực tế, bạn cần dùng openpyxl:
from openpyxl import load_workbook wb = load_workbook('du_lieu.xlsx', data_only=True)
ws = wb.active
for row in ws.iter_rows(values_only=True): print(row)
3.5 Đọc dữ liệu có định dạng phức tạp (ví dụ: ngày tháng, số thập phân)
pandas tự động chuyển đổi kiểu dữ liệu, nhưng bạn có thể định nghĩa kiểu thủ công:
df = pd.read_excel('du_lieu.xlsx', dtype={'Date': 'str', 'Amount': 'float'})
df'Date' = pd.to_datetime(df'Date', format='%d/%m/%Y')
4. Đọc file Excel lớn (> 1M dòng)
Đọc file lớn có thể tiêu tốn bộ nhớ đáng kể. Dưới đây là một số kỹ thuật để tối ưu:
4.1 Đọc dữ liệu theo chunk
Sử dụng chunksize trong pandas.
chunksize = 100000
for chunk in pd.read_excel('du_lieu_lon.xlsx', chunksize=chunksize): # Xử lý từng chunk print(chunk.head())
4.2 Chỉ đọc một số cột cần thiết
Giảm kích thước bộ nhớ bằng cách chỉ lấy các cột quan trọng:
usecols = 'A', 'B', 'C'
df = pd.read_excel('du_lieu_lon.xlsx', usecols=usecols)
4.3 Sử dụng openpyxl với read_only=True
openpyxl cung cấp chế độ chỉ đọc để giảm bộ nhớ:
from openpyxl import load_workbook wb = load_workbook('du_lieu_lon.xlsx', read_only=True)
ws = wb.active
for row in ws.iter_rows(values_only=True): # Xử lý từng dòng process(row)
5. Chuyển đổi dữ liệu đã đọc thành định dạng khác
5.1 Xuất dữ liệu sang CSV
df.to_csv('du_lieu.csv', index=False)
5.2 Lưu dữ liệu vào cơ sở dữ liệu SQL
from sqlalchemy import create_engine engine = create_engine('sqlite:///du_lieu.db')
df.to_sql('kpi', con=engine, if_exists='replace', index=False)
6. Các mẹo bảo trì và tối ưu
| Thứ tự | Mẹo | Lý do |
|---|---|---|
| 1 | Cập nhật thư viện thường xuyên | Đảm bảo tính tương thích và bảo mật. |
| 2 | Kiểm tra lỗi khi đọc file (FileNotFound, PermissionError) | Tránh bị crash trong quá trình tự động. |
| 3 | Sử dụng try/except khi đọc sheet không tồn tại | Dễ dàng xử lý ngoại lệ. |
| 4 | Kiểm tra kiểu dữ liệu sau khi đọc | Đảm bảo công việc phân tích dữ liệu chính xác. |
| 5 | Ghi chú rõ ràng trong code | Dễ bảo trì cho các thành viên khác. |
7. Ví dụ thực tế: Tự động tổng hợp báo cáo doanh thu
Giả sử bạn có file doanhthu.xlsx với sheet theo từng tháng. Bạn muốn tự động tính tổng doanh thu, số lượng giao dịch, và lưu kết quả vào file tongsuatchieu.xlsx.
import pandas as pd # Đọc tất cả sheet
dfs = pd.read_excel('doanhthu.xlsx', sheet_name=None) summary = pd.DataFrame(columns='Tháng', 'DoanhThu', 'GiaoDich') for month, df in dfs.items(): total_sales = df'DoanhThu'.sum() total_transactions = df'GiaoDich'.count() summary = summary.append({ 'Tháng': month, 'DoanhThu': total_sales, 'GiaoDich': total_transactions }, ignore_index=True) # Lưu kết quả
summary.to_excel('tongsuatchieu.xlsx', index=False)
print("Báo cáo đã được ghi thành công!")
8. Tổng kết
- Python cung cấp nhiều thư viện mạnh mẽ để đọc file Excel, trong đó
pandasvàopenpyxllà lựa chọn hàng đầu. - Bạn có thể đọc dữ liệu từ file .xlsx một cách linh hoạt: chọn sheet, cột, bỏ qua dòng, lấy giá trị công thức, xử lý định dạng.
- Đối với file lớn, hãy tận dụng kỹ thuật chunk, chỉ đọc cột cần thiết, hoặc dùng
openpyxlread_only. - Tích hợp dữ liệu đã đọc với các công cụ khác (CSV, SQL, phân tích nâng cao) giúp mở rộng quy trình làm việc.
- Cuối cùng, luôn kiểm tra và đảm bảo tính ổn định của code bằng cách thêm các phần kiểm tra lỗi và ghi chú đầy đủ.
Với những kiến thức và ví dụ trên, bạn đã sẵn sàng để xử lý bất kỳ file Excel nào trong dự án Python của mình. Hãy thực hành, thử nghiệm và chia sẻ những trường hợp đặc biệt mà bạn gặp phải – cộng đồng Python luôn sẵn sàng hỗ trợ!

Tiến sĩ Lê Thống Nhất sinh năm 1955 tại Nghệ An, là nhà giáo, nhà báo và doanh nhân trong lĩnh vực giáo dục. Ông từng giảng dạy Toán học tại Trường THPT Chuyên Phan Bội Châu và đảm nhiệm nhiều vai trò trong ngành giáo dục, từ viết sách, biên soạn tài liệu đến sáng lập các dự án hỗ trợ học tập trực tuyến.
Ông là người sáng lập BigSchool – nền tảng giáo dục trực tuyến kết nối giáo viên và học sinh cả nước. Ngoài ra, ông còn nổi tiếng với vai trò tác giả, diễn giả truyền cảm hứng và khách mời trên nhiều chương trình truyền hình, trong đó có “Ai là triệu phú” trên truyền hình VTV.
Trong suốt sự nghiệp, Tiến sĩ Lê Thống Nhất đã nhận nhiều giải thưởng giáo dục và được biết đến như một người luôn đổi mới, ứng dụng công nghệ vào dạy và học, góp phần lan tỏa tri thức và niềm say mê học tập cho thế hệ trẻ.
