Documentformat.用默认样式创建word文档
本文关键字:word 文档 创建 样式 默认 Documentformat | 更新日期: 2023-09-27 17:53:47
我希望创建的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);
但是它的样式是"Normal"。
那么,当我在Word中打开文档时,我如何使它成为"Heading 1"呢?
如果你像我一样发现了这篇文章,因为你试图使用OpenXML创建文档,默认样式为"Heading 1", "Heading 2", "Title"等,当你使用Microsoft Word时,我在几个小时后找到了解决方案。
首先,我试着在普通模板"norm.dot"中找到样式。这不是样式存储的地方,您找错地方了。默认样式实际上是在"default"中定义的。在一个名为QuickStyles的目录下。
路径将根据您的版本和操作系统而更改。对于我来说,我找到了"C:'Program Files (x86)'Microsoft Office'Office14'1033'QuickStyles"。
我从这篇博客文章中找到了一些代码来从模板创建和修改文档:
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();
}
}
调用这个方法,templatePath指向你的默认值。dotx文件,您将能够使用默认样式,因为他们出现在Microsoft Word。
var path = System.IO.Path.GetTempFileName();
CreateWordDocumentUsingMSWordStyles(path, "C:''Program Files (x86)''Microsoft Office''Office14''1033''QuickStyles''Default.dotx");
这允许用户在打开文档后根据原始问题更改Word中的"样式集"