如何在不加粗整个文档的情况下以编程方式将粗体文本写入Word文档?

Ric*_*ano 11 c# ms-word

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

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;
Run Code Online (Sandbox Code Playgroud)

这将生成仅包含文本的word文档**Information underneath the header**.这是一个简单的例子.

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

kri*_*gar 8

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

我所做的是自动化的,但如果你知道自己在做什么,同样适用.请记住,Bold只是一个int,没有布尔值true/false(由于某种原因).

根据里卡多的优点,我也会在这里发布代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

显然,如果你想摘要更进一步,你可以添加一个参数为charstring这样你就可以改变什么被用于设置大胆启动/停止.

有一点需要注意的是,在另一个帖子的评论中讨论过,由于某种原因,Bold只是一个int.设置它没有bool值.我知道这很奇怪.