将Excel文件导入datagridview

时间:2017-09-26 01:26:09

标签: c# excel datagridview

我有以下代码导入我的excel文件。但由于某种原因,它不会显示原始电子表格中的所有数据。

以下是原始电子表格:

Original Spreadsheet

这是输出:

Output

由于某些原因,受益期月份的某些栏目会丢失或不显示。

 private void btnLoadExcel_Click(object sender, EventArgs e){
       string pathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text +
                          ";Extended Properties=\"Excel 8.0;HDR=Yes;\";";
        OleDbConnection conn = new OleDbConnection(pathConn);
        OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select * from [" + txtSheet.Text+ "$]",conn);
        conn.Open();
        DataTable dt = new DataTable();
        myDataAdapter.Fill(dt);
        dataGridView1.AutoResizeColumns();
        dataGridView1.DataSource = dt;
        for (int i = 0; i < dataGridView1.Columns.Count - 1; i++)
        {
            dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.AllCells;
        }
        dataGridView1.Columns[dataGridView1.Columns.Count - 1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;

        for (int i = 0; i < dataGridView1.Columns.Count; i++)
        {
            int colw = dataGridView1.Columns[i].Width;
            dataGridView1.Columns[i].AutoSizeMode = DataGridViewAutoSizeColumnMode.None;
            dataGridView1.Columns[i].Width = colw;
        }
  }

1 个答案:

答案 0 :(得分:1)

复制代码会产生与您解释的相同的结果。我做的唯一更改是pathConn字符串,方法是添加参数IMEX=1,将列类型设置为字符串。我猜测列可能对excel文件中的不同行有不同的“类型”。

string pathConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + txtPath.Text +
                  ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\";";

希望这有帮助。