XML (Lenguaje de marcado extensible) es similar a HTML pero utiliza etiquetas diferentes para definir objetos. Se utiliza para almacenar y transportar datos sin depender de herramientas de software o hardware. En ciertos casos, es posible que necesitemos exportar datos de XML a Excel (XLSX o XLS) para su posterior procesamiento. Los archivos de Excel se utilizan ampliamente para almacenar y organizar datos. En este artículo, aprenderemos cómo convertir XML a Excel usando C#.
En este artículo se tratarán los siguientes temas:
- API de conversión de XML a Excel de C#
- Convertir XML a Excel
- Exportar columnas específicas de XML a Excel
API de conversión de XML a Excel de C#
Para convertir XML a Excel, usaremos la API Aspose.Cells for .NET. Es una API potente y rica en funciones que permite realizar funciones de automatización de Excel mediante programación sin necesidad de una aplicación de Microsoft Excel.
La clase Workbook de la API representa una hoja de cálculo de Excel. Permite abrir y guardar archivos nativos de Excel. También proporciona métodos para copiar datos de otros libros de trabajo, combinar dos libros de trabajo y proteger la hoja de cálculo de Excel. Esta clase permite importar archivos de datos XML al Workbook mediante el método ImportXml(). El método save() de esta clase permite guardar los libros de trabajo en los formatos especificados.
Descargue la DLL de la API o instálela usando NuGet.
PM> Install-Package Aspose.Cells
Convertir XML a Excel en C#
Podemos convertir fácilmente un archivo de datos XML en un libro de Excel siguiendo los pasos que se detallan a continuación:
- Cree una instancia de la clase Workbook.
- Llame al método ImportXml() para importar un archivo XML.
- Guarde el Workbook como un archivo XLSX usando el método Save(). Toma la ruta del archivo de salida como argumento.
El ejemplo de código que se muestra a continuación muestra cómo convertir XML a Excel usando C#.
// Este ejemplo de código demuestra cómo importar un archivo de datos XML en Excel.
// Ruta de la carpeta de datos
var dataDir = @"C:\Files\";
// Crear una instancia de la clase Workbook
Workbook workbook = new Workbook();
// Importar XML en el Workbook
// Toma la ruta del archivo XML, el nombre de la hoja de destino, la fila y la columna de destino como argumentos.
workbook.ImportXml(dataDir + "Catalog.xml", "Sheet1", 0, 0);
// Guarde el Workbook como XLSX
workbook.Save(dataDir + "data_xml.xlsx", Aspose.Cells.SaveFormat.Auto);
Exportar columnas específicas de XML a Excel en C#
Necesitamos crear un archivo XSLT con un diseño HTML para representar nuestros datos en una tabla. Un archivo XLS es una hoja de estilo que se puede utilizar para transformar documentos XML en otros tipos de documentos y para formatear la salida. Incluiremos solo las columnas requeridas en el archivo XSLT para convertirlo a Excel. El archivo XLS que nos ayudará a hacer esto podría verse así:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th style="text-align:left">Title</th>
<th style="text-align:left">Artist</th>
<th style="text-align:left">Price</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td>
<xsl:value-of select="title"/>
</td>
<td>
<xsl:value-of select="artist"/>
</td>
<td>
<xsl:value-of select="price"/>
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Podemos obtener columnas específicas de un archivo de datos XML en un libro de Excel siguiendo los pasos que se detallan a continuación:
- Primero, lea el archivo XML usando el método File.ReadAllText().
- A continuación, lea el archivo XSLT utilizando el método File.ReadAllText().
- Luego, transforme el contenido XML usando la instancia de la clase XslCompiledTransform.
- Después de eso, especifique varias configuraciones de la hoja de cálculo, como AutoFitRows y AutoFitColumns.
- Guarde el Workbook como un archivo XLSX usando el método Save(). Toma la ruta del archivo de salida como argumento.
El ejemplo de código que se muestra a continuación muestra cómo convertir columnas específicas de XML a Excel usando C#.
// Este ejemplo de código muestra cómo importar columnas específicas de un archivo de datos XML en Excel.
// Ruta de la carpeta de datos
var dataDir = @"C:\Files\";
// Leer el contenido del archivo XML
var XmlContent = File.ReadAllText(dataDir + "Catalog.xml");
// Leer el contenido del archivo XSLT
var XsltContent = File.ReadAllText(dataDir + "CatalogXSLX.xslt");
// Transforme XML y obtenga contenido en MemoryStream
var xmlContent = TransformXml(XmlContent, XsltContent);
// Crear Workbook
var workbook = new Workbook(xmlContent);
workbook.Worksheets[0].AutoFitRows();
workbook.Worksheets[0].AutoFitColumns();
// Guarde el Workbook como XLSX
workbook.Save(dataDir + "SpecificColumnsData_xml.xlsx", Aspose.Cells.SaveFormat.Auto);
Obtenga una licencia gratis
Puede obtener una licencia temporal gratuita para probar la biblioteca sin limitaciones de evaluación.
Conclusión
En este artículo, hemos aprendido cómo importar datos de un archivo XML a Excel en C#. También hemos visto cómo extraer datos de columnas específicas de un archivo XML y convertirlo a Excel mediante programación. Además, puede obtener más información sobre Aspose.Cells for .NET API utilizando la documentación. En caso de cualquier ambigüedad, no dude en contactarnos en el foro.