- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 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
奇怪的是,错误仅针对 dotx
、xlsx
、ff,但不适用于 doc
、xls
, ff.
在我安装了 Office 2010 的所有可用更新并重试之后。然后它按照我的意愿工作,并保留我在所有文件的上传页面上设置的属性。
所以在服务器上必须安装 Office 2010 并不是我所期望的:)
最佳答案
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/
我目前正在为 AutoCAD 开发一个插件,它允许用户与文档版本控制应用程序交互,并且为了在远程存储库和本地计算机之间同步文件,我曾计划使用自定义文件属性。这些属性将在最初下载文件时设置,然后只要文件
DSOFile.OleDocumentProperties.Save 修改与 NTFS 文件关联的元数据。 它会修改文件本身,意味着校验和会改变吗? 或者它是否只修改了文件的一些 NTFS 元数据,但
DSOFile.OleDocumentProperties.Save 修改与 NTFS 文件关联的元数据。 它会修改文件本身,意味着校验和会改变吗? 或者它是否只修改了文件的一些 NTFS 元数据,但
我正在寻找一种向文件添加元数据的好方法。 dsofile.dll适用于 NTFS。当将一份副本放到 FAT32 共享上时(我猜它使用 NTFS 隐藏流),元数据就会丢失。 Microsoft Word
我是一名优秀的程序员,十分优秀!