Maneira rápida de converter planilha do Excel em XML

3

Como você converte facilmente um arquivo do Excel em um arquivo XML?

Ao tentar salvar como um arquivo XML, ele reclama que o arquivo não possui um mapeamento XML. Clicar em ajuda traz informações bastante complicadas sobre o arquivo XML Mapping, XLD e algumas outras siglas. Por que isso é tão complicado?

Ultimamente, percebi que delimitado por tabulações, CSV e outros são propensos a problemas de formatação (comas em um campo, novas linhas, citações, ...). Então eu acho que XML é a melhor maneira de processar dados do Excel.

Por favor avise. Talvez uma ferramenta de autoestrada?

    
por nute 23.03.2010 / 02:44

6 respostas

0

Que tal isso: link

    
por 25.03.2010 / 18:39
1

Aqui está uma referência antiga ao ' XML::Excel ' Perl module .
outra pergunta no Stackoverflow que mostra amostras para converter em CSV que podem lhe dar ideias sobre o uso desses scripts.

Há também um breve artigo do IBM developerWorks sobre dicas para Converter dados do Excel em XML que aponta para alguns recursos.

    
por 23.03.2010 / 03:21
1

aqui está o código perl para converter o arquivo CSV em arquivo XML

use XML::CSV;
$csv_obj = XML::CSV->new();

 $csv_obj->parse_doc("customer.csv", {headings => 1});

 $csv_obj->print_xml("customer.xml");

mais detalhes você pode encontrar em Converta o arquivo CSV no arquivo XML em Perl

    
por 21.07.2015 / 12:48
0

No Excel 2007, por padrão, as planilhas são salvas em um formato XML complicado (xlsx) que então é compactado em um único arquivo. Se você deseja salvar em um formato XML personalizado, defina um esquema , que define como os dados serão formados. Não existe apenas a opção "salvar em XML".

    
por 23.03.2010 / 03:20
0

Se você deseja abrir a guia do desenvolvedor, aqui está um código VBA para gerar XML.

Eu escrevi anteriormente essa resposta em uma pergunta semelhante no SO, então é copiado de lá.

Pode ser um pouco avançado se você não estiver acostumado com a parte de desenvolvedor do Excel, mas se fizer isso uma vez, poderá gerar automaticamente documentos xml a partir dos dados do Excel com o pressionar de um botão.

'*****************************************************************
'This is how the main structure of the XMl file is created in VBA
'Use this as guidance to create new XML files.
'*****************************************************************

Sub CreateXML()

Dim objDom As DOMDocument
Dim objRootElem As IXMLDOMElement
Dim objSubRootElem As IXMLDOMElement
Dim objMemberElem As IXMLDOMElement
Dim objSubMemberElem As IXMLDOMElement
Dim objMemberRel As IXMLDOMAttribute
Dim objMemberName As IXMLDOMElement

Set objDom = New DOMDocument    

' Creates root element
'Set objRootElem = objDom.createElement("r1")
'objDom.appendChild objRootElem

' Creates sub root element
'Set objSubRootElem = objDom.createElement("r2")
'objRootElem.appendChild objSubRootElem

' Creates Error Date & Time element
'Set objMemberElem = objDom.createElement("r3")
'objSubRootElem.appendChild objMemberElem

' Create element under Member element, and
' gives value "some guy"
'Set objMemberName = objDom.createElement("r3_Tag")
'objMemberElem.appendChild objMemberName
'objMemberName.Text = "value"

' Creates User Name element
'Set objMemberElem = objDom.createElement("r2_tag")
'objSubRootElem.appendChild objMemberElem
'objMemberElem.Text = "value"

' Creates Error Date & Time element
'Set objMemberElem = objDom.createElement("r3")
'objSubRootElem.appendChild objMemberElem

' Create element under Member element, and
' gives value "some guy"
'Set objMemberName = objDom.createElement("r3_Tag")
'objMemberElem.appendChild objMemberName
'objMemberName.Text = "value"

' Creates User Name element
'Set objMemberElem = objDom.createElement("r2_tag")
'objSubRootElem.appendChild objMemberElem
'objMemberElem.Text = "value"

'Para tornar isso mais legível para humanos, precisamos adicionar formatação, recuar e adicionar um retorno de carro antes de seus filhos. Então recursivamente formatar as crianças com maior recuo.

Sub FormatXmlNode(ByVal node As IXMLDOMNode, ByVal indent As Integer)
    Dim child As IXMLDOMNode
    Dim text_only As Boolean

    ' Do nothing if this is a text node.
    If TypeOf node Is IXMLDOMText Then Exit Sub

    ' See if this node contains only text.
    text_only = True
    If node.HasChildNodes Then
        For Each child In node.ChildNodes
            If Not (TypeOf child Is IXMLDOMText) Then
                text_only = False
                Exit For
            End If
        Next child
    End If

    ' Process child nodes.
    If node.HasChildNodes Then

        ' Add a carriage return before the children.
        If Not text_only Then
            node.InsertBefore node.OwnerDocument.createTextNode(Chr(10)), node.FirstChild
        End If

        ' Format the children.
        For Each child In node.ChildNodes
            FormatXmlNode child, indent + 2
        Next child
    End If

    ' Format this element.
    If indent > 0 Then

        ' Indent before this element.
        node.ParentNode.InsertBefore node.OwnerDocument.createTextNode(Space$(indent)), node

        ' Indent after the last child node.
        If Not text_only Then node.appendChild node.OwnerDocument.createTextNode(Space$(indent))

        ' Add a carriage return after this node.
        If node.NextSibling Is Nothing Then
            node.ParentNode.appendChild node.OwnerDocument.createTextNode(Chr(10))
        Else
            node.ParentNode.InsertBefore node.OwnerDocument.createTextNode(Chr(10)), node.NextSibling
        End If
    End If
End Sub

'Salva dados XML no disco.

On Error Resume Next
MkDir ("C:\Users\" & Environ$("Username") & _
"\Desktop\FXML_FILES") 'Creates folder on desktop, ignores error if it already exists
On Error GoTo 0

objDom.Save ("C:\Users\" & Environ$("Username") & _
"\Desktop\XML_FILES\" & "filename.xml")
    
por 04.11.2015 / 14:06
-1

O Excel tem uma ferramenta XML para converter de planilha para XML: link

    
por 05.06.2014 / 21:15