2016-09-21 67 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。