2012-02-07 17 views
5

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

7

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.

+0

Comprobar el registro me parece extraño, pero si esa es la manera en que generalmente se hace, supongo que sí. – yakatz

+1

¿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

1

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.

+1

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

+0

¿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

+0

@ 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

Cuestiones relacionadas