gpt4 book ai didi

c# - 为什么dsofile.dll还需要Office安装?

转载 作者:太空宇宙 更新时间:2023-11-03 11:14:35 25 4
gpt4 key购买 nike

我使用 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 安装组件才能在没有填充安装的情况下工作?
  • 换句话说:我可以复制一堆文件并在服务器上手动“注册”它们吗?
  • 还是我误解了什么,这是我的代码?!

最佳答案

Strange thing the error was only for dotx, xlsx, ff, but not for doc, xls

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

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

关于c# - 为什么dsofile.dll还需要Office安装?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13051543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com