Chuyển XML sang Excel
Biến file xuất XML, feed và file dữ liệu thành trang Excel được định dạng — tự nhận diện các bản ghi lặp lại, thuộc tính và phần tử lồng nhau được xếp thành cột, và không lưu trữ gì cả.
- Không bao giờ lưu trữ
- Không xếp hàng, không phải chờ
- Không cần đăng ký, không watermark
Cách hoạt động
Thêm XML
Thả file .xml vào hoặc dán nội dung XML. File XML Spreadsheet 2003 của chính Excel cũng dùng được.
Chọn bản ghi
Phần tử lặp lại — product, item, row — được chọn sẵn cho bạn, kèm danh sách mọi bảng khác trong file và bản xem trước trực tiếp.
Tải xuống
Một file .xlsx với số và ngày tháng đúng kiểu theo từng cột, cùng hàng tiêu đề in đậm, lọc được.
Tìm các hàng trong một cấu trúc cây
XML không có khái niệm bảng, nên việc đầu tiên phải làm là xác định phần tử nào là bản ghi. Dấu hiệu đáng tin cậy là sự lặp lại: một phần tử cha chứa nhiều phần tử con cùng tên gần như luôn là một danh sách bản ghi, và các phần tử con cùng thuộc tính của chúng trở thành cột. Cách này đúng với tuyệt đại đa số XML dữ liệu — file xuất, feed, phản hồi API, bản kết xuất cấu hình — vì tất cả đều được dựng theo cùng một kiểu.
Cả thuộc tính lẫn phần tử con đều được chuyển thành cột, và điều đó là cần thiết vì XML có hai cách nói cùng một điều và mỗi hệ thống lại chọn một kiểu. File xuất này ghi id="42" dưới dạng thuộc tính; file khác ghi <id>42</id> dưới dạng phần tử; file thứ ba dùng cả hai trong cùng một tài liệu. Một bảng lưới không quan tâm đến sự khác biệt đó và bạn cũng không cần quan tâm, nên cả hai đều thành cột, với thuộc tính được đánh dấu để một tên xuất hiện ở cả hai dạng không bị trùng.
Cấu trúc lồng sâu hơn một cấp được trải phẳng bằng cách nối tên các phần tử, giống như với JSON lồng nhau. Khi một bản ghi chứa phần tử con lặp lại — ba dòng hàng trong một đơn hàng — bảng lưới không thể biểu diễn chúng thành hàng mà không nhân bản mọi thứ xung quanh, nên các giá trị lặp lại được giữ trong ô của chúng. Namespace bị loại khỏi tên cột, vì một cột tên ns2:customerName chẳng giúp ích gì trong bảng tính, còn bản thân các giá trị thì giữ nguyên.
XML dạng văn xuôi không có bảng để tìm và chuyển đổi rất kém. Một trang XHTML, một bài viết DocBook, một chương ePub hay một bản vẽ SVG là tài liệu chứ không phải tập dữ liệu: cấu trúc của chúng vốn lồng nhau và không đều, và không có bản ghi lặp lại nào để dựng thành hàng. Quá trình chuyển đổi vẫn sẽ cho ra thứ gì đó, nhưng thứ đó sẽ không dùng được. Trang này dành cho XML dữ liệu, và hiểu rõ sự khác biệt này tiết kiệm thời gian hơn bất kỳ tinh chỉnh nào.
Khi bạn cần công cụ khác
Khi đã biết cấu trúc, hãy chủ động trích xuất thay vì để công cụ suy đoán. xmlstarlet sel -t -m "//order" -v "@id" -o "," -v "customer" -n data.xml lấy đúng các trường bạn cần bằng một biểu thức XPath, và xq làm điều tương tự với cú pháp kiểu jq. Đó là khác biệt giữa một lần chuyển đổi tình cờ chạy được và một bước bạn có thể đưa vào quy trình tự động.
Với file rất lớn, mọi thứ ở đây đều không phù hợp: toàn bộ tài liệu được phân tích vào bộ nhớ, và XML phân tích dưới dạng cây thường chiếm gấp nhiều lần dung lượng file. Các trình phân tích dạng luồng — iterparse của Python, hoặc SAX trong bất kỳ ngôn ngữ nào — duyệt qua tài liệu hàng gigabyte với bộ nhớ không đổi, và là cách thực tế duy nhất khi file vượt quá vài trăm megabyte.
Câu hỏi thường gặp
Làm sao công cụ biết phần nào của XML là bảng?
Bản ghi là các phần tử lặp lại dưới cùng một phần tử cha — mọi <book> trong một <catalog>, mọi <item> trong một kênh RSS. Mỗi nhóm được chấm điểm theo số bản ghi và số trường, nhóm tốt nhất được chọn, còn các nhóm khác chỉ cách một cú nhấn.
Thuộc tính và phần tử lồng nhau được xử lý thế nào?
Mỗi thứ trở thành một cột mang tên theo đường dẫn của nó: thuộc tính id thành id, <author><name> thành author/name, còn <price currency="EUR"> cho ra price và price/@currency. Một trường lặp lại trong cùng một bản ghi sẽ được gộp vào một ô hoặc trải ra nhiều cột đánh số.
Công cụ có mở được file Excel XML Spreadsheet 2003 không?
Có. Các file này được nhận diện và chuyển đổi theo từng trang tính, giữ nguyên số, ngày tháng và văn bản.
Nếu file chứa nhiều bảng — đơn hàng và các mặt hàng trong đó — thì sao?
Mỗi nhóm lặp lại được đưa ra riêng. Một bảng lồng nhau, chẳng hạn các mặt hàng trong từng đơn hàng, có thêm một cột xác định bản ghi cha để bạn ghép hai trang tính với nhau.
File của tôi có bị lưu trữ ở đâu không?
Không. XML được phân tích và bảng tính được tạo ngay tại đây, không lưu trữ gì cả.
Mở XML từ nguồn không rõ có an toàn không?
Có. File được đọc bằng trình phân tích XML của trình duyệt, vốn không bao giờ tải thực thể bên ngoài hay DTD và không thể chạy bất cứ thứ gì bên trong file.
Nên biết: Tài liệu dạng văn xuôi thay vì dữ liệu — trang XHTML, bài viết DocBook — không có bảng để tìm và chuyển đổi kém. File lớn hơn khoảng 100 MB có thể vượt quá bộ nhớ của trình duyệt.
Đặt công cụ này lên website của bạn
Miễn phí cho mọi blog, trang lớp học hay bài viết hướng dẫn. Chỉ cần dán một đoạn mã là khách truy cập có thể dùng ngay trên trang của bạn.
Công cụ bảng tính khác
Chuyển Excel sang XML
Các hàng thành XML sạch, đúng cú pháp
Chuyển JSON sang CSV
JSON lồng nhau trải phẳng thành các cột gọn gàng
Chuyển CSV sang Excel
CSV sang XLSX với số và ngày tháng thực sự
Chuyển CSV sang JSON
CSV sang JSON lồng nhau, đúng kiểu dữ liệu
Chuyển Excel sang CSV
Mọi trang tính sang CSV, đúng bảng mã bạn cần
Chuyển ODS sang XLSX
Bảng tính LibreOffice thành file Excel