zoukankan      html  css  js  c++  java
  • 两个关于.NET读取EXCEL文件的问题,记下来,很有用!

    1,用Microsoft.Jet.OLEDB.4.0读取EXCEL数据的代码是这样的:
         string ConnStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/aa.xls;Extended Properties='Excel 8.0;HDR=NO;IMEX=1';";
        OleDbConnection Conn=new OleDbConnection(ConnStr);
        Conn.Open();
        string SQL="select * from [sheet1$]";
        OleDbDataAdapter da=new OleDbDataAdapter(SQL,ConnStr);
        DataSet ds=new DataSet();
        da.Fill(ds);
        DataGrid1.DataSource=ds;
        DataGrid1.DataBind();

    很简单的代码,但是问题就出在连接字符串上面,后面一定要加上Extended Properties='Excel 8.0;HDR=NO;IMEX=1',HDR和IMEX也一定要配合使用,哈哈,老实说,我也不知道为什么,这样配合的效果最好,这是我艰苦调试的结果.IMEX=1应该是将所有的列全部视为文本,我也有点忘记了.至于HDR本来只是说是否要出现一行标题头而已,但是结果却会导致某些字段值丢失,所以其实我至今也搞不明白为什么,很可能是驱动的问题...,HDR=NO表示把有效区域内第一行作为数据
    HDR=YES表示把有效区域内第一行作为列名


    2,
    由于ASPNET属于网络用户,所以如果网络用户要调用本地的进程或者程序,比如创建文件夹等,都需要给ASPNET加上本地用户的权限,所以报错中“ASP.NET 有一个在应用程序没有模拟时使用的基进程标识”,解决方法是在web.config文件中加上<identity impersonate="true"/>
    结点,这个结点的用途见ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/cpgenref/html/gngrfIdentitySection.htm

    还有个问题,加入在页面中对EXCEL进行了操作,需要保存的时候,当创建一个新的文档或者保存一个修改过的文档时:

    代码是:test.SaveAs (ConfigurationSettings.AppSettings["Excel"] + DocName.Text + ".xls");

    出现如下错误:

    无法打开宏储存。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.Runtime.InteropServices.COMException: 无法打开宏储存。
    解决方法:
    在运行中输入dcomcnfg
    在组件服务==>计算机==>我的电脑DCOM找到:




    打开之后出现下面的界面,



    点访问权限,


    看到上面的界面之后大家该知道怎么做了吧,添加了aspnet用户,然后给权限就OK了
  • 相关阅读:
    爱因斯坦IQ题
    微软操作系统的版本分类方法
    C++的辅助工具介绍
    让Dictionary key 支持自定义对象
    正则表达式匹配可能包括任意长度的任意空白的任意字符串(最短匹配)
    linq 对象转换
    "System.Data.SqlServerCe.SqlCeException: 数据库文件大于配置的最大数据库大小。该设置仅在第一次并发数据库连接后生效"解决方案
    Windows XP远程桌面端口更改
    Unicode与UTF8互转(C语言实现)
    VS2005+WinXPDDK+DDKWizard配置驱动开发环境
  • 原文地址:https://www.cnblogs.com/aflyfly/p/1549237.html
Copyright © 2011-2022 走看看