| Tự động hóa xử lý tệp tin Excel bằng Python (Phần 1): Đọc ghi dữ liệu thực chiến kết hợp CAD/BOM

Được viết bởi thanhdt vào ngày 28/05/2026 lúc 22:39 | 28 lượt xem

Trong lĩnh vực kỹ thuật, sản xuất và quản trị văn phòng, Excel đóng vai trò là "trục xương sống" để lưu trữ, tính toán dữ liệu và báo cáo. Tuy nhiên, nếu bạn phải làm việc thủ công (Manual Operations):

  • Phải mở hàng chục bản vẽ CAD để copy bảng kê vật tư (BOM – Bill of Materials) thủ công vào Excel.
  • Tốn hàng giờ để định dạng, tính tổng, xử lý dữ liệu bảng biểu Excel lặp đi lặp lại hàng tuần.
  • Nhập liệu thủ công các thông số kích thước, tên chi tiết gây ra các sai số nghiêm trọng trong quy trình sản xuất.

Với Python, bạn hoàn toàn có thể tự động hóa 100% các tác vụ này. Bằng cách kết hợp sức mạnh phân tích của pandas và khả năng tùy biến định dạng sâu của openpyxl, chúng ta có thể xây dựng một chương trình tự động đọc thông số bản vẽ kỹ thuật (AutoCAD/Inventor) và xuất báo cáo Excel hoàn hảo chỉ bằng 1 Click.

Hôm nay, Hướng Nghiệp Dữ Liệu sẽ hướng dẫn bạn làm chủ quy trình đỉnh cao này!


🎨 Trận đồ Quy trình tự động hóa xuất bản vẽ CAD ra Excel bằng Python

Python Excel Automation


1. Giới thiệu hai cánh chim đầu đàn: pandas và openpyxl

Để xử lý tệp tin Excel, Python cung cấp hai thư viện xuất sắc nhất hiện nay, mỗi thư viện giải quyết một bài toán chuyên biệt:

  • Pandas (Vua xử lý dữ liệu): Thư viện tối ưu nhất để đọc, lọc, sắp xếp, tính toán toán học và chuyển đổi dữ liệu Excel hiệu năng cao dưới dạng cấu hình bảng biểu DataFrame.
  • Openpyxl (Vua định dạng & cấu trúc): Cho phép bạn can thiệp trực tiếp vào từng ô tính (Cell), thiết lập công thức toán học (=SUM()), căn chỉnh màu sắc, viền bảng, và vẽ biểu đồ trực quan.

Để cài đặt hai thư viện này, bạn chỉ cần thực hiện lệnh sau trên Terminal:

pip install pandas openpyxl

2. Quy trình xử lý dữ liệu đưa lên Excel bằng Python

graph TD
    A[Bản vẽ kỹ thuật AutoCAD/Inventor] -->|1. Python win32com| B[Trích xuất thuộc tính BOM/Kích thước]
    B -->|2. Đóng gói| C[Cấu trúc dữ liệu DataFrame Pandas]
    C -->|3. Phân tích & Tính toán| D[pandas.to_excel]
    D -->|4. openpyxl| E[Định dạng màu sắc, viền, công thức]
    E -->|5. Xuất báo cáo| F[Báo cáo Excel chuẩn sản xuất]

3. Ví dụ thực tế: Kết hợp Python với AutoCAD/Inventor xuất bảng BOM tự động

Trong các dự án thiết kế cơ khí hoặc xây dựng, việc xuất bảng kê vật tư (BOM) từ phần mềm CAD (AutoCAD/Inventor) sang Excel là công việc diễn ra hằng ngày.

Sử dụng thư viện kết nối hệ thống win32com.client (ActiveX COM Automation), đoạn mã Python dưới đây sẽ tự động kết nối trực tiếp với phần mềm Inventor đang mở, đọc danh sách các chi tiết trong bản vẽ lắp (Assembly Drawing) bao gồm: Tên chi tiết (Part Name), Số lượng (Quantity), Vật liệu (Material), Kích thước bao (Dimensions) và tự động ghi thẳng ra tệp tin Excel chuẩn hóa.

Mã nguồn Python tích hợp thực chiến:

import os
import win32com.client
import pandas as pd

def export_cad_bom_to_excel(output_excel_path):
    print("🤖 Đang kết nối tới phần mềm Autodesk Inventor...")
    try:
        # Kết nối tới phiên bản Inventor đang chạy
        inventor_app = win32com.client.GetActiveObject("Inventor.Application")
    except Exception:
        print("❌ Lỗi: Vui lòng mở phần mềm Inventor và một bản vẽ lắp (Assembly) trước khi chạy.")
        return

    # Lấy tài liệu (Document) đang hoạt động
    active_doc = inventor_app.ActiveDocument
    
    # Xác minh xem có phải là bản vẽ lắp ráp (.iam) không
    if active_doc.DocumentType != 12291: # 12291 là mã của AssemblyDocument
        print("❌ Lỗi: Tài liệu đang mở không phải là bản vẽ lắp (.iam).")
        return
        
    print(f"📖 Đang đọc cấu trúc lắp ráp của bản vẽ: {active_doc.DisplayName}")
    
    assembly_def = active_doc.ComponentDefinition
    bom_data = []
    
    # Duyệt qua toàn bộ các chi tiết thành phần (Occurrences) trong cụm lắp
    for occurrence in assembly_def.Occurrences:
        part_name = occurrence.Name
        # Trích xuất các thuộc tính tùy chỉnh (iProperties)
        try:
            part_doc = occurrence.Definition.Document
            prop_sets = part_doc.PropertySets
            # Đọc nhóm thuộc tính Design Tracking
            design_props = prop_sets.Item("Design Tracking Properties")
            
            material = design_props.Item("Material").Value
            part_number = design_props.Item("Part Number").Value
            
            # Giả lập kích thước trích xuất
            dimensions = "120x80x15 mm"
            qty = 1  # Có thể tính toán số lượng thực tế
            
            bom_data.append({
                "Mã Chi Tiết": part_number,
                "Tên Chi Tiết": part_name.split(":")[0],
                "Số Lượng": qty,
                "Vật Liệu": material,
                "Kích Thước": dimensions
            })
        except Exception as ex:
            print(f"⚠️ Bỏ qua thành phần {part_name} do không đọc được thuộc tính: {ex}")

    # Chuyển đổi dữ liệu sang định dạng DataFrame của Pandas
    df = pd.DataFrame(bom_data)
    
    # Xuất dữ liệu ra Excel bằng pandas kết hợp openpyxl engine
    print(f"💾 Đang xuất dữ liệu ra file Excel: {output_excel_path}...")
    df.to_excel(output_excel_path, index=False, sheet_name="BOM_San_Xuat")
    
    print("🎉 Chiến dịch xuất dữ liệu BOM hoàn thành công mỹ mãn!")

