急!!!怎么用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了 --------------------编程问答--------------------
++ --------------------编程问答-------------------- 你果你的Excel,还有第几行的概念,你就不应该用oledb读取 --------------------编程问答-------------------- 应该没问题了吧 --------------------编程问答--------------------
我的表有64000行,用来生成GIS网格。你说用什么读取?? --------------------编程问答--------------------
估计你没有注意过用C#查询Excel表的时候,第一行数据的情况。。。 --------------------编程问答--------------------
用OleDbDataAdapter会更慢的。。。哎,我已经说过效率问题了 --------------------编程问答--------------------
用Access链一个Excel进去,有啥不能读取的? --------------------编程问答-------------------- 谢谢2楼,3楼的仁兄,我没有注意过这个“HDR=Yes”参数。。。其实oleDbDataReader.GetSchemaTable();已经能查出列名的名称了,只是我没有注意。如果第一行的值是数字,就会显示“F1,F2。。。”,而如果是字符的话,就能正常显示字段名了,不知道为什么。。。希望高手再解答吧 --------------------编程问答-------------------- 数据类型的问题。在数字前加' --------------------编程问答-------------------- 居然冒充孟易做图
--------------------编程问答--------------------
补充:.NET技术 , C#