gpt4 book ai didi

c# - 如何以编程方式将粗体文本写入 Word 文档而不加粗整个文档?

转载 作者:可可西里 更新时间:2023-11-01 08:46:49 25 4
gpt4 key购买 nike

我的程序需要以 Office .doc 格式(非 XML)生成非常简单的报告,并且文档的某些部分需要加粗。我一直在查看 defining ranges 的文档,这部分是我的代码目前的来源。 This文档的一部分并没有真正给我足够的细节来在我的文档中总体上实现这一点。到目前为止,这是我的代码:

object miss = System.Reflection.Missing.Value;
object Visible = true;
object start = 0;

Microsoft.Office.Interop.Word.Application WordApp = new Microsoft.Office.Interop.Word.Application();
Document report = WordApp.Documents.Add(ref miss, ref miss, ref miss, ref miss);

String header = "Bold Header: ";
Range headerRange = report.Range(ref start, ref miss);
headerRange.Text = header;
headerRange.Font.Bold = -1;

String data = "Information underneath the header";
Range dataRange = report.Range();
dataRange.Text = data;
dataRange.Font.Bold = 1;

object filename = "test.doc";

report.SaveAs(ref filename, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);
object saveChanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdPromptToSaveChanges;
object originalFormat = Microsoft.Office.Interop.Word.WdOriginalFormat.wdWordDocument;
object routeDocument = true;
WordApp.Visible = true;

这将生成一个只有文本 **Information under the header** 的 word 文档。这是一个简单的例子。

我的文档不会比这更复杂,但我希望基于可变数据量生成 Word 文档,粗体文本和非粗体文本分散在各处。

最佳答案

Here这是我想出的答案,它允许您在同一个字符串中使用粗体和常规字符串的一部分。

我所做的是自动化的,但如果您知道自己在做什么,这同样适用。还要记住,Bold 只是一个 int,没有 bool 值 true/false(出于某种原因)。

根据 Ricardo 的精彩观点,我也将代码发布在这里:

private void InsertMultiFormatParagraph(string psText, int piSize, int piSpaceAfter = 10) {
Word.Paragraph para = mdocWord.Content.Paragraphs.Add(ref mobjMissing);

para.Range.Text = psText;
// Explicitly set this to "not bold"
para.Range.Font.Bold = 0;
para.Range.Font.Size = piSize;
para.Format.SpaceAfter = piSpaceAfter;

object objStart = para.Range.Start;
object objEnd = para.Range.Start + psText.IndexOf(":");

Word.Range rngBold = mdocWord.Range(ref objStart, ref objEnd);
rngBold.Bold = 1;

para.Range.InsertParagraphAfter();
}

显然,如果您想进一步抽象它,您可以为 charstring 添加一个参数,这样您就可以更改用于设置大胆开始/停止。

在另一个线程的评论中讨论的一件事是,由于某种原因,Bold 只是一个 int。没有用于设置的 bool 值。这很奇怪,我知道。

关于c# - 如何以编程方式将粗体文本写入 Word 文档而不加粗整个文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564073/

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