# Chạy thử nghiệm thực tế
if __name__ == "__main__":
    excel_path = r"BOM_Xuat_Tu_Dong.xlsx"
    # export_cad_bom_to_excel(excel_path)

4. Bài tập thực hành: Đọc dữ liệu từ tệp Excel mẫu và in ra màn hình

Hãy bắt đầu bài học đầu tiên với tác vụ thực tế nhất: Viết script Python sử dụng thư viện pandas để mở một file Excel báo cáo, tự động làm sạch các dòng trống, tính toán các thông số thống kê cơ bản và in ra màn hình.

📝 Mã nguồn thực hành:

import pandas as pd

def read_and_clean_excel(file_path):
    print(f"📖 Đang đọc dữ liệu từ tệp Excel: {file_path}...")
    
    try:
        # Đọc toàn bộ trang tính đầu tiên
        df = pd.read_excel(file_path)
    except FileNotFoundError:
        print("❌ Lỗi: Không tìm thấy file Excel mẫu. Vui lòng kiểm tra lại đường dẫn.")
        return
        
    print("n--- 5 DÒNG DỮ LIỆU ĐẦU TIÊN ---")
    print(df.head())
    
    # Làm sạch dữ liệu: Loại bỏ các dòng trống hoàn toàn (NaN)
    df_cleaned = df.dropna(how="all")
    
    # Điền giá trị mặc định cho các ô trống (NaN) của cột số lượng
    if "Số Lượng" in df_cleaned.columns:
        df_cleaned["Số Lượng"] = df_cleaned["Số Lượng"].fillna(0)
        
        # Tính tổng số lượng sản phẩm cần sản xuất
        total_qty = df_cleaned["Số Lượng"].sum()
        print(f"n📊 Tổng số lượng sản xuất thống kê: {total_qty} chi tiết.")
        
    print("n--- DỮ LIỆU SAU KHI LÀM SẠCH ---")
    print(df_cleaned)

# Chạy thử nghiệm
# read_and_clean_excel("BOM_Xuat_Tu_Dong.xlsx")

🎓 Khóa học "Tự động hóa cơ bản bằng Python" tại Hướng Nghiệp Dữ Liệu

Việc xử lý tự động hóa tệp Excel chỉ là bài học nhập môn cơ bản. Để giúp bạn nâng tầm tư duy, giải phóng 90% sức lao động chân tay mệt mỏi và làm chủ các kỹ thuật lập trình công nghệ cao, Hướng Nghiệp Dữ Liệu mang đến Khóa học "Tự động hóa cơ bản bằng Python":

  • Thời lượng: 16 buổi học trực chiến thực tế, cầm tay chỉ việc.
  • Đối tượng: Kỹ sư thiết kế cơ khí, xây dựng, kiến trúc sư, dân văn phòng, kế toán… bắt đầu từ con số 0 tròn trĩnh.
  • Giá trị nhận được:
    • Lập trình Python tự động hóa trọn bộ công cụ văn phòng: Word, Excel, PDF, PowerPoint.
    • Tự động tương tác và cào dữ liệu thông minh từ các website chuyên ngành.
    • Thiết kế hệ sinh thái tự động báo cáo qua Telegram Bot và Email Marketing tự động.
    • Xây dựng Web Dashboard để kiểm soát tiến trình vận hành robot từ xa tập trung.

🔥 Kết luận: Công cụ tốt làm nên người thợ giỏi

Học Python tự động hóa không chỉ giúp bạn làm việc nhanh hơn gấp 10 lần, mà còn giúp loại bỏ hoàn toàn các sai sót do nhập liệu tay mang lại, mở ra cơ hội phát triển nghề nghiệp đột phá trong kỷ nguyên số hóa.

👉 Hãy tối ưu hóa công việc của bạn ngay hôm nay!
Đăng ký nhận tư vấn lộ trình học tập chi tiết và nhận bộ tài liệu tự động hóa thực chiến miễn phí của Hướng Nghiệp Dữ Liệu qua Zalo:

💬 LIÊN HỆ TƯ VẤN TRỰC TIẾP QUA ZALO


Thông tin chi tiết về lịch khai giảng khóa học xem thêm tại: Tự động hóa cơ bản


🌐 Đọc chi tiết bài viết và đăng ký khóa học tại Website: https://huongnghiepdulieu.com