3 votos

Forma rápida de convertir hoja de Excel a XML

¿Cómo se puede convertir fácilmente un archivo de excel en un archivo XML?

Al intentar guardar como un Archivo XML, se queja de que el archivo no tiene una asignación XML. Al hacer clic en ayuda trae bastante complicado cosas acerca de XML archivo de Asignación, XLD y algunas otras siglas. ¿Por qué es tan complicado?

Últimamente me he dado cuenta de que delimitado por tabulaciones, CSV y otros son propensos a problemas de formateo (comas en un campo, nuevas líneas, citas, ...). Así que creo que XML es una mejor manera de proceso de datos de excel.

Por favor avise. Tal vez una de la autopista sin peaje de la herramienta?

1voto

Brian Vallee Puntos 61

Aquí es un anciano referencia a la 'XML::Excel' Perl módulo.
Hay otra pregunta en Stackoverflow que muestra las muestras para la conversión de CSV que puede dar ideas sobre el uso de estos scripts.

También hay un corto de IBM developerWorks artículo sobre consejos para Convertir datos de Excel a XML que señala a algunos recursos.

1voto

FastZhong Puntos 131

Aquí está el código perl para convertir el archivo CSV en archivo XML

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

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

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

más detalles puedes encontrar en un archivo CSV de convertir en archivo XML en Perl

0voto

mahler Puntos 161

En Excel 2007, por defecto, hojas de cálculo se guardan en un formato XML complicada(xlsx) que luego es comprimido en un solo archivo. Si desea guardar en un formato XML personalizado se debe definir un esquema que define cómo se formarán los datos. No hay ninguna opción a "guardar XML".

0voto

adrian Puntos 1

Qué tal que: http://office.microsoft.com/en-us/excel/HA102635091033.aspx

0voto

Jon Carlstedt Puntos 150

Si desea abrir la ficha programador, aquí está el código VBA para generar XML.

Yo escribí anteriormente esta respuesta en una pregunta similar en ASÍ, por lo que este es copypasted a partir de ahí.

Podría ser un poco avanzado si usted no está acostumbrado a que el desarrollador de la parte de Excel, pero si lo haces una vez, puede generar automáticamente documentos xml a partir de los datos de Excel con la prensa de un botón.

'*****************************************************************
'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 hacer esto lo más legible para los seres humanos, tenemos que añadir el formato, sangría y añadir un retorno de carro delante de sus hijos. A continuación, de forma recursiva formato de los niños con el aumento de la sangría.

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

'Guarda los datos XML en el 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")

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: