Estoy trabajando en una aplicación que puede importar datos desde varios formatos diferentes. Me gustaría incluir CSV y otros tipos de archivos planos (fácil), así como XLS y XLSX.
Parece que mi mejor opción es usar Interop.Excel, que entiendo solo está disponible si Excel está instalado.
¿Hay alguna manera de comprobar si Interop.Excel está disponible y decirle al usuario que Excel debe instalarse para importar desde XLS/XLSX?Detectar Microsoft.Office.Interop.Excel Disponibilidad
Respuesta
Microsoft.Office.Interop.Excel
es un Office Primary Interop Assembly que puede enviar con su aplicación sin importar si el cliente tiene Office instalado o no. No hará ningún daño hasta que empiece a usarlo. Entonces, antes de usarlo, puede look at the registry para ver si Office está instalado.
Si desea admitir archivos nativos de Microsoft Excel y no desea tomar una dependencia de Microsoft Excel, mire en OpenXML. Esto solo funcionará con los archivos formateados XML de Excel más nuevos. Si sus necesidades son simples y solo necesita leer datos del archivo Excel o archivo CSV heredado, puede usar el proveedor Ace y/o los proveedores Microsoft Jet OLE DB 4.0
OpenXML le permite leer/escribir en nuevos archivos XML formateados de Excel. Hay varios hilos en StackOverflow con más información sobre el uso de OpenXML que vale la pena consultar.
Esto no resuelve la pregunta original. Su propuesta aún requiere una dependencia externa para la cual, en última instancia, aún debería verificar ... – Kris
¿De qué dependencia externa? Tendría que hacer referencia al ensamblaje Document.OpenXML de su proyecto y podría implementarlo con su aplicación. El usuario final no necesitaría tener Excel instalado. Del mismo modo, el proveedor Microsoft Jet OLEDB 4.0 está presente con las versiones más recientes del sistema operativo Windows y su aplicación podría aprovecharlo para leer hojas de cálculo de formato anteriores no compatibles con el ensamblado OpenXML y archivos CSV si es necesario. – codechurn
@ Art: la pregunta era sobre detectar un ensamblaje. No se trata de incluirlo como un requisito previo ... Su solución es la misma que su problema inicial. El usuario final no necesitaría tener Excel instalado, pero OpenOffice o algo más en su lugar ... – Kris
esto podría funcionar en las propiedades de su proyecto:
http://s11.photobucket.com/albums/a199/markawil/?action=view¤t=Untitled.png
Usted podría tratar de usar los conceptos que se detallan aquí:
How to detect .NET 2.0 vs. .NET 4.0 assemblies, and x86 vs. x64 vs. AnyCPU
Pero también:
How to detect if another assembly is available to my application or not
- 1. Excel dll para Microsoft.Office.Interop.Excel
- 2. Microsoft.Office.Interop.Excel realmente lento
- 3. Cómo detectar la disponibilidad de sse en CMake
- 4. Alta disponibilidad
- 5. arquitectura para alta disponibilidad
- 6. Microsoft.Office.Interop.Excel no funciona en 64 bit
- 7. Disponibilidad de Cassandra
- 8. Breve disponibilidad del editor
- 9. Comprobar disponibilidad de dominio Java
- 10. Disponibilidad de Apple sin ARC
- 11. Feature-detect: ¿disponibilidad de evento de mutación en JavaScript?
- 12. ¿Cómo importo de Excel a un DataSet usando Microsoft.Office.Interop.Excel?
- 13. ¿Cómo entender la "disponibilidad" del teorema CAP?
- 14. Nombre de aplicación de iPhone Disponibilidad
- 15. Git/Django: permiso/disponibilidad de código granular
- 16. Comentarios sobre disponibilidad con Google App Engine
- 17. Respondiendo a la disponibilidad de RAM en iOS
- 18. java caché distribuida para baja latencia, alta disponibilidad
- 19. Determinación de la disponibilidad de memoria suficiente para una operación
- 20. Reporting Services disponibilidad de SQL Server Express 2008 R2
- 21. S3 de alta disponibilidad + confiabilidad para copias de seguridad
- 22. Enchufes: descubra la disponibilidad del puerto con Java
- 23. Comprobar disponibilidad de bloques en tiempo de ejecución en IOS
- 24. Alta disponibilidad y plataforma escalable para Java/C++ en Solaris
- 25. iPhone - Detectando la disponibilidad de la tarjeta SIM
- 26. ¿Cómo pruebo la disponibilidad de Internet en Java?
- 27. verifique la disponibilidad del servicio web de WCF
- 28. ¿Disponibilidad de bibliotecas de visión artificial y AR para Android?
- 29. Disponibilidad de JQuery en los repositorios de Maven
- 30. ¿Cómo se controla la disponibilidad de varios sitios web?
Comprobar el registro me parece extraño, pero si esa es la manera en que generalmente se hace, supongo que sí. – yakatz
¿Cómo es esta la respuesta? Comprobar si Office está instalado no significa necesariamente que los componentes de interoperabilidad también estén instalados. La pregunta es si los ensamblajes de interoperabilidad se pueden detectar y no cómo agregarlos a los prereqs del instalador. Los ensamblajes se pueden detectar usando reflexión. – Kris