【问题标题】:Unable to read Office 2007 doc props using x86 dsofile.dll on x64 system无法在 x64 系统上使用 x86 dsofile.dll 读取 Office 2007 文档道具
【发布时间】:2009-12-18 05:32:07
【问题描述】:

我们有一个 32 位 .NET 应用程序,它利用 32 位版本的 DSOFile.dll 2.1 从 Office 文档中读取常用属性。这适用于 32 位版本的 Windows,适用于 Office 2003 和 Office 2007 文档。我们现在正在检查我们的应用程序在 64 位环境中的行为,特别是在 64 位 Windows Server 2008 中。

在这个 64 位环境中,DSOFile.dll 可以成功地从 Office 2003 文档(例如 DOC)中读取属性,但是对于 Office 2007 文档(例如 DOCX),所有属性都只返回空字符串,否则会产生错误。

以下是我的观察:

环境:全新安装
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值

环境:已安装 Office 2007 兼容包
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值

环境:Office 2007 兼容包 SP1
阅读 DOC 道具:OK
读取 DOCX 道具:返回空值

环境:已安装 Office 2007
阅读 DOC 道具:OK
阅读 DOCX 道具:错误消息 =“文档不是 OLE 文件”

在 64 位系统上,我使用位于 %SystemRoot%\Syswow64 中的 regsvr32 的副本来注册 dsofile.dll。

任何建议将不胜感激。

【问题讨论】:

  • 顺便说一句,您不必担心您使用的是哪个版本的 regsvr32.exe,至少在使用 Windows 7 时是这样。64 位版本将调用 32 位版本,如果传递一个 32 位文件,反之亦然。 (我不确定 Vista 是否做了同样的事情,但 Win 7 确实做到了。非常方便。)

标签: 64-bit office-2007 docx windows-server-2008


【解决方案1】:

您可以找到 DSOFIle 源代码(在 google 上查看)并将其编译为 64 位,或尝试此链接,有人说他们已经这样做了: http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-79KRU6

我这里也有 x64 版本,如果你需要,我可以上传。

这可能与您的问题没有直接关系,但如果您想尝试一下,我使用过 x86 和 x64

【讨论】:

    【解决方案2】:

    您可以将您的应用程序编译为 x86 而不是 AnyCPU,然后它将在 x64 Windows 上正常工作。

    另一种可能的方法是使用 Open XML SDK 2.0 for Microsoft Office。看看它是否支持 x64 应用程序。

    http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

    【讨论】:

    • 应用程序已经针对 x86 而不是 AnyCPU,这就是为什么它可以使用 x86 版本的 dsofile 来读取 DOC 属性(而不是 Open XML doc 属性)。我会看看 Open XML SDK,谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 2012-02-16
    • 2010-12-26
    • 2015-09-20
    • 1970-01-01
    • 2012-03-08
    • 1970-01-01
    相关资源
    最近更新 更多