我有一種情況,用戶可以上傳包含某些屬性的佔位符的Word文檔(例如,用戶已經進入插入>快速部件>文檔屬性並選擇了MS Word一個財產)。我想支持的具體屬性是Title
,Author
,Company
和Publish Date
。如何使用OpenXML在Word文檔中設置發佈日期
Title
和Author
被設置爲包屬性,並且Company
被設置爲擴展文件屬性。這些設置與下面的代碼,它工作正常:
private static void SetDocumentProperties(ReportTemplateModel model, WordprocessingDocument wordDocument)
{
//these properties always exist
wordDocument.PackageProperties.Title = model.Title;
wordDocument.PackageProperties.Creator = model.Author;
wordDocument.PackageProperties.Created = DateTime.Now;
wordDocument.PackageProperties.Modified = DateTime.Now;
//these properties can be null
if (wordDocument.ExtendedFilePropertiesPart == null)
{
wordDocument.AddNewPart<ExtendedFilePropertiesPart>();
}
if (wordDocument.ExtendedFilePropertiesPart.Properties == null)
{
wordDocument.ExtendedFilePropertiesPart.Properties = new Properties(new Company(model.SiteName));
}
else
{
wordDocument.ExtendedFilePropertiesPart.Properties.Company = new Company(model.SiteName);
}
}
我的問題是,我無法工作,如何將設置Publish Date
屬性。我曾嘗試使用下面的代碼(它是從https://www.snip2code.com/Snippet/292005/WDSetCustomProperty改編的)將其添加爲自定義文件屬性,但這不起作用。我已經閱讀了一些關於設置自定義屬性的內容,但我很困惑它們是如何工作的。我也不確定Publish Date
應該實際設置爲自定義屬性還是其他類型的屬性。
var customProps = wordDocument.CustomFilePropertiesPart;
if (customProps == null)
{
customProps = wordDocument.AddCustomFilePropertiesPart();
customProps.Properties = new DocumentFormat.OpenXml.CustomProperties.Properties();
}
var properties1 = new DocumentFormat.OpenXml.CustomProperties.Properties();
//I have tried both of these lines, neither worked.
//properties1.AddNamespaceDeclaration("op", "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties");
properties1.AddNamespaceDeclaration("vt", "http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes");
var customDocumentProperty1 = new DocumentFormat.OpenXml.CustomProperties.CustomDocumentProperty()
{
FormatId = "{D5CDD505-2E9C-101B-9397-08002B2CF9AE}",
PropertyId = 2,
Name = "Publish Date"
};
customDocumentProperty1.Append(new DocumentFormat.OpenXml.VariantTypes.VTLPWSTR { Text = DateTime.Today.ToShortDateString() });
properties1.Append(customDocumentProperty1);
part.Properties = properties1;
Publish Date
應該被設置爲什麼類型的屬性,以及什麼是正確的語法來設置它?
更新:我發現Publish Date
是可以使用下面的代碼片段創建一個CoverPageProperty
,但我還沒有找到如何在文檔中正確設置。
var coverPageProps = new DocumentFormat.OpenXml.Office.CoverPageProps.CoverPageProperties
{
PublishDate = new PublishDate(DateTime.Today.ToShortDateString())
};