用c#读取excel文件,写道datagridview控件中,怎么少了第一行数据

时间:2021-01-10 16:19:05
以前好像在那里见过有人问,怎么找不到了, 知道的请帮忙.

string strconn = "provider=Microsoft.Jet.oledb.4.0;Data Source=" + textBox1.Text;
            OleDbConnection conn = new OleDbConnection(strconn);
            conn.Open();
            if (bo == false)
            {
                comboBox1.Items.Clear();
                DataTable dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
                foreach (DataRow dr in dt.Rows)
                {
                    comboBox1.Items.Add((String)dr["TABLE_NAME"]);
                    //MessageBox.Show((String)dr["TABLE_NAME"]); 
                }
                //comboBox1.Text = comboBox1.Items[0].ToString();
            }
            else
            {
                string sql = "select * from " + comboBox1.Text;
                OleDbDataAdapter aper = new OleDbDataAdapter(sql, conn);
                DataSet myset = new DataSet();
                aper.Fill(myset, comboBox1.Text);
                dataGridView1.DataSource = myset.Tables[comboBox1.Text];
            }
            conn.Close();

6 个解决方案

#1


连接字符串中增加:"HDR=Yes;"

#2


系统将Excel第一行的内容当作了一个字段的Title,所以就少一行

#3


@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""" 

"HDR=Yes;" indicates that the first row contains columnnames, not data
"IMEX=1;" tells the driver to always read "intermixed" data columns as text

TIP! SQL syntax: "SELECT * FROM [sheet1$]" - i.e. worksheet name followed by a "$" and wrapped in "[" "]" brackets.

以上内容引自: http://www.connectionstrings.com

如果第一行是数据而不是标题的话, 应该写: "HDR=No;"

#4


连接字符串中增加:"HDR=Yes;" 后conn.Open(); 出错: 找不到可安装的ISAM
请问怎么解决?????
string strconn = "provider=Microsoft.Jet.oledb.4.0;Extended Properties=Excel 8.0;HDR=No;Data Source=" + textBox1.Text;

#5


ok 谢谢大家 应该是*8808(空间/IV) 说得 "HDR=No;"

#6


还有个问题 
excel里面如果有字符&数字混合 那么就读出来字符.
请问怎么解决 
"IMEX=1;" tells the driver to always read "intermixed" data columns as text 
这个好像是解决这个问题的,但是没有起到任何作用呀.

#1


连接字符串中增加:"HDR=Yes;"

#2


系统将Excel第一行的内容当作了一个字段的Title,所以就少一行

#3


@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1""" 

"HDR=Yes;" indicates that the first row contains columnnames, not data
"IMEX=1;" tells the driver to always read "intermixed" data columns as text

TIP! SQL syntax: "SELECT * FROM [sheet1$]" - i.e. worksheet name followed by a "$" and wrapped in "[" "]" brackets.

以上内容引自: http://www.connectionstrings.com

如果第一行是数据而不是标题的话, 应该写: "HDR=No;"

#4


连接字符串中增加:"HDR=Yes;" 后conn.Open(); 出错: 找不到可安装的ISAM
请问怎么解决?????
string strconn = "provider=Microsoft.Jet.oledb.4.0;Extended Properties=Excel 8.0;HDR=No;Data Source=" + textBox1.Text;

#5


ok 谢谢大家 应该是*8808(空间/IV) 说得 "HDR=No;"

#6


还有个问题 
excel里面如果有字符&数字混合 那么就读出来字符.
请问怎么解决 
"IMEX=1;" tells the driver to always read "intermixed" data columns as text 
这个好像是解决这个问题的,但是没有起到任何作用呀.