Pregunta sobre c#, openxml, oledb – OLE DB vs OPEN XML SDK vs Excel.interop

11

Necesito leer archivos XLSX y extraer de él una cantidad máxima de contenido. ¿Cuál de las APIs debería usar?

OLE DB, abrir XML SDK o Excel Interop?

¿Cuál es el más fácil de usar?¿Se puede recuperar toda la información utilizando uno u otro? es decir, fecha, horas, celdas combinadas, tablas, tablas dinámicas, etc.
Open XML SDK no sería tan sencillo al principio, pero lo bueno es que existen bibliotecas de código abierto de sonido que hacen que las tareas sean triviales. Mi consejo es que si no te importa usar archivos DLL de terceros, Open XML es el camino a seguir. Dos excelentes bibliotecas que puedo sugerir son ClosedXML y EPPlus. Inmediatamente puede comenzar a consultar con Linq, lo cual es genial. nawfal

Tu respuesta

1   la respuesta
17

Dependiendo de los datos que desee leer, le sugiero que utilice Open XML sobre Interop o Ole DB.
No sé un SDK XML abierto, aunque tengo algo de experiencia conEPPlus biblioteca que estoy usando mucho y solo puedo decir buenas palabras al respecto: es rápido, fácil de aprender, con buenos ejemplos. La biblioteca se basa en el formato XML de Open Office, por lo que supongo que es bastante similar al SDK que mencionó, y es capaz de leer y escribir fácilmente archivos de Excel 2007 y 2010.
En la web vinculada, encontrará una biblioteca en sí, documentación y algunos ejemplos de proyectos "Hello World" para descargar.

¿Por qué esa biblioteca en primer lugar? Porque con él podrás leer no solo los valores de las celdas, sino también sus colores, fuentes, anchos y alturas, combinando y todo lo que se detalla, que no solo puedes leer, sino también modificar. Además, no necesita tener instalado Excel para hacerlo.

En segundo lugar, por si necesita extraer.datos tabulados de la hoja de trabajo - puedes jugar con OLE DB. Me temo que con eso no podrá extraer información sobre formatos, colores, etc., ya que los datos deben estar en una hoja de cálculo organizada tabular, por lo que puede tratarse como una tabla de base de datos.

El último es Interop, porque:
- es una biblioteca COM, por lo que debe tener mucho cuidado al jugar con ella a través de .NET, ya que es fácil causar algunas pérdidas de memoria feas y difíciles de encontrar (confirmadas por mi misma experiencia) - si no desecha sus objetos correctamente, deja el proceso Excel.exe abierto,
- Es mucho más lento que los métodos anteriores,
- básicamente, casi no tiene más valor agregado que uno de los métodos anteriores (EPPlus o OleDB) y requiere que Excel esté instalado en la máquina del cliente, ¿por qué usarlo?

Buena suerte, entonces.

El propio Microsoft no recomienda usar Interop para la implementación del servidor Ives
Respuesta muy completa, gracias. He probado el openxml SDK, y debo decir que requiere un montón de código repetitivo. Echemos un vistazo al EPP. cecemel
Una razón para ir a la ruta COM será la API completa de Microsoft. Si bien las bibliotecas de terceros deben cubrir el caso de uso de 99 desarrolladores de PC, es posible que aún no estén completas. Buena respuesta +1. Me gusta más la opción Open XML aquí. Simplemente triste, tienes que escribir un montón de repetitivo. nawfal

Preguntas relacionadas