gpt4 book ai didi

c# - 如何在 C# 中应用 Word Quick Style - 不仅仅是简单的格式而是整个样式?

转载 作者:太空狗 更新时间:2023-10-29 20:17:43 25 4
gpt4 key购买 nike

我承认,我对使用 Interop 库还很陌生,但人们似乎总是给出的建议是,录制一个宏并检查 vba 代码。问题是,宏没有准确记录我正在做什么:单击快速样式以将其应用于当前选择

我的任务非常简单:我需要将快速样式应用于段落 (Microsoft.Office.Interop.Word.Paragraph)。但是,使用 set_style 命令,仅应用基本格式,段落保持原始快速样式选择(正常)。

使用 Remou 的方法虽然对我有用,但它看起来与我自己的代码非常相似,我无法使其工作,我认为这可能是我对对象模型的理解有点偏差。

public void AddParagraph(string text, string styleName = null)
{
Paragraph paragraph = _document.Content.Paragraphs.Add();
if (styleName != null)
{
paragraph.Range.set_Style(_document.Styles[styleName]);
}

paragraph.Range.Text = text;
paragraph.Range.InsertParagraphAfter();
}

然后我用例如AddParagraph("A title", "Heading 1");,但是使用上面的包装器构建我的文档的结果是,没有应用完整的样式,只有字体、颜色、大小和粗体/斜体。

我正在使用我自己的 .dotx 文件,具有我自己定义和命名的样式,但只需从 Remou 复制代码即可使用我自己的模板,所以我认为这不是问题所在,并使用该代码我无法弄清楚如何为每个段落添加自己的样式。

谁能指出我的方法有什么问题,或者至少我如何才能让 Remou 提供的答案满足我的要求? :)

最佳答案

这对我有用。

Word.Application _wordApp = new Word.Application();
Word.Document oDoc = _wordApp.Documents.Add();
_wordApp.Visible = true;
_wordApp.Selection.TypeText("Heading");
oDoc.Paragraphs[1].set_Style(Word.WdBuiltinStyle.wdStyleHeading2);

当你说

paragraph.Range.Text = text + paragraph.Range.Text;

您收到的段落比您想象的要多。我想你需要:

paragraph.Range.Text = text;

尝试:

Paragraph paragraph = _document.Content.Paragraphs.Add();
paragraph.Range.Text = text;

if (styleName != null)
{
paragraph.set_Style(_document.Styles[styleName]);
}

paragraph.Range.InsertParagraphAfter();

关于c# - 如何在 C# 中应用 Word Quick Style - 不仅仅是简单的格式而是整个样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12190883/

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