当前位置:编程学习 > C#/ASP.NET >>

急!!!怎么用OleDbDataReader来读出Excel表的第一行数据

请问各位高高手!怎么用OleDbDataReader来读出Excel表的第一行数据,为了效率问题我只能用OleDbDataReader来读。其中OleDbDataReader默认Excel表的第一行数据为表头,不能正常读取的。用oleDbDataReader.GetSchemaTable();也读取不出来的。。。。。 --------------------编程问答-------------------- select top 1 * from [sheet1]$ --------------------编程问答-------------------- Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

HDR设置 --------------------编程问答-------------------- --------------------编程问答--------------------

public DataSet ExcelReader(string excelName)
        {
            // 拼写连接字符串,打开连接
            string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelName + ";Extended Properties='Excel 8.0; HDR=YES; IMEX=1'";
            OleDbConnection objConn = new OleDbConnection(strConn);
            objConn.Open();
            // 取得Excel工作簿中所有工作表
            System.Data.DataTable schemaTable = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            OleDbDataAdapter sqlada = new OleDbDataAdapter();
            DataSet ds = new DataSet();
            // 遍历工作表取得数据并存入Dataset
            foreach (DataRow dr in schemaTable.Rows)
            {
                string strSql = "Select * From [" + dr[2].ToString().Trim() + "]";
                OleDbCommand objCmd = new OleDbCommand(strSql, objConn);
                sqlada.SelectCommand = objCmd;
                sqlada.Fill(ds, dr[2].ToString().Trim());
            }
            objConn.Close();
            return ds;
        }

改下遍历部分代码OK了 --------------------编程问答--------------------
引用 4 楼 linwanhai 的回复:
C# code

public DataSet ExcelReader(string excelName)
        {
            // 拼写连接字符串,打开连接
            string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelName + ";Exten……

++ --------------------编程问答-------------------- 你果你的Excel,还有第几行的概念,你就不应该用oledb读取 --------------------编程问答-------------------- 应该没问题了吧 --------------------编程问答--------------------
引用 6 楼 jointan 的回复:
你果你的Excel,还有第几行的概念,你就不应该用oledb读取

我的表有64000行,用来生成GIS网格。你说用什么读取?? --------------------编程问答--------------------
引用 1 楼 qgipfk168 的回复:
select top 1 * from [sheet1]$

估计你没有注意过用C#查询Excel表的时候,第一行数据的情况。。。 --------------------编程问答--------------------
引用 4 楼 linwanhai 的回复:
C# code

public DataSet ExcelReader(string excelName)
        {
            // 拼写连接字符串,打开连接
            string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelName + ";Exten……

用OleDbDataAdapter会更慢的。。。哎,我已经说过效率问题了 --------------------编程问答--------------------
引用 8 楼 laimuda9 的回复:
引用 6 楼 jointan 的回复:
你果你的Excel,还有第几行的概念,你就不应该用oledb读取

我的表有64000行,用来生成GIS网格。你说用什么读取??


用Access链一个Excel进去,有啥不能读取的? --------------------编程问答-------------------- 谢谢2楼,3楼的仁兄,我没有注意过这个“HDR=Yes”参数。。。其实oleDbDataReader.GetSchemaTable();已经能查出列名的名称了,只是我没有注意。如果第一行的值是数字,就会显示“F1,F2。。。”,而如果是字符的话,就能正常显示字段名了,不知道为什么。。。希望高手再解答吧 --------------------编程问答-------------------- 数据类型的问题。在数字前加' --------------------编程问答-------------------- 居然冒充孟易做图
--------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,