我上传一个Excel文件到website根目录下面
但是我要从excel导入数据到数据库里面的时候,出现了office版本的问题
我不同的office版本要引用不同的Microsoft库
所以我当下就考虑C#在读取Excel文件的时候能不能判断一下office的版本,然后我再引用相应的库

解决方案 »

  1.   

     //上传文件
                        FileUpload1.PostedFile.SaveAs(Server.MapPath("../../Project/files/" + filename));                    DataSet ds = DataBaseAccess.ExecuteSql4Ds("select * from OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Excel 8.0;HDR=YES;DATABASE=" + Server.MapPath("../../Project/files/" + filename) + ";IMEX=1;',[材料导入$])");
                        DataView dvdetail = ds.Tables[0].DefaultView;
                        GridView1.DataSource = dvdetail;
                        GridView1.DataBind();
      

  2.   

    我想了一下office好像是向下兼容的,我只需调用office2000的库,应该就可以不用考虑office版本的问题了
      

  3.   

    是向下兼容的。
    不建议使用office com组件读取,(以后会遇到各种麻烦事的)
    建议使用第三方的  myxls/ NPIO
      

  4.   

    我想问一下,C#引用office2000的库应该怎么写?
      

  5.   


    什么麻烦,可以举你碰到的几个例子吗?
    1. com组件依赖office(服务器必须安装office. 有.net  framework 支持)。
    2. 经常遇到权限的问题(需要修改注册表啥的,你确定你能对服务器进行这些操作吗)。
    3. 灭Excel导出进程,也是一个麻烦事。and so on ......
      

  6.   

    上面将单词 NPOI 误写成 NPIO 了
      

  7.   

    http://msdn.microsoft.com/zh-cn/library/vstudio/dd997297(v=vs.100).aspx如果你的项目是.net4.0的,那么使用excel2010的库,完全可以在只安装有excel2007的版本上操作。不需要进行什么特别的设置。但是这些根本不支持asp.net。我猜你手动设置了一堆东西,例如手动配置什么DCOM组建权限之类的,那就没谱了。与excel互操作,根本不是asp.net程序员该做的事情(除非是弄个简单的第三方类库作一点简单的)。
      

  8.   

    对于.net4.0以上平台的winform或者wpf应用程序,操作Excel,使用2010版的库,完全可以操作2007版的Excel。凡是看到有人告诉你说“你得去配置两三个DCOM组件的安全策略、文件夹的权限”之类的,建议你止步。
      

  9.   


    谢谢你的回答,经过测试之后,我发现引用MICROSOFT.ACE.OLEDB.12.0这个就行了
    2003,2010都支持
      

  10.   

    我还有个问题,就是我得判断该客户端上是否安装了microsoft office这个软件吧!?
    您有什么好的判断方法呢?