【问题标题】:Import excel sheet to a datagrideview将excel工作表导入datagridview
【发布时间】:2018-07-20 11:59:19
【问题描述】:

我正在尝试使用此代码Used Code 将 excel 表导入数据 grideview,但此异常被触发,我不知道主要问题是什么。

我正在尝试一些解决方案,例如将活动解决方案平台从任何人更改为 x86,但它不起作用

excel文件版本重要吗 Excel 2010 , Excel 2013 ?

更新:
我从这个Site 安装了Microsoft Office Access 数据库引擎,最后一个异常消失了,但是这个新异常被触发了

这是使用的代码:

public void importfromexcel()
    {
        string SheetPath = @"E:\students.xlsx";
        string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + SheetPath + ";Extended Properties=Excel 12.0;';";
        OleDbConnection con = new OleDbConnection(constr);
        OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + SheetPath + "$]", con);
        System.Data.DataTable data = new System.Data.DataTable();
        sda.Fill(data);
        dataGridView1.DataSource = data;
    }

这段代码有什么问题吗??
提前致谢。

【问题讨论】:

  • 最后一个错误看起来相当简单,要么您没有文件的权限,要么文件已经打开。我猜如果您遇到问题,它可能仍然是开放的。您是否检查过任务管理器以查看是否有任何延迟的 Access 进程仍在运行?
  • @JohnG 是的,我已经检查过了,没有任何挥之不去的访问进程仍在运行!
  • Excel 怎么样...看起来您正在打开一个 Excel 文件。
  • 此异常在我重新启动 Visual Studio 时消失,但我当前的异常是:初始化字符串的格式不符合从索引 107 开始的规范。
  • 您应该仔细查看该行...OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + SheetPath + "$]", con); ...看起来您正试图从文件名“E:\students.xlsx”中获取“工作表”?...工作表名称是“E:\students.xlsx”?

标签: c# excel


【解决方案1】:

尝试下面的代码并进行一些小改动……它按预期工作。

string WorkBookPath = @"D:\Test\Book1.xlsx";  //@"E:\students.xlsx";
string SheetName = "Sheet1$"; // <--- this is the name of the WORKSHEET in the workBOOK
string constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + WorkBookPath + ";Extended Properties=Excel 12.0;";
using (OleDbConnection con = new OleDbConnection(constr)) {
  OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + SheetName + "]", con);
  DataTable data = new DataTable();
  sda.Fill(data);
  dataGridView1.DataSource = data;
}

【讨论】:

    猜你喜欢
    • 2021-06-19
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多