我希望创建的word文档使用Word中的默认样式,因此用户可以使用内置主题更改样式。
我尝试过使用:
var paragraph = new Paragraph();
var run = new Run();
run.Append(new Text(text));
paragraph.Append(run);
var header = new Header();
header.Append(paragraph);
但其风格为“正常”。
那么,当我在Word中打开文档时,如何使其成为“标题1”?
答案 0 :(得分:2)
如果您和我一样,并且您发现此帖子是因为您尝试使用OpenXML使用默认样式“标题1”,“标题2”,“标题”等来构建文档,那么当您使用Microsoft Word时几个小时后我找到了解决方案。
首先,我尝试在普通模板“Normal.dotm”中找到样式。这不是存储样式的地方,你看错了地方。默认样式实际上是在名为QuickStyles的目录中的“Default.dotx”文件中定义的。
路径将根据您的版本和操作系统而改变。对我来说,我在“C:\ Program Files(x86)\ Microsoft Office \ Office14 \ 1033 \ QuickStyles”中找到了dotx。
我从this blog post找到了一些代码来创建和修改模板中的文档:
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中的“样式集”。