2012-05-08 80 views
10

¿Cuáles son algunas bibliotecas que extienden OpenXML (o agregan un tipo de capa de abstracción a OpenXML) similar a ClosedXML?Bibliotecas OpenXML (alternativas a ClosedXML)

Estoy buscando una herramienta comercial o freeware con al menos la versión 1.0.

Gracias de antemano.

+3

Sé que esta es una pregunta antigua, pero ¿hay alguna razón en particular por la que no contento con ClosedXML? ¿Es más una cuestión política donde necesita tener un número de versión importante, o crees que ClosedXML no es lo suficientemente estable? – jamiebarrow

+0

Mi problema con ClosedXML es que simplemente no funciona en muchos casos. Hacer referencia a celdas con fórmulas de matriz, fórmulas de tabla, SUMAR.SI son algunas de las cosas que desglosan por completo la biblioteca. – Vedran

Respuesta

14

Código abierto: ¿Ha mirado EPPlus?

Eslogan: cree hojas de cálculo avanzadas de Excel 2007/2010 en el servidor.

Licencia: Licencia pública general de la Biblioteca GNU (LGPL).

+0

con EPPlus ¿podemos generar o escribir datos o gráficos en un archivo de PowerPoint? o solo se limita a sobresalir solo? – Mou

+1

Sí, puede crear archivos de PowerPoint. La forma en que terminamos haciéndolo fue usando ciertos archivos de plantilla y luego manipulándolos usando EPPlus. –

16

SpreadsheetLight, y se ejecuta internamente en Open XML SDK. Licencia MIT Descargo de responsabilidad: escribí SpreadsheetLight.

+1

¡Buena biblioteca! Me pregunto sobre el rendimiento. ¿Cómo se ve comparando con ClosedXML, EPPlus u otras bibliotecas (comerciales) GameBox.Spreadsheet o SpreadsheetGear 2010? Sé que SpreadsheetLight es una biblioteca gratuita, pero me gustaría saber su velocidad :) – Misiu

41

He estado evaluando EPPlus, ClosedXML y SpreadsheetLight durante la última semana. Las tres son geniales bibliotecas que hacen que trabajar con el extremadamente complicado OpenXML sea muy fácil. He decidido ir con EPPlus por las siguientes razones:

  • Inicialmente, iba a ir con ClosedXML. Tiene una gran documentación y la estructura del objeto tiene mucho sentido para mí. Sin embargo, tengo algunos requisitos de gráficos ya partir de ahora, ClosedXML no tiene funciones de gráficos.

  • Luego me encontré con SpreadsheetLight que también tiene buenos documentos y admite algunos gráficos. También me gusta la actitud del autor y su compromiso con su producto. Sin embargo, el proyecto se basa en el SDK de OpenXML 2.0, no en el 2.5, que es un factor decisivo para mí porque quiero tener la flexibilidad de trabajar directamente con OpenXML en caso de que la biblioteca no satisfaga mis necesidades. Mi proyecto se dirige a Excel 2013, así que quiero tener el último SDK con el que trabajar.

  • Finalmente, me encontré con EPPlus que tiene la documentación correcta y admite la creación de gráficos. Ha sido descargado muchas veces más que los otros dos, lo que me da cierta seguridad al saber que otros lo están usando y que la comunidad parece estar activa en todo el proyecto. También están actualmente en la versión beta 2 de la versión 4, lo que suena prometedor a partir de lo que otros dicen. También estoy enterado de que EPPlus tiene un buen rendimiento (aunque los otros no son necesariamente malos) y la próxima versión 4 parece estar mejorando aún más.


actualización

Otra característica muy útil que he encontrado incluido con EPPlus es como se expone el XML para las diversas partes de la hoja de trabajo. Si hay una función que EPPlus no admite, aún puede editar el XML (en algunos casos) para obtener el resultado deseado. Por ejemplo, si tiene un gráfico dinámico y desea habilitar etiquetas de varios niveles, puede hacer lo siguiente:

private void EnableMultiLevelLabels(ExcelChart chart) 
    { 
     var element = chart.ChartXml.GetElementsByTagName("c:catAx")[0]; 
     if (element == null) 
      return; 

     var multiLevelLabelNode = element.AppendChildElementNode("c:noMultiLvlLbl"); 
     if (multiLevelLabelNode != null) 
      multiLevelLabelNode.AppendNodeAttribute("val", "0"); 
    } 
+1

¡Qué buena respuesta! – nawfal

+0

@nawfal: ¡Gracias! – Chris

+0

Estoy de acuerdo. ¡Maravillosa respuesta! Quería usar ClosedXML debido al modelo de objetos, pero esta respuesta me inclinó por completo. Me pregunto si EPPlus podría adoptar el modelo de objetos de ClosedXML de alguna manera. ¿Cuáles son tus pensamientos? –