使用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();
}
當我看到一個電子表格,看起來像這樣:
然後使用調試器Visualizer來顯示數據集,我看到這個。請注意,在源電子表格,我盤旋數據從數據表顯示丟失:
至於有關使用Microsoft OLE DB提供程序爲Jet 4.0 Excel連接點。在SSIS中,有兩個獨立的連接對象。第一個是Excel Connect對象。它的屬性頁面如下所示:
第二個是使用JET驅動程序並指向Excel的OLE連接對象。
是Excel的Connection對象確實使用了4.0的Jet驅動程序,它是做同樣的事情只是一個速記方式或者是這些conenction類型確實在某些方面有什麼不同?
請參閱我的更新。 – ChadD
@ChadD:不幸的是,我在一個阻止imgur鏈接的企業網絡中,所以我看不到你的截圖;當我回到家時,我會盡量跟進。 –