项目中遇到的一些小问题及解决方法

Posted on 2005-11-16 23:43  生活即技术  阅读(713)  评论(0编辑  收藏  举报
  • C#读取Excel文件时遇到: 未指定的错误
       源码:
         
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();
  •   运行就会出现未指定的错误
    郁闷了半天,终于解决了,
    是因为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
    具体参考http://www.connectionstrings.com/
    以上参考网上资料,供遇到同样问题的朋友参考