2016-09-21 68 views
0

我用OleDb導入有2000列的Excel文件。所以通過使用這段代碼,我可以在我的DataTable中只有255列。我想要一些其他方式,或者如果可能的話,這樣可以讓我的DataTable獲得2000列。導入有2000列的Excel

DataTable dtExcelRecords = new DataTable(); 

using (OleDbConnection con = new OleDbConnection(connectionString)) 
{ 

     con.Open(); 
     DataTable dtSheet = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); 
     List<string> listSheet = new List<string>(); 
     foreach (DataRow drSheet in dtSheet.Rows) 
     { 
      if (drSheet["TABLE_NAME"].ToString().Contains("$")) 
       { 
       listSheet.Add(drSheet["TABLE_NAME"].ToString()); 
       } 
     } 

     string workSheetName = listSheet.FirstOrDefault(x => x.Contains(cCommon.sFDDetailsWorkSheetName)); 
     OleDbCommand cmd = new OleDbCommand(string.Format("SELECT * FROM [{0}]", workSheetName.Trim()), con); 
     cmd.CommandType = System.Data.CommandType.Text; 
     OleDbDataAdapter dAdapter = new OleDbDataAdapter(cmd); 
     dAdapter.SelectCommand = cmd; 
     dAdapter.Fill(dtExcelRecords); 
     } 
+0

而不是數據表嘗試使用XML。 –

+0

如何在不使用DataTable的情況下將excel文件轉換爲xml對象@PareshJ – arvind

+0

您需要添加循環才能獲取每一列及其數據。我知道它漫長的過程,但肯定會奏效。 –

回答

1

使用OleDb訪問Excel是一種可能的方式,但不是最好的。我建議考慮使用第三方庫從Excel導入。

有兩個很推薦:

  • NPOI,這是POI的.NET端口:Java API來MS文檔
  • ClosedXML,這對OpenXML的一種包裝器,這是一個開放的微軟用於訪問Excel電子表格的源庫

兩者都很好,並且會完成這項工作。另外,它們是免費的,並且不需要在計算機上安裝MS Office。