====== SQL SERVER Excel ===== ===== Configuraciones ===== -- Ver todos los Proveedores: EXEC master.dbo.sp_MSset_oledb_prop -- Otras configuraciones: EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE GO EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1 GO EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1 GO ===== Formas de conectarlo ===== SELECT * FROM OPENROWSET( 'MSDASQL', 'Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\Users\Nakankari\Desktop\import_manif_guia_Temp.xls', 'SELECT * FROM [Guias$]') ==== Microsoft.ACE.OLEDB.12.0 ==== * HDR=NO Sin cabecera * IMEX=1 No formatea los campos Este ejemplo solo coje la cabecera SELECT TOP 1 * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Users\Nakankari\Desktop\import_manif_guia_Temp.xls;HDR=NO;IMEX=1', [Guias$]) SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=C:\Users\Nakankari\Desktop\import_manif_guia_Temp.xls;HDR=NO;IMEX=1', [Guias$]) AS W ====== XLSB ===== SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=NO;Database=\\WS2008-PHP\temporales\import_manif_guia_TempFile_20201144_150944_2.xlsb', [shipment2$]) ===== Mas ejemplos ====== DECLARE @startnum INT=1 DECLARE @endnum INT=19 DECLARE @cabecera VARCHAR(1000) ; WITH gen AS ( SELECT @startnum AS num UNION ALL SELECT num+1 FROM gen WHERE num+1<=@endnum ) SELECT @cabecera = REPLACE( REPLACE( REPLACE( ( SELECT num FROM gen FOR XML PATH('') ),'', ', Excel.F') ,'','') ,'','Excel.F') --SELECT @cabecera DECLARE @SQL NVARCHAR(MAX) = ' SELECT '+ @cabecera+' FROM OPENROWSET(''Microsoft.ACE.OLEDB.12.0'', ''Excel 12.0 Xml;HDR=NO;IMEX=1;Database=\\WS2008-PHP\temporales\import_terceros_guia_TempFile_20210334_104234.xlsx'', [EstadoManifiesto_234$]) AS Excel ' --SELECT @SQL EXEC sp_executesql @SQL