【问题标题】:How to retrieve a range of excel records into datatable in c#如何在c#中将一系列excel记录检索到数据表中
【发布时间】:2016-03-09 07:03:59
【问题描述】:

我正在使用 OledbConnection 和 OledbDataAdapter 类将 excel 文件导入数据表。 excel表的前两行合并为空,列标题从第三行开始。我从第 3 行开始填充了 492 行,即 492 - 2 行 = 489 +(列标题为 1 行)= 490 行。问题是当我调试代码时,我只得到了 478 行,并且所有的 excel 内容都没有导入到数据表中。

我的代码:

//Upload and save the file
string fileName = Path.GetFileName(excelPath.PostedFile.FileName);
string fileLocation = Server.MapPath("~/App_Data/" + fileName);
excelPath.SaveAs(fileLocation);

string conString = string.Empty;
string extension = Path.GetExtension(excelPath.PostedFile.FileName);

switch (extension)
{
    case ".xls": //Excel 97-03
        conString = ConfigurationManager.ConnectionStrings["Excel03ConString"].ConnectionString;
        break;
    case ".xlsx": //Excel 07 or higher
        conString = ConfigurationManager.ConnectionStrings["Excel07+ConString"].ConnectionString;
        break;
}

conString = string.Format(conString, fileLocation);

using (OleDbConnection excel_con = new OleDbConnection(conString))
{
    excel_con.Open();
    string sheet1 = excel_con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null).Rows[0]["TABLE_NAME"].ToString();
    DataTable dtExcelData = new DataTable();

    using (OleDbDataAdapter oda = new OleDbDataAdapter("SELECT [ID],[Title],[Name],[Post],[Tests],[State] FROM [" + sheet1 + "]", excel_con))
    {
        oda.Fill(dtExcelData);
    }

    excel_con.Close();  
}

可能出了什么问题?

【问题讨论】:

    标签: c# asp.net .net excel datatable


    【解决方案1】:

    我最近在创建将数据从 Excel 移动到 SQL 数据库的应用程序时遇到了同样的问题。

    我通过删除工作表顶部的合并行/列来解决我的问题。我怀疑读者会在每一行中查找您在查询中请求的格式,这会导致错误。

    【讨论】:

    • 就我而言,我无法删除合并的行。有没有办法指定表格的起始行,以便读者从该行开始阅读?
    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 2013-09-02
    • 2017-08-26
    • 1970-01-01
    • 2013-09-11
    • 2014-07-17
    • 1970-01-01
    • 2014-11-18
    相关资源
    最近更新 更多