乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 264|回复: 14

混合位环境中的OLEDB

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2015-11-16 14:05:20 | 显示全部楼层 |阅读模式
我正在更新一个旧的应用程序,该程序旨在从存储在Excel电子表格中的数据创建绘图。以前,我会构建一个32位应用程序,然后就这样了,但因为我们现在有混合位环境,OLEDB现在不太好用,因为Office有32位和64位版本。
以下是我的问题:
应用程序将由AutoCAD托管,并将通过网络加载。AutoCAD可以是32位或64位。我真的需要64位版本的应用程序吗?我没有使用任何第三方控件。一切都是用C#写的,我唯一的问题是OLEDB参考。
也就是说,我需要访问OLEDB驱动程序...我了解到,如果安装的Office版本是32位,我将需要使用32位驱动程序,但如果Office是64位,我将需要64位驱动程序。
我提出了以下几种情况,其中一些很容易解决:
1)32位OS = 32位OLEDB驱动程序
2)64位OS+64位AutoCAD+64位App+64位Office = 64位OLEDB驱动程序
3)64位OS+32位AutoCAD+32位App+32位Office = 32位OLEDB驱动程序
4)64位OS+64位AutoCAD+64位App+32位Office =???????
5)64位操作系统+32位AutoCAD+32位App+64位Office =???????
还有其他我应该关注的场景吗?
我欢迎推荐。

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2015-11-16 18:33:00 | 显示全部楼层
如果您需要通过OLEDB provider(64位)直接访问数据源,那么您可以。NET DLL for AutoCAD只能与64位AutoCAD一起使用。句号。
在这里,我假设您专门讨论使用MS Access DB引擎来访问Excel表或Access数据库中的数据。如果是,是的,你需要根据AutoCAD是32位还是64位来安装MS Access DB Engine 32位还是64位。如果您的用户使用的是2010年以前的MS Office,那么64位MS Access引擎就不能安装在那台计算机上。对于MS office 2010或更高版本,您可以让32位MS office和64位MS Access DB引擎共存(但如果MS Office是2010,那么让它们共存是很棘手的)。
从VISTA开始,Windows不再附带旧的MS Access Jet引擎。
但是,现在您有机会更新旧应用程序(使用。NET技术,我想),你真的应该切断你的应用程序对MS Access数据库引擎的依赖。首先,如果可以的话,不要使用MS Access作为数据源。其次,如果数据源是Excel表(好吧,工程师/架构师,他们就是爱Excel表),你可以很容易地通过OpenXml(或者很多基于OpenXml的免费工具)做你的数据访问。OpenXml有一个纯。NET库,所以您访问Excel表中数据的代码将是纯的。NET代码,可以在任何CPU上工作,Excel也不必安装。
此外,使用数据访问接口将CAD应用程序与数据库分开也是一种非常好的做法,这样CAD应用程序就不必关心数据源是什么,是在Excel表中,还是在其他数据库中,还是在您的内部网或云中的服务中。
HTH
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2015-11-17 02:04:18 | 显示全部楼层
我不需要读取Access数据库文件,我只需要读取Excel电子表格……即使在没有安装Excel的工作站上,我也需要这样做。我也不需要编写它们..我只需要从中获取数据,这样我就可以将数据导入AutoCAD
我不能使用OpenXml,因为应用程序仍然需要访问非基于xml的.xls文件
如果我必须在64位AutoCAD中使用64位构建,这是否意味着OLEDB库也需要64位。如果用户安装了32位Office,或者反过来呢?
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-11-17 07:40:48 | 显示全部楼层

OpenXml适用于2007及更高版本。您的用户真的使用2003或更旧的格式吗?也许你的软件需要升级
我们使用64位AutoCAD和32位Office。所以我必须安装32位和64位版本的ACE。如果使用/passive命令行开关,则可以同时安装这两个命令行。我不把它用于MS Excel,只是一些旧的MS Access数据库。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2015-11-17 08:33:53 | 显示全部楼层

