C# 导入excel 怎么兼容不同office 版本。比如 2003,2007.甚至是不装office.限于微软技术,不能使用第三方组件。

解决方案 »

  1.   

    甚至是不装office 限于微软技术,不能使用第三方组件
    ---------------------------------------------
    没办法
      

  2.   

    可以不装OFFICE,但 Microsoft.Jet.OLEDB.4.0 驱动必须有.如果有的话,那可以用数据连接对象向 EXCEL 导出数据.
      

  3.   

    OFFICE肯定不是必需的.
    我有台机器,用类似的驱动向ACCESS读写内容,但后来硬盘太小写不下东西,就把OFFICE卸载了,但因为驱动在,所以程序运行一点问题也没有.
      

  4.   

    其实楼主这个问题用一个很简单的实例可以测试的,编一个程序,向EXCEL读写数据,然后编译后拿到一台没装OFF,但有驱动的机器上一试便知.有没有驱动可以在ODBC数据源设置中查看.
      

  5.   

    好吧,不装office这个条件去掉。如何做到兼容03和07呢?
      

  6.   

    没有人在弄过吗?我考虑是不是可以先获取Excel的版本,然后用对应的连接字符串。但怎么样获得已安装 Excel的版本呢
      

  7.   

    ------------
    代码的目标程序集为03版本,那么在只装07机器的电脑上也可以运行。
    你写代码时引用低版本的office程序集,在.NET层面会有一个程序集重定向功能(自动的,不需要你弄)负责定位到机器的高版本主互操作程序集。
      

  8.   

     private static string ConnectionString(string fileName)
            {
                bool isExcel2003 = fileName.EndsWith(".xls");
                string connectionString = string.Format(
                    isExcel2003
                        ? "Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=Excel 8.0;"
                        : "Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=YES\"",
                    fileName);
                return connectionString;
            }
      

  9.   

    如果你指的是ado操作excel可以这样判断
      

  10.   

    另外可以使用EPPlus开源库,可以不装office 但生成的是对应07版+的Excel文件。