C# 创建word文档并编写格式化文本
上面的代码创建Word文档并向其中写入文本,但看起来如下所示: 我假设C# 创建word文档并编写格式化文本,c#,text,ms-word,C#,Text,Ms Word,上面的代码创建Word文档并向其中写入文本,但看起来如下所示: 我假设Microsoft.Office.Interop.Word中的文本不应该这样做,或者应该以其他方式添加文本,但我找不到任何关于如何执行此操作的好信息 因此,我的问题是-如何将c#中的文本添加到新创建的具有正确属性的word文档中,结果如下所示: 关于使用.Interop.Word创建表的提示也将不胜感激。使用Word文档中的内容的关键是了解如何使用范围对象。实现这种性质的目标的方法不止一种。下面的代码片段是我的首选:折叠每个步
Microsoft.Office.Interop.Word
中的文本不应该这样做,或者应该以其他方式添加文本,但我找不到任何关于如何执行此操作的好信息
因此,我的问题是-如何将c#中的文本添加到新创建的具有正确属性的word文档中,结果如下所示:
关于使用
.Interop.Word
创建表的提示也将不胜感激。使用Word文档中的内容的关键是了解如何使用范围
对象。实现这种性质的目标的方法不止一种。下面的代码片段是我的首选:折叠每个步骤的范围(就像按向右箭头键将选择“折叠”到一个点),而不是混合使用Add
、InsertAfter
和类似的方法
对于格式的每次更改,范围必须“折叠”。所以如果你在一条直线中间有粗体,那是一个单独的步骤。如果多个段落的格式相同,则可以将它们组合在一起
环境。换行符
和\n
可以互换使用
通常,指定文本内容,然后格式化范围
using Word = Microsoft.Office.Interop.Word;
public static void CreateWord()
{
Word.Application objWord = new Word.Application();
Word.Document objDoc = objWord.Documents.Add();
Word.Paragraph objPara;
objPara = objDoc.Paragraphs.Add();
objPara.Range.Text = "Bold text aligned center";
objPara.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
objPara.Range.Bold = 1;
objPara.Range.InsertParagraphAfter();
objPara = objDoc.Paragraphs.Add();
objPara.Range.Text = "Regular text aligned left";
objPara.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
objPara.Range.Bold = 0;
objPara.Range.InsertParagraphAfter();
objPara = objDoc.Paragraphs.Add();
objPara.Range.Text = "Regular text aligned center\nwith something on the next line";
objPara.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
objPara.Range.Bold = 0;
objPara.Range.InsertParagraphAfter();
objPara = objDoc.Paragraphs.Add();
objPara.Range.Text = "Regular text aligned left, with some Bold text here\nand some regular text on next line";
objPara.Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
objPara.Range.Bold = 0;
objPara.Range.InsertParagraphAfter();
objWord.Visible = true;
objWord.WindowState = Word.WdWindowState.wdWindowStateNormal;
}
@AndrewG的可能副本基本上,添加文本并稍后使用其在字符串中的相对位置编辑其格式?这很有帮助。是的,看起来真的很糟糕。哈哈,我个人可能想多看看,因为如果这是解决方案,那就不是最好的。
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
doc.Paragraphs.Add();
Word.Range objRange = doc.Content;
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "Bold text aligned center" + Environment.NewLine;
objRange.Bold = 1;
objRange.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "Regular text aligned left" + Environment.NewLine;
objRange.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
objRange.Bold = 0;
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "Regular text aligned center\nwith something on the next line" + Environment.NewLine;
objRange.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter;
objRange.Bold = 0;
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "Regular text aligned left, with some ";
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "Bold text here";
objRange.Bold = 1;
objRange.Collapse(ref oCollapseEnd);
objRange.Text = "\nand some regular text on next line" + Environment.NewLine;
objRange.Paragraphs.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft;
objRange.Bold = 0;