1. 程式人生 > >SQL SERVER使用OpenRowset,、OpenDataSource函式匯入、匯出資料到Excel 的幾種方法(整理)

SQL SERVER使用OpenRowset,、OpenDataSource函式匯入、匯出資料到Excel 的幾種方法(整理)

一、如我在D盤下有D:/物件編碼.xls檔案,有工作表名Sheet是中文命名為‘辦公用品編碼’,‘零件編碼’。

       select * into #temp  fromopendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[辦公用品編碼$]

       select * into #temp  fromopendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[零件編碼$]

二、如你的Excel檔案是工作表是預設的Sheet命名為Sheet1,Sheet2等。

      select * into #temp  fromopendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[Sheet1$]

      select * into #temp  fromopendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:/物件編碼.xls')...[Sheet2$]

三、引用 Limpire (昨夜小樓)以下方法,也行

      OpenRowSet和OpenDataSource都能用讀取用數字命名的Sheet,只不過要加單引號界定,其它不規則命名的Sheet也一樣。

假設C:/Text.xls有個Sheet名字是“3”: 
       select

*fromopendatasource('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls')...['3$']--ORselect *fromopenrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls',['3$'])
--ORselect *fromopenrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls','select * from [''3$'']')
--OpenRowSet(,,'query')可以不加單引號界定:
select *fromopenrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:/Test.xls','select * from [3$]')

四、本人的方法:

匯出EXCEL時,對應欄位數型別都要相同,EXCEL欄位的名稱stano,sname 和資料庫的要一樣,才能匯出成功。

insert into openrowset('MICROSOFT.JET.OLEDB.4.0','excel 8.0;
HDR=YES;database=D:/FName.xls',sheet1$)
 select stano,sname from stainfo

以上在SQL SERVER2000上測試均可以執行,是在本地查詢分析器中除錯。