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 fileoutput.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é.