信不信由你,答案是大多数需要导入Excel文件的用户都在使用. xls!
请记住,这个应用程序不是在我可以控制正在使用的软件的企业中使用的。它被全球数千名用户使用,谁知道有多少不同的公司。
也许吧,但我无法控制任何人在自己的公司选择做什么...我只是想让他们付给我很多现金来使用我的软件...当然,我希望软件完美地工作,这样我就不会接到很多支持电话。
这听起来像是对我有用...我应该能够将所需的ACE.OLEDB版本作为安装程序的先决条件。那么问题是:如果用户有64位AutoCAD,我安装了64位程序集,如果用户安装了32位Office,我的程序集可以调用32位ACE.OLEDB驱动程序来访问Excel文件吗?
建立在这个问题上:如果安装了Access可再发行版,用户甚至需要安装Excel才能使用ACE.OLEDB?
回复

使用道具 举报

4

主题

219

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2015-11-17 09:16:21 | 显示全部楼层

OpenXml完全用于读/写Excel工作表(以及其他MS Office应用程序,如Word,PowerPoint...),它不适用于读取XML文件。它是一个开源SDK,用于操作MS Office文档,而无需涉及MS Office应用程序。
它将完全适合您的需求(阅读.xls / .xlsx文件而无需安装Excel,纯.NET开发,不依赖于MS Office / MS Access DB Engine,没有32 / 64位处理...好吧,除非*.xls文件必须保持Excel 2003或更早的格式,正如MaxicanCustad所指出的那样(尽管我想不出任何原因)。
通过使用 OpenXml,您的 AutoCAD .NET 应用程序将没有其他依赖项,除了一个 DLL(DocumentFormat.OpenXml.dll),它与加载项 DLL 一起提供。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2015-11-17 11:41:49 | 显示全部楼层
您确定OpenXML支持读取非XML文件类型,如Excel 97 xls吗?文件似乎另有说明
要清楚,我不需要编写/创建/编辑文档,我只需要阅读内容
我正在开发的应用程序被工程师用来根据当前数据设计未来的统计模型。该数据可由工程师生成或由第三方(如政府机构)提供
在开发我的应用程序之前,工程师们花了数百小时在数据点上倾注,在AutoCAD中设计图形模型并手动输入数据。我的应用程序通过为用户做除生成数据之外的所有事情来简化该过程。在过去12年中,需求已经扩展到包括8个软件包和几十种文件格式。我无法控制第三方提供的数据格式,在许多情况下,他们也无法控制
当我们进行上一次核心更新时,64位才刚刚开始。现在是时候改进软件和性能,远离COM接口了,因为编组正在多个地方杀死我们。我有一些客户端,它们根据几百个文件(有时是数千个文件)的输入生成设计,其中许多文件有超过30万行的数据,每个文件可能包含10-48列……因此,数据量很大!我真的需要直接读取Excel文件所提供的过程中性能。我昨天与一位客户交谈,他们的正常数据运行(大约每周一次)由大约5亿行数据组成,大约200亿个数据点。在一个非常健壮的系统上完成这项工作大约需要18个小时。在这种情况下,每一个时钟滴答都很重要
无论如何,你并不需要知道所有这些……只是我需要从97-2013年间的许多不同Excel文件格式中读取数据的能力。我不确定我能用OpenXML做到这一点,尽管我已经下载了SDK,我正在仔细研究它。
回复

使用道具 举报

24

主题

204

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
300
发表于 2015-11-17 12:20:02 | 显示全部楼层
如果您决定可以使用OpenXML,那么这可能会引起您的兴趣。
http://spreadsheetlight.com/
它是一个开源API,使OpenXML的使用更容易。
从上面的
链接
回复

使用道具 举报

23

主题

239

帖子

6

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
327
发表于 2015-11-17 13:12:00 | 显示全部楼层
或者 https://closedxml.codeplex.com/
它也在Nuget上。
或者,根据您是否有资格获得社区许可证
http://www.syncfusion.com/products/file-formats/xlsio
这适用于97-2015
回复

使用道具 举报

116

主题

996

帖子

9

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1466
发表于 2015-11-17 22:22:04 | 显示全部楼层
我使用 http://epplus.codeplex.com/,并取得了良好的效果。它是开源的,流行的,维护良好的,在Nuget:https://www.nuget.org/packages/EPPlus/
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 21:46 , Processed in 0.176269 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表