Dữ liệu XML từ một ô Excel sang tệp XML mới [đã đóng]


0

Trong A1, A2, A3 ... A16000 Tôi có toàn bộ bối cảnh của một XML trong một ô.

Ví dụ: Toàn bộ XML cho một hóa đơn là A1, hóa đơn tiếp theo bằng A2, v.v.

Làm cách nào tôi có thể lưu ngữ cảnh của từng ô, vào các tệp XML riêng biệt?

Tôi đã cố trích xuất dữ liệu liên quan trực tiếp từ ô bằng cách sử dụng "filterxml", nhưng tôi gặp rắc rối khi inovice chứa nhiều dòng mục.


1
Bạn có mã mẫu của những gì bạn đã thử?
Terry

= FILTRERXML ($ A2; B $ 1) - Trong B1 tôi có "// cac: Item / cbc: Mô tả". Tôi có thể biến nó thành một mảng, và sau đó nó lấy tất cả thông tin, nhưng không phải tất cả các hóa đơn đều có cùng số lượng dòng.
Claes Thaysen

FILTERXML không phải là một chức năng tiêu chuẩn trong Excel, tôi e rằng chúng tôi không thể giúp bạn với nó mà không biết. Tùy chọn tốt nhất sẽ là liên hệ với tác giả của nó.
Máté Juhász

Nó có vẻ như LỌC là một chức năng có sẵn trong các phiên bản Excel đã chọn bắt đầu từ năm 2013. FILTRERXML là một trong những bản dịch ngôn ngữ chức năng.
fixer1234

Câu trả lời:


2

Giả sử toàn bộ XML thực sự là một định dạng XML hợp lệ và bạn chỉ cần xuất từng ô dưới dạng tệp riêng của mình, bạn có thể sử dụng VBA sau:

Sub ExportCellsToXMLFiles()
    On Error GoTo err:
    Dim OutputFolder: OutputFolder = "D:\Test\XML\" 'Specify a valid dir to output to - make sure you include the trailing slash.
    Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim objFile
    Dim Count: Count = 1 'Row number to start on
    Do
        Set objFile = objFSO.CreateTextFile(OutputFolder & "Invoice_" & Count & ".xml", False, True) ' You can change the file names if needed here
        objFile.Write (Cells(Count, 1).Value)
        objFile.Close
        Count = Count + 1
    Loop Until IsEmpty(Cells(Count, 1).Value)

err:
    Set objFile = Nothing
    Set objFSO = Nothing
End Sub

EDIT: Tôi nghĩ rằng một số chương trình nhất định có thể không diễn giải chính xác vì họ mong đợi bộ ký tự UTF-8. Hãy thử mã này thay thế:

Sub ExportCellsToXMLFiles()
    On Error GoTo err:
    Dim OutputFolder: OutputFolder = "D:\Test\XML\"
    Dim fsT As Object
    Dim Count: Count = 1
    Do
        Set fsT = CreateObject("ADODB.Stream")
        fsT.Type = 2
        fsT.Charset = "utf-8"
        fsT.Open
        fsT.WriteText (Cells(Count, 1).Value)
        fsT.SaveToFile OutputFolder & "Invoice_" & Count & ".xml", 2
        Count = Count + 1
    Loop Until IsEmpty(Cells(Count, 1).Value)

err:
    Set fsT = Nothing
End Sub

Cảm ơn bạn! Tôi nhận được một lỗi phân tích cú pháp. Vì vậy, nó có thể không phải là một XML hợp lệ. Tôi sẽ đính kèm một ví dụ về nội dung của một ô
Claes Thaysen

& lt ;? xml phiên bản = "1.0" mã hóa = "UTF-8"? & gt; xsd "xmlns =" ​​urn: ốc đảo: tên: đặc điểm kỹ thuật: ubl: lược đồ: xsd: Invoice-2 "xmlns: xsi =" w3.org/2001/XMLSchema-instance "xmlns: ca = "urn: ốc đảo: tên: đặc điểm kỹ thuật:
Claes Thaysen

@ClaesThaysen Chỉnh sửa nó thành câu hỏi của bạn :) Quá lâu cho một nhận xét
Jonno

@ClaesThaysen Tôi vừa thử nó trong một trình soạn thảo XML và có vẻ như nó đã đọc tốt? i.imgur.com/gyUNLvC.jpg
Jonno

1
@Prasanna Tôi cũng đang sử dụng Windows 10. Bạn đã loại bỏ On Error dòng, sau đó bạn sẽ nhận được một mã lỗi. Thông thái khác Tôi không biết nếu bạn có thể đã bỏ lỡ điều gì đó khi thiết lập đường dẫn thư mục, nó có thể hoạt động không đúng với vị trí bạn mong đợi! Sự khác biệt trong các khối mã là lần thứ hai sử dụng rõ ràng UTF-8 (Tôi đã đặt một dòng giữa hai với một lời giải thích ngắn gọn, nhưng có lẽ nó có thể rõ ràng hơn!)
Jonno
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.