【问题标题】:Load Excel table into already initialized DataGridView in c# WinForms在 c# WinForms 中将 Excel 表加载到已经初始化的 DataGridView 中
【发布时间】:2016-07-20 06:56:24
【问题描述】:

我正在尝试将 Excel 表格数据附加到 DataGridView (dgvInitial)。一开始我通过

初始化DGV
private void DataForm_Load(object sender, EventArgs e)
    {
        int column = 100;
        int rows = 1000;

        dgvInitial.AutoGenerateColumns = false;
        for (int i = 1; i <= column; i++)
        {
            dgvInitial.Columns.Add("Col_" + i, "Col_" + i);
            dgvInitial.Columns[i - 1].FillWeight = 1;
        }
        for (int j = 0; j < rows; j++)
            dgvInitial.Rows.Add();

        foreach (DataGridViewColumn col in dgvInitial.Columns)
        {
            col.SortMode = DataGridViewColumnSortMode.NotSortable;
        }
    }

loadToolStripMenuItem_Click 事件中,我试图将 excel 表附加到 dgv 中(源代码来自另一个 stackoverflow 任务,但问题非常不同)

System.Data.OleDb.OleDbConnection MyConnection;
        System.Data.DataSet DtSet;
        System.Data.OleDb.OleDbDataAdapter MyCommand;
        MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source='C:\Sample.xlsx';Extended Properties=Excel 8.0;");
        MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
        MyCommand.TableMappings.Add("Table", "Net-informations.com");
        DtSet = new System.Data.DataSet();
        MyCommand.Fill(DtSet);
        dgvInitial.DataSource = DtSet.Tables[0];
        MyConnection.Close();

但它只是减少了 dgv 中的行数,我看不到任何数据。当我在 DataForm_Load 事件中评论所有内容时,它工作正常。

请问您有什么想法,如何解决这个问题?非常感谢您。

【问题讨论】:

标签: c# datagridview


【解决方案1】:

试试这种格式的连接字符串,

     string Connectionstr = "";      
      string filePath ="C:\Sample.xlsx";
      string fileExtension = Path.GetExtension(filePath).ToLower();

      if (fileExtension == ".xls")
      Connectionstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";" + "Extended Properties='Excel 8.0;HDR=YES;IMEX=1'";
      if (fileExtension == ".xlsx")
      Connectionstr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;IMEX=1'";
        MyConnection = new System.Data.OleDb.OleDbConnection(Connectionstr);
        MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
       MyCommand.TableMappings.Add("Table", "Net-informations.com");
        DtSet = new System.Data.DataSet();
       MyCommand.Fill(DtSet);
       dgvInitial.Columns.Clear();
       dgvInitial.AutoGenerateColumns = true;
       dgvInitial.DataSource = DtSet.Tables[0];
        MyConnection.Close();

【讨论】:

  • 非常感谢先生!!效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-19
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-25
  • 1970-01-01
相关资源
最近更新 更多