导入Excel到Datagridview

我正在使用此代码打开一个Excel文件,并将其保存在DataGridView中:

string name = "Items"; string constr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" + Dialog_Excel.FileName.ToString() + "; Extented Properties =\"Excel 8.0; HDR=Yes;\";"; OleDbConnection con = new OleDbConnection(constr); OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + name + "$]", con); DataTable data = new DataTable(); sda.Fill(data); grid_items.DataSource = data; 

正如解释: 这个youtube链接

但是我得到ISAM错误。 任何build议?

既然你没有回复我上面的评论,我发布了两个解决scheme。

您在Extended Properties中缺less'

对于Excel 2003试试这个( TRIED AND TESTED

  private void button1_Click(object sender, EventArgs e) { String name = "Items"; String constr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + "C:\\Sample.xls" + ";Extended Properties='Excel 8.0;HDR=YES;';"; OleDbConnection con = new OleDbConnection(constr); OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); con.Open(); OleDbDataAdapter sda = new OleDbDataAdapter(oconn); DataTable data = new DataTable(); sda.Fill(data); grid_items.DataSource = data; } 

顺便说一句,我很久以前就停止和Jet合作了。 我现在用ACE。

  private void button1_Click(object sender, EventArgs e) { String name = "Items"; String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:\\Sample.xls" + ";Extended Properties='Excel 8.0;HDR=YES;';"; OleDbConnection con = new OleDbConnection(constr); OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); con.Open(); OleDbDataAdapter sda = new OleDbDataAdapter(oconn); DataTable data = new DataTable(); sda.Fill(data); grid_items.DataSource = data; } 

在这里输入图像说明

对于Excel 2007+

  private void button1_Click(object sender, EventArgs e) { String name = "Items"; String constr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + "C:\\Sample.xlsx" + ";Extended Properties='Excel 12.0 XML;HDR=YES;';"; OleDbConnection con = new OleDbConnection(constr); OleDbCommand oconn = new OleDbCommand("Select * From [" + name + "$]", con); con.Open(); OleDbDataAdapter sda = new OleDbDataAdapter(oconn); DataTable data = new DataTable(); sda.Fill(data); grid_items.DataSource = data; } 

尝试下面的代码片段,其工作正常。

 private void button1_Click(object sender, EventArgs e) { try { OpenFileDialog openfile1 = new OpenFileDialog(); if (openfile1.ShowDialog() == System.Windows.Forms.DialogResult.OK) { this.textBox1.Text = openfile1.FileName; } { string pathconn = "Provider = Microsoft.jet.OLEDB.4.0; Data source=" + textBox1.Text + ";Extended Properties=\"Excel 8.0;HDR= yes;\";"; OleDbConnection conn = new OleDbConnection(pathconn); OleDbDataAdapter MyDataAdapter = new OleDbDataAdapter("Select * from [" + textBox2.Text + "$]", conn); DataTable dt = new DataTable(); MyDataAdapter.Fill(dt); dataGridView1.DataSource = dt; } } catch { } } 

我用下面的代码,它正在工作!

 using System.Data.OleDb; using System.IO; using System.Text.RegularExpressions; private void btopen_Click(object sender, EventArgs e) { try { OpenFileDialog openFileDialog1 = new OpenFileDialog(); //create openfileDialog Object openFileDialog1.Filter = "XML Files (*.xml; *.xls; *.xlsx; *.xlsm; *.xlsb) |*.xml; *.xls; *.xlsx; *.xlsm; *.xlsb";//open file format define Excel Files(.xls)|*.xls| Excel Files(.xlsx)|*.xlsx| openFileDialog1.FilterIndex = 3; openFileDialog1.Multiselect = false; //not allow multiline selection at the file selection level openFileDialog1.Title = "Open Text File-R13"; //define the name of openfileDialog openFileDialog1.InitialDirectory = @"Desktop"; //define the initial directory if (openFileDialog1.ShowDialog() == DialogResult.OK) //executing when file open { string pathName = openFileDialog1.FileName; fileName = System.IO.Path.GetFileNameWithoutExtension(openFileDialog1.FileName); DataTable tbContainer = new DataTable(); string strConn = string.Empty; string sheetName = fileName; FileInfo file = new FileInfo(pathName); if (!file.Exists) { throw new Exception("Error, file doesn't exists!"); } string extension = file.Extension; switch (extension) { case ".xls": strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; break; case ".xlsx": strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + pathName + ";Extended Properties='Excel 12.0;HDR=Yes;IMEX=1;'"; break; default: strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathName + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; break; } OleDbConnection cnnxls = new OleDbConnection(strConn); OleDbDataAdapter oda = new OleDbDataAdapter(string.Format("select * from [{0}$]", sheetName), cnnxls); oda.Fill(tbContainer); dtGrid.DataSource = tbContainer; } } catch (Exception) { MessageBox.Show("Error!"); } } 

尝试下面的程序

 using System; using System.Data; using System.Windows.Forms; using System.Data.SqlClient; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { System.Data.OleDb.OleDbConnection MyConnection; System.Data.DataSet DtSet; System.Data.OleDb.OleDbDataAdapter MyCommand; MyConnection = new System.Data.OleDb.OleDbConnection(@"provider=Microsoft.Jet.OLEDB.4.0;Data Source='c:\csharp.net-informations.xls';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); dataGridView1.DataSource = DtSet.Tables[0]; MyConnection.Close(); } } }