Hay muchas formas excelentes de hacer esto, que otros ya han sugerido. Siguiendo con "obtener datos de Excel a través de la pista SQL", aquí hay algunos consejos.
Excel tiene el "Asistente de conexión de datos" que le permite importar o vincular desde otra fuente de datos o incluso dentro del mismo archivo de Excel.
Como parte de Microsoft Office (y los sistemas operativos) hay dos proveedores de interés: el antiguo "Microsoft.Jet.OLEDB" y el último "Microsoft.ACE.OLEDB". Búsquelos al configurar una conexión (como con el Asistente de conexión de datos).
Una vez conectado a un libro de Excel, una hoja de trabajo o un rango es el equivalente a una tabla o vista. El nombre de la tabla de una hoja de trabajo es el nombre de la hoja de trabajo con un signo de dólar ("$") adjunto y entre corchetes ("[" y "]"); de un rango, es simplemente el nombre del rango. Para especificar un rango de celdas sin nombre como fuente de registro, agregue la notación estándar de filas / columnas de Excel al final del nombre de la hoja entre corchetes.
El SQL nativo será (más o menos) el SQL de Microsoft Access. (En el pasado, se llamaba JET SQL; sin embargo, Access SQL ha evolucionado y creo que JET es una tecnología antigua en desuso).
Ejemplo, leyendo una hoja de trabajo: SELECT * FROM [Sheet1$]
Ejemplo, leyendo un rango: SELECT * FROM MyRange
Ejemplo, leyendo un rango de celdas sin nombre: SELECT * FROM [Sheet1$A1:B10]
Hay muchos libros y sitios web disponibles para ayudarlo a trabajar con los detalles.
=== Notas adicionales ===
De forma predeterminada, se asume que la primera fila de su fuente de datos de Excel contiene encabezados de columna que se pueden usar como nombres de campo. Si este no es el caso, debe desactivar esta configuración o su primera fila de datos "desaparecerá" para usarse como nombres de campo. Esto se hace agregando el opcional HDR= setting
a las Propiedades extendidas de la cadena de conexión. El valor predeterminado, que no necesita especificarse, es HDR=Yes
. Si no tiene encabezados de columna, debe especificar HDR=No
; el proveedor nombra sus campos F1, F2, etc.
Advertencia sobre la especificación de hojas de trabajo: el proveedor asume que su tabla de datos comienza con la celda superior, más a la izquierda y que no está en blanco en la hoja de trabajo especificada. En otras palabras, su tabla de datos puede comenzar en la Fila 3, Columna C sin ningún problema. Sin embargo, no puede, por ejemplo, escribir el título de una hoja de trabajo arriba y a la izquierda de los datos en la celda A1.
Una advertencia sobre la especificación de rangos: cuando especifica una hoja de trabajo como su fuente de registros, el proveedor agrega nuevos registros debajo de los registros existentes en la hoja de trabajo según lo permita el espacio. Cuando especifica un rango (con o sin nombre), Jet también agrega nuevos registros debajo de los registros existentes en el rango según lo permita el espacio. Sin embargo, si vuelve a consultar el rango original, el conjunto de registros resultante no incluye los registros recién agregados fuera del rango.
Los tipos de datos (vale la pena probar) para C REATE TABLE: Short, Long, Single, Double, Currency, DateTime, Bit, Byte, GUID, BigBinary, LongBinary, VarBinary, LongText, VarChar, Decimal
.
Conexión a la "vieja" tecnología de Excel (archivos con la extensión XLS): Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyFolder\MyWorkbook.xls;Extended Properties=Excel 8.0;
. Utilice el tipo de base de datos de origen de Excel 5.0 para los libros de trabajo de Microsoft Excel 5.0 y 7.0 (95) y utilice el tipo de base de datos de origen de Excel 8.0 para los libros de trabajo de Microsoft Excel 8.0 (97), 9.0 (2000) y 10.0 (2002).
Conexión al "último" Excel (archivos con la extensión de archivo xlsx): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;"
Tratar los datos como texto: la configuración IMEX trata todos los datos como texto. Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Excel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
(Más detalles en http://www.connectionstrings.com/excel )
Más información en http://msdn.microsoft.com/en-US/library/ms141683(v=sql.90).aspx y en http://support.microsoft.com/kb/316934
Conexión a Excel a través de ADODB a través de VBA detallada en http://support.microsoft.com/kb/257819
Detalles de Microsoft JET 4 en http://support.microsoft.com/kb/275561