2012-09-18 81 views
0

使用SSIS,我可以使用OLE將帶有噴氣驅動程序讀取Excel或我可以使用「Excel連接」SSIS Excel源連接。它用什麼來讀取Excel?

的一個單獨的連接類型兩者似乎有問題,閱讀文件與合併的細胞,爲我擔心。

我很好奇當使用「Excel連接」時,SSIS使用什麼來連接Excel。

除了VBA之外,對於閱讀已在服務器上合併單元格,公式,格式等的Excel文件,您會有什麼建議?我使用Excel 2003中

更新

下面是我用來讀取XLS代碼:

private static void GetExcelSheets(string filePath) 
     { 
      string connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;HDR={1}'", filePath, "no"); 

      OleDbConnection excelConnection = new OleDbConnection(connectionString); 
      OleDbCommand cmdExcel = new OleDbCommand(); 
      OleDbDataAdapter oda = new OleDbDataAdapter(); 
      cmdExcel.Connection = excelConnection; 

      if (excelConnection.State == ConnectionState.Open) 
      { 
       excelConnection.Close(); 
      } 
      excelConnection.Open(); 

      OleDbCommand oleDbCommand = new OleDbCommand(); 
      oleDbCommand.CommandType = System.Data.CommandType.Text; 
      oleDbCommand.Connection = excelConnection; 
      OleDbDataAdapter oleDbDataAdapter = new OleDbDataAdapter(oleDbCommand); 

      DataTable dtExcelSheetName = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
      string getExcelSheetName = dtExcelSheetName.Rows[5]["Table_Name"].ToString(); 
      oleDbCommand.CommandText = "SELECT * FROM [" + getExcelSheetName + "]"; 
      oleDbDataAdapter.SelectCommand = oleDbCommand; 
      DataTable dtExcelRecords = new DataTable(); 
      oleDbDataAdapter.Fill(dtExcelRecords); 

      excelConnection.Dispose(); 

     } 

當我看到一個電子表格,看起來像這樣:

enter image description here

然後使用調試器Visualizer來顯示數據集,我看到這個。請注意,在源電子表格,我盤旋數據從數據表顯示丟失:

enter image description here

至於有關使用Microsoft OLE DB提供程序爲Jet 4.0 Excel連接點。在SSIS中,有兩個獨立的連接對象。第一個是Excel Connect對象。它的屬性頁面如下所示:

enter image description here 第二個是使用JET驅動程序並指向Excel的OLE連接對象。

enter image description here

是Excel的Connection對象確實使用了4.0的Jet驅動程序,它是做同樣的事情只是一個速記方式或者是這些conenction類型確實在某些方面有什麼不同?

回答

1

據微軟稱:

Excel的連接管理器使用Microsoft OLE DB提供程序爲Jet 4.0及其支持的Excel ISAM(索引順序訪問方法)驅動程序連接並讀取和寫入數據到Excel數據源。

來源MSDN


至於如何正確導入Excel工作表與合併單元格:你需要確保你有最左側的列在您的轉換映射爲了獲得價值。任何並非組合單元格中最左邊的單元格將爲null。我認爲這是一個合理的期望,因爲SSIS通常與數據庫源一起使用,它沒有「合併」單元的概念。

+0

請參閱我的更新。 – ChadD

+0

@ChadD:不幸的是,我在一個阻止imgur鏈接的企業網絡中,所以我看不到你的截圖;當我回到家時,我會盡量跟進。 –