gpt4 book ai didi

c# - Documentformat.openxml - 使用默认样式创建 word 文档

转载 作者:行者123 更新时间:2023-11-30 17:07:36 31 4
gpt4 key购买 nike

我希望创建的 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”呢?

最佳答案

如果您像我一样发现这篇文章是因为您尝试使用带有默认样式“标题 1”、“标题 2”、“标题”等的 OpenXML 构建文档,您可以在使用 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 中的“样式集”。

关于c# - Documentformat.openxml - 使用默认样式创建 word 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14378317/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com