Comencé a usar los ensamblados de interoperabilidad de Excel proporcionados por Microsoft para una de mis aplicaciones C#. Todo va bien, pero parece que hay una falta de tipeo fuerte, y sinceramente parece que estoy escribiendo código VBA. ¿Hay alguna forma alternativa de interactuar con Excel desde C# que brinde una mejor experiencia de OO? Estoy usando VS2010 y .Net 4.0 por cierto.excel interop alternative
Respuesta
Tome un vistazo al proyecto EPPlus encima en CodePlex:
Recientemente he utilizado este y funcionó muy bien. (VS2010 y .Net4)
EPPlus es una biblioteca .net que lee y escribe archivos de Excel 2007/2010 utilizando el formato Open Office Xml (xlsx).
página de ejemplo Niza: http://epplus.codeplex.com/wikipage?title=ContentSheetExample
¿Qué tipo de interacción estás buscando? ¿Solo escribiendo? ¿leyendo? Control total de todos los aspectos?
Existen muchas bibliotecas de terceros para manipular documentos de Excel, especialmente si se mantiene en el formato xlsx (2007 o posterior). Si simplemente está escribiendo cosas, incluso hay implementaciones de código abierto que puede ver (por ejemplo, Sourceforge tiene Excel Writer).
ExcelLibrary es excelente. http://code.google.com/p/excellibrary/
Tenga en cuenta que esto es pre-Office 2007 y no admite nuevos formatos de archivo. – Fosco
La automatización OLE es la forma estándar de Windows para las comunicaciones, además del Portapapeles. Debido a que no todos los idiomas que necesitan OLE tienen genéricos (o incluso tipificación estática fuerte), la interfaz es necesariamente muy general.
Si simplemente se niega a usar OLE, podría utilizar un host de secuencias de comandos de Windows para moverse por la GUI y obtener sus datos de esa manera, o raspar la pantalla con las DLL de WinAPI. También puede escribir o deslizar un ETL para archivos de Excel según los estándares del documento para archivos XLS y XLSX. De cualquier forma que lo cortes, creo que las desventajas de trabajar con OLE se ven mitigadas por la ventaja extrema de que no tienes que tratar de interactuar con Excel de ninguna otra manera.
Dependiendo de lo que esté tratando de hacer, como generar un documento XLSX, puede usar el Open XML SDK.
Esto es bueno para generar documentos de oficina; especialmente porque no requiere la instalación de una oficina para su uso.
Es gratis; una API limpia y agradable, y es compatible con Microsoft. Por ejemplo:
public static void CreateNewWordDocument(string document)
{
using (WordprocessingDocument wordDoc = WordprocessingDocument.Create(document, WordprocessingDocumentType.Document))
{
// Set the content of the document so that Word can open it.
MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();
SetMainDocumentContent(mainPart);
}
}
Ejemplo de: http://msdn.microsoft.com/en-us/library/bb497758.aspx. Hay ejemplos para trabajar con hojas de cálculo here.
Si está intentando interactuar directamente con Excel (como la automatización de UI); no generar un documento; entonces la respuesta de KeithS es cómo iría.
¿Cumplo el voto de votantes para comentar? – vcsjones
Las bibliotecas NetOffice son una alternativa a los Ensambles de interoperabilidad primarios de Office (PIA). NetOffice proporciona un conjunto de librerías de interoperabilidad independiente de la versión, por lo que puede admitir todas las versiones de Office con su aplicación e incluye IntelliSense para mostrarle qué métodos están disponibles bajo qué versiones de Office.
NetOffice también ayuda un poco a hacer un seguimiento de las referencias COM, que a veces puede ser una molestia en .NET/COM interoperabilidad.
- 1. C# y Excel interop
- 2. Excel interop MissingMethodException
- 3. Imprimir Excel usando Interop
- 4. Microsoft Interop: Excel Column Names
- 5. Eliminar filas vacías con Interop de Excel
- 6. Recursos para aprender C# Excel interop
- 7. Guardar hoja de cálculo de Excel con Interop C#
- 8. app_offline alternative
- 9. levenshtein alternative
- 10. ClojureScript interop
- 11. svn "git add" alternative?
- 12. shlex alternative for Java
- 13. Python alternative to reduce()
- 14. CDI: @alternative vs @Qualifiers
- 15. PHP get_called_class() alternative
- 16. window.innerHeight ie8 alternative
- 17. ExpressionHelper.GetExpressionText (LambdaExpression) alternative
- 18. php: array_replace_recursive alternative
- 19. commons beanutils alternative
- 20. Google appengine datastore alternative?
- 21. PHP get_headers() alternative
- 22. Android emulator alternative
- 23. Activator.CreateInstance Performance Alternative
- 24. Ruby alternative to Scrapy?
- 25. CSS3 rotate alternative?
- 26. JIRA/confluence alternative
- 27. JavaScript if alternative
- 28. java web start alternative
- 29. Alternative to Flex Framework
- 30. Microsoft Office Interop Assembly referencias
¿Cuál es el problema principal que tiene? ¿Obtienen muchos tipos dinámicos y no intellisense o es el modelo de objetos de oficina que (por diseño) es muy genérico? – Eddy
Creo que te refieres a mecanografía "fuerte" y no "mecanografía". – Davy8