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"呢?

Documentformat.用默认样式创建word文档

如果你像我一样发现了这篇文章,因为你试图使用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中的"样式集"