我希望用其他内容替换Word Document Creator元数据,但在调用WordprocessingDocument.Save()
时它不会保留。我正在使用DocumentFormat.OpenXML version 2.7.2和以下代码来加载和更改创建者:
public static SetCreator(Stream inputStream, string newCreator)
{
//the inputStream is actually a MemoryStream
WordprocessingDocument document = WordprocessingDocument.Open(inputStream, true);
document.PackageProperties.Creator = newCreator;
document.Save();
//on this point i expect the original stream to be replaced with the new one
}
该文档仅作为流提供,因为此内容适用于Web应用程序项目。但是,当我尝试在调试模式下重新读取流时,document
实例上的更改似乎没有持久化。此外,它不会触发任何异常。
修改:进一步测试,使用较旧的DocumentFormat.OpenXML(版本2.0.50022。WordprocessingDocument
类没有Save()
方法,而是Close()
尝试将代码修改为以下内容并且它有效。但仍然想知道2.7.2上的正确方法。
public static SetCreator(Stream inputStream, string newCreator)
{
//the inputStream is actually a MemoryStream
WordprocessingDocument document = WordprocessingDocument.Open(inputStream, true);
document.PackageProperties.Creator = newCreator;
document.Close(); //On older version, calling this will save it into memory stream without actually closing it.
}
答案 0 :(得分:0)
// Change MemoryStream by FileStream
public static SetCreator(FileStream inputStream, string newCreator)
{
using (WordprocessingDocument document = WordprocessingDocument.Open(inputStream, true))
{
document.PackageProperties.Creator = newCreator;
// You shouldn't need to do document.Save()
}
}
// Main code
path = "C:\myPath";
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
SetCreator(fs, "ME");
}