c# - otro - Alternativa a MS-Access/Excel para la manipulación de hojas de cálculo
vincular datos de excel a access (8)
Me pregunto si ya ha superado el acceso. Para esto nacen bases de datos más robustas, como SQL Server. 20,000 filas no es un número grande para SQL Server, pero apuesto a que está llegando para Access. ¿Cuánto espacio de disco ocupa Access cuando lo ejecuta? ¿Qué tan rápido crece la información, si es que lo hace?
¿Qué tan bien conoces C # versus VB? Si no conoce bien C #, podría ser una buena oportunidad para aprender. Es un problema que ya sabes bien.
Tengo una aplicación MS-Access que formatea los datos en dos grandes hojas de cálculo (más de 20,000 filas), importa estos datos en tablas, ejecuta algunas consultas para comparar los datos y los resultados como archivos de Excel.
El problema es que a medida que crece la aplicación (y el código VBA) se está convirtiendo en un problema con Access y me pregunto si hay un mejor enfoque.
¿Cuáles serían las ventajas / desventajas de una solución .NET (C #), en comparación con MS-Access, y cuáles serían las mejores bibliotecas, etc. para usar?
Aclamaciones,
Breandán
Saludos por las respuestas hasta ahora, me olvidé de mencionar que esta aplicación necesita ser independiente, necesito poder empaquetar la aplicación y enviarla al usuario final para que se instale en su computadora. Esto solo tiene (como nota) MS-Office y .Net Framework instalados, así que no estoy seguro de cuán factible sería MySQL, etc. sin tener dónde alojarlo.
En SpreadsheetGear , nuestra especialidad son los componentes de hoja de cálculo compatibles con Excel de alto rendimiento. Escuchamos todo el tiempo (ver algunas citas de clientes en esta página ) que SpreadsheetGear for .NET es más rápido y fácil de usar que otras opciones.
Hay muestras en vivo de ASP.NET con código fuente C # y VB.NET y una versión de prueba gratuita si quiere probarlo usted mismo.
Descargo de responsabilidad: soy dueño de SpreadsheetGear LLC
La biblioteca de puntos de interés de Apache puede ser útil para usted. Está basado en Java y puede trabajar en archivos de Excel.
Otra opción puede ser utilizar un controlador ODBC directo para trabajar en el archivo XLS. Podría ser una gran cantidad de registros, aunque ..
El proyecto POI consiste en API para manipular varios formatos de archivo basados en el formato de documento compuesto OLE 2 de Microsoft y en formato Office OpenXML, utilizando Java puro. En resumen, puede leer y escribir archivos de MS Excel utilizando Java. Además, puede leer y escribir archivos de MS Word y MS PowerPoint utilizando Java. POI es su solución Java Excel (para Excel 97-2007). Sin embargo, tenemos una API completa para portar otros formatos de Documento Compuesto OLE 2 y recibir a otros para que participen.
Los archivos basados en OLE 2 Compound Document Format incluyen la mayoría de los archivos de Microsoft Office, como XLS y DOC, así como los formatos de archivo basados en la API de serialización MFC.
Los archivos basados en Office OpenXML Format incluyen los nuevos formatos de archivos basados en xml (2007+), incluidos los archivos de Microsoft Office como XLSX, DOCX y PPTX.
Editar: echa un vistazo a una herramienta como Monarch Pro , es excelente en la minería de datos, etc.
Me parece que Access no te está ayudando como intermediario. 20K filas no me parece mucho. Dijiste que pasas de Excel a Access y luego de vuelta a Excel. ¿Necesitas mantener los datos de acceso?
Si no, sugeriría ir con .Net y una biblioteca de terceros de Excel como FlexCel e ir directamente de Excel a Excel en la memoria. Empaquetar aplicaciones .Net es fácil con un instalador o ClickOnce .
Moverse a .Net le permitirá tener mejores herramientas a su disposición para manipular los datos.
Sin embargo, debe tener cuidado con respecto a lo que está haciendo exactamente con su solución de acceso: si está haciendo un manejo especial de casos para procesar los datos desde y hacia Excel, es probable que todavía deba hacerlo. aquellos en cualquier idioma o marco que elijas.
Si tiene una gran cantidad de código invertido en llevar los datos de Excel a Access, puede conservar Access para esa parte y usar .Net para ayudarlo a hacer las comparaciones y la creación del informe de Excel resultante.
Es un poco difícil hacer una recomendación sin saber más acerca de su proyecto.
Si solo desea usar la automatización para incorporar datos y crear su archivo de Excel, es posible que .Net no le ofrezca mucho, ya que igual tendrá que hacer las mismas cosas que ya hizo en Access.
En su lugar, puede considerar usar un componente comercial de Excel que use un paradigma diferente para abrir / crear una hoja de cálculo Excel de una manera más agradable.
Hay algunos proveedores de componentes que tienen estos.
Una solución también es usar herramientas de informes para extraer directamente los datos de Excel y generar un informe que simplemente puede guardar de nuevo en Excel.
Mi consejo sería:
- Si su solución de Access es estable y está haciendo su trabajo, entonces puede considerar guardarla.
Pasar a un nuevo sistema le costará tiempo y dinero y debe verificar si el resultado vale la inversión. - Si te sientes demasiado limitado por las capacidades de Access, entonces dedica algo de tiempo a experimentar con diversas soluciones y componentes que te permiten manipular Excel; por ejemplo, usar un proveedor de LINQ Excel ( 1 o 2 ) puede proporcionar una buena abstracción o probar varios anuncios comerciales. componentes hasta que encuentre uno que coincida con sus necesidades.
Si va a la ruta .Net, puede que ni siquiera necesite una base de datos para procesar los datos.
Sin embargo, si lo hace, siempre puede usar Jet -o su nueva versión, ACE- como un back-end que creará bases de datos de MSAccess.
Ya está instalado en la mayoría de las máquinas y es compatible con las herramientas de MS.
Otras buenas opciones son SQL Server Compact y SQLite, ya que ninguna requiere configuración compleja, solo una DLL para enviar con su proyecto.
SpreadsheetGear totalmente rocas! Obtienes lo mejor de ambos mundos, donde toda la lógica en la hoja de cálculo está disponible para que la ejecutes desde tu código. Realmente puede acortar su desarrollo, ya que puede hacer que las unidades de negocios ayuden a dar forma a la lógica de sus procesos comerciales.
Consideraría un sistema que usó SQL Server Compact para comenzar. Puede usarlo sin instalación si lo desea (aunque le sugiero que lo haga, es mucho más fácil asumir que el dll requerido está en el GAC). Si posteriormente encuentra que necesita más funcionalidad (por ejemplo, procedimientos almacenados o columnas TEXT / BLOB, ese tipo de cosas), mudarse a SQL Server será trivial.
Si su base de datos se regenera cada vez, entonces probar cosas diferentes es tan simple como apuntar a un archivo diferente.
Si tiene un código considerable en VBA, le sugiero que primero lo mueva a VB.Net (haciendo esto, primero y la transición más propensa a errores más fácil) y luego migrar eso a c # si ese es su deseo.
En cuanto a generar / alterar la hoja de Excel tiene tres opciones.
Una es usar VSTO aunque Wikipedia es una descripción mucho mejor. Esto será lo más parecido a su antiguo desarrollo de VBA, aunque tiene un conjunto completamente diferente de complejidades.
Otra es usar una de las bibliotecas de salida de Excel, hay algunas más muchas más comerciales. No podría recomendar ninguno personalmente, aunque otros aquí tienen .
Lo último es simplemente descargar csv y dejar que Excel lo solucione cuando lo abras.
Yo diría que para los volúmenes de datos de 20,000 filas con las que está trabajando, una base de datos de SQL Server no va a ganar mucho, excepto para pasar a procedimientos almacenados para la manipulación de datos. A este respecto, es posiblemente mejor que VBA, por lo que probablemente obtendrá una base de código que es más fácil de mantener. Sin embargo, los volúmenes de datos que describe son pequeños para los estándares de la base de datos. No esperaría que el rendimiento sea un problema hasta que tenga uno o dos órdenes de magnitud más de datos que eso.
Si desea realizar un trabajo de borrado de datos , podría estar mejor con un lenguaje de scripting como Perl o Python . Estos lenguajes son mucho mejores para las tareas de manipulación de datos que C # o VB.Net. Se pueden encontrar buenas distribuciones de Windows gratuitas tanto de Perl como de Python en www.activestate.com .
Excel se puede escribir con Python a través de la interfaz python-com usando la misma API que VBA, pero ganando un lenguaje mucho mejor con una gran variedad de libraies disponibles. Del mismo modo, esto también se puede hacer con Perl a través de Win32 :: OLE . También hay algunas bibliotecas de utilidades como pyexcelerator , xlrd y xlwt , para Python y Spreadsheet :: WriteExcel / Spreadsheet :: ParseExcel para Perl. También hay módulos disponibles para crear aplicaciones de ventanas instalables como Py2EXE o Perl Dev Kit
Esta publicación de analiza el uso de Excel desde Python, incluida la generación de un contenedor con MakePy, con un poco más de profundidad.
Si está trabajando con .Net, también podría probar IronPython : es una implementación .Net nativa de Python, que se ejecutará en cualquier lugar con un tiempo de ejecución .Net adecuado instalado. También puede obtener un complemento gratuito de Visual Studio llamado IronPythonStudio ).
Otra alternativa es R. R es principalmente un paquete estadístico, pero el lenguaje central tiene sólidas capacidades de manipulación de datos y una variedad de bibliotecas de interfaz (y otras como gráficos, varios cálculos estadísticos y una interfaz de Excel . En realidad, es una poderosa herramienta de generación de informes y manipulación de datos de uso general .