首页 文章

如何在c#中将一系列excel记录检索到数据表中

提问于
浏览
2

我正在使用OledbConnection和OledbDataAdapter类将excel文件导入数据表 . excel工作表的前两行合并为空,列 Headers 从第三行开始 . 我从第3行开始填充了492行,即492 - 2行= 489(列 Headers 为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();  
}

可能出了什么问题?

1 回答

  • 0

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

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

相关问题