Excel2003数据导入到DataGrideView总是出错!!请大家帮我看看  private void button2_Click(object sender, EventArgs e)//打开EXCEL
        {
                   OpenFileDialog ofg = new OpenFileDialog();
                    ofg.Filter = "Excel文件(*.xls) | *.xls";
                    string filename = ofg.FileName;
                    //int index = filename.LastIndexOf("\\");
                    //filename = filename.Substring(index + 1);
                    if (ofg.ShowDialog() == DialogResult.OK)
                    {
                        string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + filename;
                        OleDbConnection oleconn = new OleDbConnection(conn);
                        string query = "select * from [sheet$]";
                        OleDbCommand olecmd = new OleDbCommand(query, oleconn);
                        OleDbDataAdapter oleda = new OleDbDataAdapter(olecmd);
                        DataSet ds = new DataSet();
                        oleconn.Open();
                        oleda.Fill(ds);
                        oleconn.Close();
                        this.dataGridView1.DataSource = ds.Tables[0];                    }        }

解决方案 »

  1.   

     DataSet ds = new DataSet();  
      ds.Tables.Add(new DataTable());
      oleconn.Open(); 
      oleda.Fill(ds.Tables[0]);  
      oleconn.Close();
      this.dataGridView1.DataSource = ds.Tables[0]; 试试看~~~ 
      

  2.   

    string filename = ofg.FileName; 
    这句是不是放的不合适,这样改下:
    private void button2_Click(object sender, EventArgs e)//打开EXCEL 
    {
    OpenFileDialog ofg = new OpenFileDialog();
    ofg.Filter = "Excel文件(*.xls) | *.xls";
    //int index = filename.LastIndexOf("\\"); 
    //filename = filename.Substring(index + 1); 
    if (ofg.ShowDialog() == DialogResult.OK)
    {
    string filename = ofg.FileName;
    string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + filename;
    OleDbConnection oleconn = new OleDbConnection(conn);
    string query = "select * from [sheet$]";
    OleDbCommand olecmd = new OleDbCommand(query, oleconn);
    OleDbDataAdapter oleda = new OleDbDataAdapter(olecmd);
    DataSet ds = new DataSet();
    oleconn.Open();
    oleda.Fill(ds);
    oleconn.Close();
    this.dataGridView1.DataSource = ds.Tables[0]; } }
      

  3.   

    也可能你的需要把连接字符串改成这样的:
    string filename = ofg.FileName;
    string conn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=\"Excel 8.0;HDR=no;IMEX=1\";Data Source=" + filename;
      

  4.   

    就string filename = ofg.FileName;拿后面来就行了
      

  5.   

    按照你们上面的做法,我全都试了`~然后就是在sda.Fill(ds)这里报错原因:'sheet$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。
      

  6.   

    感谢各位哥们`~~'sheet$' 不是一个有效名称。请确认它不包含无效的字符或标点,且名称不太长。  这个报错的原因是 string query = "select * from [sheet$]";
    应改为:string query = "select * from [Sheet1$]";疏忽大意,疏忽大意啊~~~