2011-06-14 47 views
0

我有一个xls文件,我想用c#读取并填充数据表中的信息。我使用的代码是:在c#.net 4.0中使用XLS的主要问题

public static DataTable GetExcelData(string excelFilePath) 
{ 
    OleDbConnection objConn = null; 
    string oledbConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + excelFilePath + ";Extended Properties=Excel 10.0;"; 
    objConn = new OleDbConnection(oledbConnectionString); 

    if (objConn.State == ConnectionState.Closed) 
    { 
     objConn.Open(); 
    } 
    var objCmdSelect = new OleDbCommand("Select * from [Sheet1$]", objConn); 
    var objAdapter = new OleDbDataAdapter(); 
    objAdapter.SelectCommand = objCmdSelect; 
    var objDataset = new DataSet(); 
    objAdapter.Fill(objDataset, "ExcelDataTable"); 
    objConn.Close(); 
    return objDataset.Tables[0]; 
} 

一旦该数据表被填充,我需要删除包含通过数据表填充接入数据库表头信息,和循环的前5点左右的行。我没有运气,或者建议使用其他万种方法。有没有人有任何信息可以帮助我。我正在运行VS2010 .net 4.0框架。任何和所有的帮助将是超级赞赏。

感谢, 约翰

+0

你可以做到这一点硬的方式或简单的方法。困难的方式当然假设电子表格与数据库相似。或者您可以使用Microsoft.Office.Interop.Excel命名空间中的类。 – 2011-06-14 23:25:55

+0

电子表格将始终采用相同的格式。我正在寻找的过程是:1.将电子表格读入某种临时保存表中,然后将这些数据放入一个访问数据库中。字段映射是直截了当的,所有我想要弄清楚的是如何将电子表格读入数据表中,用数据表中的数据表中的行从我不需要的信息中删除,然后将数据从数据表中写入到具有相同名称的字段的访问表。我认为它不会那么难,但我没有运用任何提及的方法。 – SSISPissesMeOff 2011-06-15 00:41:51

回答

1

我已经试图让Excel数据导入一个DataTable使用OLEDB带来很大的麻烦。我最终通过切换到使用Excel Interop的解决方案来解决问题。请参阅此答案作进一步的解释和示例代码:

Importing from Excel: some cells become null