解决ASP.net 读取Excel 问题

    技术2022-05-11  71

    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本来只是说是否要出现一行标题头而已,但是结果却会导致某些字段值丢失,所以其实我至今也搞不明白为什么,很可能是驱动的问题...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了  

    最新回复(0)