如果您像我一样发现这篇文章,因为您尝试使用 OpenXML 构建文档,默认样式为“标题 1”、“标题 2”、“标题”等。当您使用 Microsoft Word 时,我发现几个小时后解决。
首先,我试图在普通模板“Normal.dotm”中找到样式。这不是存储样式的地方,您在寻找错误的地方。默认样式实际上是在名为 QuickStyles 的目录中的“Default.dotx”文件中定义的。
路径将根据您的版本和操作系统而改变。对我来说,我在“C:\Program Files (x86)\Microsoft Office\Office14\1033\QuickStyles”找到了 dotx。
我从这篇博文中找到了一些代码来从模板创建和修改文档:
void CreateWordDocumentUsingMSWordStyles(string outputPath, string templatePath)
{
// create a copy of the template and open the copy
System.IO.File.Copy(templatePath, outputPath, true);
using (var document = WordprocessingDocument.Open(outputPath, true))
{
document.ChangeDocumentType(WordprocessingDocumentType.Document);
var mainPart = document.MainDocumentPart;
var settings = mainPart.DocumentSettingsPart;
var templateRelationship = new AttachedTemplate { Id = "relationId1" };
settings.Settings.Append(templateRelationship);
var templateUri = new Uri("c:\\anything.dotx", UriKind.Absolute); // you can put any path you like and the document styles still work
settings.AddExternalRelationship("http://schemas.openxmlformats.org/officeDocument/2006/relationships/attachedTemplate", templateUri, templateRelationship.Id);
// using Title as it would appear in Microsoft Word
var paragraphProps = new ParagraphProperties();
paragraphProps.ParagraphStyleId = new ParagraphStyleId { Val = "Title" };
// add some text with the "Title" style from the "Default" style set supplied by Microsoft Word
var run = new Run();
run.Append(new Text("My Title!"));
var paragraph = new Paragraph();
paragraph.Append(paragraphProps);
paragraph.Append(run);
mainPart.Document.Body.Append(paragraph);
mainPart.Document.Save();
}
}
只需使用指向 Default.dotx 文件的 templatePath 调用此方法,您就可以使用 Microsoft Word 中显示的默认样式。
var path = System.IO.Path.GetTempFileName();
CreateWordDocumentUsingMSWordStyles(path, "C:\\Program Files (x86)\\Microsoft Office\\Office14\\1033\\QuickStyles\\Default.dotx");
这确实允许用户在按照原始问题打开文档后更改 Word 中的“样式集”。