C# 导入excel 兼容版本

人间太皮 2011-11-23 05:30:04
C# 导入excel 怎么兼容不同office 版本。比如 2003,2007.甚至是不装office.

限于微软技术,不能使用第三方组件。
...全文
347 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
shihaojie1219 2011-11-24
  • 打赏
  • 举报
回复
另外可以使用EPPlus开源库,可以不装office 但生成的是对应07版+的Excel文件。
黄亮 2011-11-24
  • 打赏
  • 举报
回复
如果你指的是ado操作excel可以这样判断
黄亮 2011-11-24
  • 打赏
  • 举报
回复
 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;
}
shihaojie1219 2011-11-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ai_quaner 的回复:]

好吧,不装office这个条件去掉。如何做到兼容03和07呢?
[/Quote]
------------
代码的目标程序集为03版本,那么在只装07机器的电脑上也可以运行。
你写代码时引用低版本的office程序集,在.NET层面会有一个程序集重定向功能(自动的,不需要你弄)负责定位到机器的高版本主互操作程序集。
人间太皮 2011-11-24
  • 打赏
  • 举报
回复
没有人在弄过吗?我考虑是不是可以先获取Excel的版本,然后用对应的连接字符串。但怎么样获得已安装 Excel的版本呢
人间太皮 2011-11-24
  • 打赏
  • 举报
回复
好吧,不装office这个条件去掉。如何做到兼容03和07呢?
-晴天 2011-11-23
  • 打赏
  • 举报
回复
其实楼主这个问题用一个很简单的实例可以测试的,编一个程序,向EXCEL读写数据,然后编译后拿到一台没装OFF,但有驱动的机器上一试便知.有没有驱动可以在ODBC数据源设置中查看.
-晴天 2011-11-23
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 breakorcontinue 的回复:]
我的以前也有这问题,好像没办法。到最后只能重新装的2003版本的。。。。。。
[/Quote]
OFFICE肯定不是必需的.
我有台机器,用类似的驱动向ACCESS读写内容,但后来硬盘太小写不下东西,就把OFFICE卸载了,但因为驱动在,所以程序运行一点问题也没有.
长腮的北极熊 2011-11-23
  • 打赏
  • 举报
回复
我的以前也有这问题,好像没办法。到最后只能重新装的2003版本的。。。。。。
-晴天 2011-11-23
  • 打赏
  • 举报
回复
可以不装OFFICE,但 Microsoft.Jet.OLEDB.4.0 驱动必须有.如果有的话,那可以用数据连接对象向 EXCEL 导出数据.
阿非 2011-11-23
  • 打赏
  • 举报
回复
甚至是不装office 限于微软技术,不能使用第三方组件
---------------------------------------------
没办法

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