Chào các anh em trong diễn đàn Sheet & Excel,
Dạo gần đây mình có làm việc với một dự án nhỏ cần lưu trữ dữ liệu cấu trúc và quyết định sử dụng SQLite vì tính nhẹ nhàng, không cần cài đặt server phức tạp. Tuy nhiên, việc thủ công copy-paste dữ liệu từ SQLite sang Excel để làm báo cáo khá tốn thời gian.
Mình đã tìm hiểu và áp dụng một cách để tự động hóa việc này bằng Python. Mục đích là để khi có dữ liệu mới trong bảng SQLite, mình có thể chạy một script nhỏ để cập nhật toàn bộ vào file Excel có sẵn.
Cách làm của mình như sau:
- Sử dụng thư viện
sqlite3của Python để kết nối và truy vấn dữ liệu từ file.dbcủa SQLite. - Sử dụng thư viện
pandasđể đọc dữ liệu từ SQLite vào DataFrame. - Sử dụng
pandasđể ghi DataFrame đó vào một file Excel (.xlsx). Nếu file Excel đã tồn tại, có thể ghi đè hoặc cập nhật sheet cụ thể.
Code mẫu tham khảo:
import sqlite3
import pandas as pd
# Thông tin kết nối SQLite
sqlite_db_path = 'du_lieu_cua_ban.db'
# Chuỗi truy vấn SQL
sql_query = "SELECT * FROM ten_bang_du_lieu"
# Kết nối và lấy dữ liệu
conn = sqlite3.connect(sqlite_db_path)
df = pd.read_sql_query(sql_query, conn)
conn.close()
# Đường dẫn file Excel đích
excel_file_path = 'bao_cao_tu_dong.xlsx'
# Ghi dữ liệu vào Excel
# Nếu muốn ghi đè toàn bộ file:
# df.to_excel(excel_file_path, index=False)
# Nếu muốn ghi vào một sheet cụ thể và có thể cập nhật:
with pd.ExcelWriter(excel_file_path, engine='openpyxl', mode='a', if_sheet_exists='replace') as writer:
df.to_excel(writer, sheet_name='DuLieuGoc', index=False)
print(f"Dữ liệu đã được cập nhật vào {excel_file_path} thành công!")
Lưu ý: Bạn cần cài đặt các thư viện cần thiết: pip install pandas openpyxl.
Cách này giúp mình tiết kiệm kha khá thời gian và giảm thiểu sai sót khi nhập liệu thủ công. Hy vọng chia sẻ này hữu ích cho các bạn nào đang làm việc với SQLite và Excel.
Có anh em nào có cách khác hay hơn hoặc có kinh nghiệm xử lý với các hệ CSDL khác thì chia sẻ thêm nhé!