日期:2014-05-18  浏览次数:20531 次

ASP.NET中如何读取选择的EXCEL文件后显示?
想要实现这样的一个界面,网页上一个文件选择框,一个显示按钮,通过文件选择框选择一个本地的excel文件,然后把其中的内容显示在网页上!
我在网上找了些资料,采用了如下的方法:
C# code

//该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径,
    public DataSet ExcelDataSource(string filepath, string sheetname)
    {
        string strConn;
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
        OleDbConnection conn = new OleDbConnection(strConn);
        OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "$]", strConn);
        DataSet ds = new DataSet();
        oada.Fill(ds);
        conn.Close();
        return ds;
    }



因为以上方法需要excel文件的绝对路径,所以思路是:用户选择excel文件后先上传到服务器,然后通过Server.mappth方法获取服务器上的那个excel的绝对路径,再用以上的代码返回excel文件中的数据到dataset中,然后再显示出来。

编写完代码测试后发现,文件能上传到服务器,可是在读取的时候出现了”不能更新。数据库或对象为只读。“,我想可能是权限的问题吧,请问应该怎么解决?

或者说还有什么更好的方法解决?

------解决方案--------------------
把文件上传到的目录里加上iis匿名账号的读取权限
 文件夹属性-〉安全-〉添加
------解决方案--------------------
把文件放到可读写的文件夹下,或者设置读写权限
------解决方案--------------------
修改excel数据?
------解决方案--------------------
文件要能够提供IIS用户的读写属性
------解决方案--------------------
为什么要用这种方法呢?还需要oledbconnection?
看样子你做的是文件上传,那么这个上传目录可以是你网站下的一个目录,这样server.mappath好取。
而一个目录下有什么文件你通过cs文件是很好读取的,这样直接一个超链接就搞定了。
走oledb,这种方法,还要消耗额外的资源。
------解决方案--------------------
探讨
把文件上传到的目录里加上iis匿名账号的读取权限
文件夹属性-〉安全-〉添加