2009-01-13 32 views
7

Estoy buscando una biblioteca que me permita modificar programáticamente los archivos de Excel para agregar datos a ciertas celdas. Mi idea actual es usar rangos con nombre para determinar dónde insertar los nuevos datos (esencialmente un rango de 1x1), luego actualizar los rangos nombrados para señalar los datos. La aplicación existente con la que se va a integrar está escrita completamente en C++, por lo que idealmente estoy buscando una solución C++ (de ahí que this thread sea de utilidad limitada). Si todo lo demás falla, iré con una solución .NET si hay alguna forma de vincularla con nuestra aplicación C++.mejor manera de modificar programáticamente hojas de cálculo de Excel

Una solución ideal sería el código abierto, pero ninguno de los que he visto hasta ahora (MyXls y XLSSTREAM) está a la altura del desafío. Me gusta el aspecto de Aspose.Cells, pero es para .NET o Java, no C++ (y cuesta dinero). Necesito admitir todos los formatos de Excel desde el 97 hasta el presente, incluidos los formatos XLSX y XLSB. Idealmente, también admitiría formatos como OpenOffice y (para resultados) PDF y HTML.

Algunos casos de uso que deben apoyar:

  • leer y modificar cualquier celda de la hoja de cálculo, incluyendo fórmulas
  • rangos
  • crear, leer, modificar el nombre (los mismos rangos, no sólo las células)
  • copiando el formato de una celda a un montón de otras (incluido el formato condicional) - usaremos una celda como plantilla para todas las demás que completamos con datos.

Cualquier ayuda que pueda darme para encontrar una biblioteca adecuada sería genial. También me gustaría escuchar algunos testimonios sobre las diversas sugerencias (incluidas las de mi publicación) para poder tomar decisiones más informadas: ¿qué es fácil de usar, libre de errores, barato, etc.?

Respuesta

0

Terminé usando Aspose.Cells como mencioné en mi publicación original, ya que me pareció la ruta más fácil. Estoy muy feliz con la forma en que resultó, y su apoyo es muy bueno. Tuve que crear un contenedor en C# que exportara una interfaz COM a mi aplicación C++.

3

La sugerencia más segura es utilizar OLE. Utiliza el COM, que no requiere .NET en absoluto.

http://en.wikipedia.org/wiki/OLE_Automation < --la mitad de abajo es un ejemplo de C++.

Es posible que deba incluir algunas funcionalidades en las funciones de usabilidad, pero en realidad no es feo trabajar con ellas.

EDITAR: Solo tenga en cuenta que necesita una copia de Excel para que funcione. Además, hay algunos archivos .h de primera parte que puedes encontrar específicos para Excel. (todo se explica en el artículo de Wikipedia)

0

¿Ya ha intentado utilizar las interfaces COM de Excel? Obviamente Excel necesita instalarse en la máquina, y es un dolor tratar con ...

0

Yo diría que una solución .NET con interoperabilidad COM para enlazar con su aplicación C++ es la mejor solución. En más de diez años de trabajo con ellos, nunca había visto una automatización COM de Excel que no perdiera memoria en alguna parte.

Si necesita automatizar Excel, recomiendo Visual Studio Tools for Office. Si no necesita automatizar, solo modificar archivos y esos archivos pueden estar en formato Office 2007, es mejor que encuentre una biblioteca que manipule los archivos directamente en lugar de abrir Excel para hacerlo.

2

No sé si esta es una opción para usted, pero los nuevos formatos de Office 2007 están en formato XML comprimido, lo que hace que sea muy factible hacer sus propias modificaciones. Ver here for the specifications.

1

se ocupará de sus requisitos y tiene una API que es muy similar a Excel.

Al insertar celdas, sus nombres definidos (y cualquier otra fórmula/gráfico/etc ...) se arreglarán automáticamente para referenciar el nuevo rango (como lo harían en Excel). Por lo tanto, no necesitaría actualizar sus nombres definidos (aunque hay soporte completo para crear y actualizar nombres definidos si eso es lo que desea hacer).

SpreadsheetGear es un componente .NET, pero puede crear su propio contenedor que se pueda llamar desde C++.

Puede see what our customers say y descargar la evaluación gratuita, completamente funcional here.

Cuestiones relacionadas