【发布时间】:2023-03-15 19:12:01
【问题描述】:
我是 C# 开发的新手,我应该以编程方式生成 Word 文档。
在某些时候我正在这样做:
Paragraph p1 = document.Paragraphs.Add();
Table t1 = p1.Range.Tables.Add(p1.Range, 2, 1, Missing.Value, Missing.Value);
t1.Range.Font.Size = 11;
t1.Style = style;
t1.Rows[1].Alignment = WdRowAlignment.wdAlignRowCenter;
t1.Cell(1, 1).Range.Select();
document.Application.Selection.TypeText(item.FullName + "");
t1.Cell(2, 1).Range.Select();
document.Application.Selection.TypeText(item.swca_description + "");
t1.Cell(2, 1).Range.Bold = 0;
第一个单元格是我打算格式化的(item.FullName)。
有什么想法吗?
编辑: 这就是我创建需要赋予颜色的字符串的方式:
private string GetFullName()
{
StringBuilder sb = new StringBuilder();
sb.Append(this.swc_datatype == null ? "void" : this.swc_datatype.swcdt_name);
sb.Append($" {this.swca_name}(");
foreach (swc_api_parameter inputParameter in this.swc_api_parameter)
sb.Append($"{inputParameter.swc_datatype?.swcdt_name} {inputParameter.swcap_name},");
if (swc_api_parameter.Any())
sb.Length = sb.Length - 1;
sb.Append(")");
return sb.ToString();
}
LE:我已经实现了这样的方法:
public static Paragraph AddRtfTextFromFile(this Document document, string rtfPath)
{
Paragraph p = document.Paragraphs.Add();
p.Range.InsertFile(rtfPath, Missing.Value, false);
p.Range.Font.Bold = 0;
p.Range.Font.Name = "Calibri";
p.Range.Font.Size = 12;
p.Range.ParagraphFormat.Alignment = WdParagraphAlignment.wdAlignParagraphJustify;
p.Range.PageSetup.VerticalAlignment = WdVerticalAlignment.wdAlignVerticalTop;
p.Range.InsertParagraphAfter();
return p;
}
【问题讨论】:
-
没有理由为你的英语道歉,一点也不差!
-
您使用的是 Word Interop 还是任何其他库?
-
它基于 Interop,但我使用的是 NetOffice 库。我这样做的原因是因为对用户的唯一要求是安装 word,它与哪个版本无关。
-
该单元格中的输出看起来像带有保留字的类定义。 “Void”有一种颜色,类名另一种颜色,参数类型等等。这些字段是在我的应用程序中的某个时候引入的。这是一个组合字符串。我可以把它分成单独的词......但我的问题是给它们特定的颜色。
-
如果您可以将
item.FullName拆分为单词,一种方法是键入单词,选择单词,应用颜色,折叠选择,键入下一个单词并重复。