2010-08-31 20 views
9

Necesito trabajar con el archivo Excel 2007 para leer los datos. porque lo que es la mejor manera de hacerlo:Cuál es el mejor objeto o base de datos OLEDB u Excel

  1. Usando proveedor OLEDB
  2. Excel interoperabilidad objeto
  3. Volcado de los datos de Excel a la base de datos y usando el procedimiento

amablemente me guía para elegir .

+1

Su pregunta no está clara. Lea acerca de cómo hacer preguntas sobre SO aquí: http://tinyurl.com/so-hints – Oded

Respuesta

17

Éstos son mis opiniones:

1. El uso del proveedor OLEDB

se ajustará solo a sus necesidades si tiene tablas estructuradas simples y uniformes. No lo ayudará mucho, por ejemplo, si tiene que extraer cualquier información de formato de celda. El algoritmo erróneo de "tipo de filas" del motor Jet puede hacer que este enfoque sea casi inutilizable. Pero si el tipo de datos puede identificarse de manera exclusiva a partir de las primeras filas de cada tabla, este enfoque puede ser suficiente. Pro: es rápido y funciona incluso en máquinas donde MS Excel no está instalado.

2. Objeto de interoperabilidad de Excel

puede ser muy lento, especialmente en comparación con la opción 1, y necesita instalar MS Excel. Pero tiene acceso completo al modelo de objetos de Excel, puede extraer casi toda la información (por ejemplo: información de formato, colores, marcos, etc.) que está almacenada en su archivo de Excel y sus hojas pueden ser tan complejas estructuradas como desee.

3. Vuelque los datos de Excel a la base de datos y utilice el procedimiento

depende del tipo de vuelco de base de datos que tenga en mente y si tiene un sistema de base de datos a mano. Si está pensando en tener acceso a MS, esto usará internamente el motor Jet de nuevo, con los mismos pros y contras del enfoque 1 anterior.

Otras opciones:

4. escriba una macro de Excel VBA para leer los datos que necesita y escribirlos en un archivo de texto. Lea el archivo de texto de un programa C#. Pro: mucho más rápido que el enfoque 2, con la misma flexibilidad para acceder a la metainformación. Con: tienes que dividir tu programa en una parte VBA y una parte C#. Y necesita MS Excel en su máquina.

5. Use una biblioteca/componente de terceros para esta tarea. Hay muchas bibliotecas para el trabajo, gratuitas y comerciales. Simplemente pregúntale a Google, o busca aquí en SO.Muchas de esas librerías no requieren MS Excel en la máquina, y suelen ser la mejor opción si va a extraer los datos como parte de un proceso de servidor.

+0

También no puede usar Excel Interop Object en una máquina sin Office instalado – BornToCode

+0

@BornToCode: gracias por el comentario, edité mi respuesta en consecuencia. –

2

Las opciones 1 y 2 son casi siempre un ejercicio de dolor, sin importar cómo se formule la pregunta.

Si puede usar SSIS para mover los datos a una base de datos, y si eso satisface sus necesidades debido a otros requisitos, también es una buena opción.

Pero la opción preferida suele ser utilizar Office Open XML para Excel 2007 y posterior. Eso no tiene ninguno de los dolores de cabeza COM que obtienes con la Opción 2, y ninguno de los problemas que tienes con adivinar tipos de filas como lo tienes con la Opción 1.

Con una pregunta más cuidadosamente elaborada, puedes obtener una respuesta mucho mejor, aunque.

Cuestiones relacionadas