首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么dsofile.dll仍然需要安装Office?

为什么dsofile.dll仍然需要安装Office?
EN

Stack Overflow用户
提问于 2012-10-24 14:40:48
回答 1查看 3.8K关注 0票数 2

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

据我所知,它不使用Office来修改属性。我实现了它,并在我的32位和64位机器上进行了测试(webserver在32位模式下运行),所有这些都工作得很好。我很开心。但是在将它部署到一个生命机器之后,它没有保存我的值上的属性,但是也不要抛出任何错误!

下面是一些代码来看看我做了什么:

代码语言:javascript
复制
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位。

当我发现一个新的错误后:

代码语言:javascript
复制
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安装的哪些组件吗?
  • 换句话说:我可以手动复制一堆文件并在服务器上“注册”吗?
  • 还是我误解了什么,这是我的代码?!
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-25 08:58:47

奇怪的是,错误只适用于dotx,xlsx,ff,而不是doc,xls。

这是故意的。dsofile示例只允许访问使用OLE结构化存储容器格式的文件。总的来说,OLE是一种死气沉沉的技术,Office是微软最后一个仍然支持它的产品之一。但自2007年版以来,这种支持正在迅速消失。.dotx和.xlsx文件格式也没有了,这些都是紧跟OpenXML规范的压缩OpenXML规范文件。你不能用dsofile访问它们。

你需要去购物寻找一个更好的解决方案,有很多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13051543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档