C#读取Excel文件时遇到: 未指定的错误
时间:2011-04-01 来源:西瓜糖
string strConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source ="+ViewState["filepath"].ToString()+";Extended Properties=Excel 8.0" ;
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [Sheet1$]",conn);
DataSet ds = new DataSet();
adp.Fill(ds,"Book1");
ExlDataGrid.DataSource = ds.Tables["Book1"].DefaultView;
ExlDataGrid.DataBind();
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
OleDbDataAdapter adp = new OleDbDataAdapter("Select * from [Sheet1$]",conn);
DataSet ds = new DataSet();
adp.Fill(ds,"Book1");
ExlDataGrid.DataSource = ds.Tables["Book1"].DefaultView;
ExlDataGrid.DataBind();
- 运行就会出现未指定的错误
郁闷了半天,终于解决了,
是因为web.config文件中加了一句:<identity impersonate="true"/>。把这句注释掉就可以了。
他的原理是什么呢,需要研究一下.
将Excel97或Excel2000生成的XLS文件(book)看成一个数据库,其中的每一个工作表(sheet)看成数据库表
ADO假设Excel中的第一行为字段名.所以你定义的范围中必须要包括第一行的内容
Excel中的行标题(即字段名)不能够包含数字. Excel的驱动在遇到这种问题时就会出错的。例如你的行标题名为“F1”
如果你的Excel电子表格中某一列同时包含了文本和数字的话,那么Excel的ODBC驱动将不能够正常, 处理这一行的数据类型
解决方法:把excel 单元格中的数据类型转为stirng 类型
连接字串写成"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties=""Excel 8.0;HDR=Yes;IMEX=1"""
加上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
相关阅读 更多 +