【问题标题】:Why dsofile.dll still need Office Installation?为什么 dsofile.dll 还需要 Office 安装?
【发布时间】:2017-06-15 14:41:21
【问题描述】:

我使用 dsofile.dll 组件编写了一小段代码,用于在将文件上传到 Web 服务器后修改文档属性(设置 guid 以将文件链接到数据库记录)。 我从这里获取了组件和说明:http://support.microsoft.com/kb/224351

据我了解,它不使用 Office 来修改属性。 我实现了它并在我的 32 位和 64 位机器上进行了测试(网络服务器在 32 位模式下运行)并且一切正常。当时我很开心。 但是在将其部署到生命机器后,它并没有将属性保留在我的值上,但也不会抛出任何错误!

这里有一些代码来看看我做了什么:

public void SetProperty(string filename, string property, string value)
{
  m_oDocument.Open(filename);

  var oProp = m_oDocument.CustomProperties;
  try
  {
    oProp.Add(property, value);
  } catch(Exception)
  {
    foreach (CustomProperty cProp in oProp.Cast<CustomProperty>().Where(cProp => cProp.Name == property))
    {
      cProp.set_Value(value);
    }
  }
  if ( Debug)
  {
    m_spy.Spy("filename: " + filename);
    m_spy.Spy("filename modified: " + m_oDocument.IsDirty);
  }

  if ( m_oDocument.IsDirty ) m_oDocument.Save();
  m_oDocument.Close();

  if ( Debug ) m_spy.Spy(GetProperty(filename, property));

}

于是我开始实现调试代码,整天阅读网络上的文章。 我最终在服务器上安装了 Office 2010 32 位。

然后在我得到一个新的错误之后:

The document is not an OLE file, and does not support extended document properties

奇怪的是,错误只针对dotxxlsx、ff,而不针对docxls、ff。

在我安装了 Office 2010 的所有可用更新并重试之后。 然后它按我的意愿工作,并将我在所有文件的上传页面设置的属性保持不变。

所以在服务器上安装 Office 2010 并不是我所期望的:)

  • 有人知道 dsofile.dll 需要哪些 Office 安装组件才能在没有填充安装的情况下工作?
  • 换句话说:我可以复制一堆文件并在服务器上手动“注册”它们吗?
  • 还是我误会了什么,这是我的代码?!

【问题讨论】:

    标签: c# vsto office-interop


    【解决方案1】:

    奇怪的是,错误只针对dotx、xlsx、ff,而不针对doc、xls

    这是设计使然。 dsofile 示例只允许访问使用 OLE 结构化存储容器格式的文件。 OLE 通常是一种死技术,Office 是最后仍然支持它的 Microsoft 产品之一。但自 2007 年版以来,这种支持已经迅速消失。它也不再适用于 .dotx 和 .xlsx 文件格式,它们是遵循OpenXML specification 的压缩 XML 文件。您无法使用 dsofile 访问它们。

    您需要购买更好的解决方案,有很多。

    【讨论】:

    • 感谢您的澄清。但我仍然想知道,为什么在服务器上安装 Office 后它会起作用(dsofile 中的一些使用 office 组件的密码?!)。关于其他解决方案:我需要一个可以让我在 2003、2007、2010 Office 文档上添加属性的解决方案。
    • 嗨 Hans Passant,MS 的 DSOFILE 有什么替代品吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 2012-07-09
    • 1970-01-01
    相关资源
    最近更新 更多