Menu

Tự động hóa trích xuất dữ liệu Excel sang XML bằng Python

Tăng Hùng Nho 05/06/2026 10:06 239 lượt xem 3 trả lời

Chào mọi người,

Dạo này mình đang làm việc với một dự án cần trích xuất dữ liệu từ file Excel để lưu trữ dưới dạng XML. Mình đã thử tìm hiểu và thấy có khá nhiều cách để làm việc này với Python, một trong số đó là sử dụng thư viện xml.etree.ElementTree. Hôm nay mình muốn chia sẻ lại một cách đơn giản để mọi người tham khảo, có thể hữu ích cho ai đang cần xử lý tương tự.

Về cơ bản, chúng ta sẽ đọc dữ liệu từ file Excel (ví dụ: data.xlsx) bằng thư viện pandas, sau đó duyệt qua từng dòng và tạo cấu trúc XML tương ứng.

Đây là đoạn code mình hay dùng:

import pandas as pd
import xml.etree.ElementTree as ET

# Đọc dữ liệu từ file Excel
df = pd.read_excel('data.xlsx')

# Tạo root element
root = ET.Element('data')

# Duyệt qua từng dòng trong DataFrame
for index, row in df.iterrows():
    item = ET.SubElement(root, 'item')
    for col_name in df.columns:
        field = ET.SubElement(item, col_name)
        field.text = str(row[col_name])

# Tạo tree và ghi ra file XML
tree = ET.ElementTree(root)
tree.write('output.xml', encoding='utf-8', xml_declaration=True)

print('Đã xuất dữ liệu sang output.xml thành công!')

Trong đoạn code trên:

  • pd.read_excel('data.xlsx'): Đọc file Excel vào một DataFrame.
  • ET.Element('data'): Tạo thẻ gốc cho file XML, ở đây là thẻ <data>.
  • ET.SubElement(root, 'item'): Tạo các thẻ con, mỗi thẻ <item> đại diện cho một dòng dữ liệu.
  • Vòng lặp for col_name in df.columns:: Lặp qua các cột để tạo các thẻ con tương ứng với tên cột và điền giá trị vào đó.
  • tree.write(...): Ghi toàn bộ cấu trúc XML ra file output.xml.

Cách này khá linh hoạt, bạn có thể tùy chỉnh tên thẻ, cấu trúc XML tùy theo yêu cầu. Hy vọng chia sẻ này giúp ích được cho mọi người!

Nếu có ai có cách làm khác hay hơn, hoặc gặp khó khăn gì, cứ thoải mái trao đổi nhé.

0

Cảm ơn bạn đã chia sẻ kinh nghiệm hữu ích này! Mình cũng từng gặp tình huống tương tự, việc tự động hóa này tiết kiệm thời gian đáng kể.

Về câu hỏi của bạn về xử lý nhiều sheet, mình nghĩ là hoàn toàn có thể làm được đó. Thay vì chỉ đọc một sheet, bạn có thể lặp qua tất cả các sheet trong file Excel bằng pandas, rồi xử lý từng sheet như cách bạn đã làm. Sau đó, bạn có thể gom các phần tử XML tương ứng của mỗi sheet vào một cấu trúc XML gốc duy nhất.

Bạn đã thử cách nào để gom các cấu trúc XML từ các sheet lại chưa? Nếu có, chia sẻ thêm cho mọi người học hỏi với nhé!

5

Hay quá bạn ơi! Mình cũng đang đau đầu với việc chuyển đổi dữ liệu Excel sang XML để tích hợp với hệ thống khác. Thư viện pandasxml.etree.ElementTree đúng là cặp đôi hoàn hảo cho vụ này.

Mình có một câu hỏi nhỏ, nếu file Excel của mình có nhiều sheet, mình có thể xử lý từng sheet một cách tự động và gom vào một file XML duy nhất không bạn? Hay mình cần viết lại logic cho từng sheet?

Cảm ơn bạn đã chia sẻ nhé!

5

Chào bạn,

Kinh nghiệm bạn chia sẻ về việc dùng Python để tự động hóa trích xuất dữ liệu Excel sang XML rất hay và thiết thực! Mình cũng thấy pandasxml.etree.ElementTree là sự kết hợp mạnh mẽ cho những tác vụ như thế này.

Về câu hỏi của bạn về việc xử lý nhiều sheet, mình nghĩ hoàn toàn có thể làm được. Bạn có thể đọc tất cả các sheet vào một dictionary bằng pandas.read_excel(..., sheet_name=None), sau đó lặp qua từng key-value pair (tên sheet - DataFrame) để xử lý và gom kết quả vào một cấu trúc XML cuối cùng.

Bạn đã thử cách gom dữ liệu XML từ các sheet lại chưa? Nếu có, chia sẻ thêm cho mọi người cùng học hỏi nhé!

2

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký