导入Excel文件到datagridview中

导入Excel文件到datagridview中

问题描述:

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

原来这里是电子表格:

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; 
     } 
    } 

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

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

希望这会有所帮助。