我正在尝试创建Word文档,但是某些单词之间的文本应被划掉。我尝试在线寻找解决方案,但唯一能找到的解决方案是:
Set myRange = document.Range(Start:= document.Words(1).Start, _End:= document.Words(3).End)
myRange.Font.StrikeThrough = True
从这里https://msdn.microsoft.com/en-us/vba/word-vba/articles/font-strikethrough-property-word开始使用VBA。不幸的是C#没有任何东西。
有人知道在将所有文本保存到Word文档之前如何在其上添加删除线吗?
我的参考代码:
//input is a StringBuilder received by method
try {
//Create an instance for word app
Microsoft.Office.Interop.Word.Application winword = new Microsoft.Office.Interop.Word.Application();
//Set animation status for word application
winword.ShowAnimation = false;
//Set status for word application is to be visible or not.
winword.Visible = false;
//Create a missing variable for missing value
object missing = System.Reflection.Missing.Value;
//Create a new document
Microsoft.Office.Interop.Word.Document document = winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);
//adding text to document
document.Content.SetRange(0, 0);
document.Content.Text = input.ToString();
//Save the document
object filename = @"C:\Users\TempUser\Desktop\temp1.docx";
document.SaveAs2(ref filename);
document.Close(ref missing, ref missing, ref missing);
document = null;
winword.Quit(ref missing, ref missing, ref missing);
winword = null;
Console.WriteLine("Document created successfully!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
答案 0 :(得分:0)
我已从您的代码中提取了相关部分,以使其更容易理解。
我对该示例的假设是,文本应插入文档的末尾,并设置为“删除线”。注意我如何声明一个Word.Range
对象,并将文档的主体分配给它。为了了解其工作原理,可将范围想像为选择,但可以有多个范围,并且在文档中不可见。
下一行将范围“折叠”到其端点-就像按向右箭头一样。如果您没有不折叠范围,则分配给它的文本将取代文档中的内容(例如,将选择内容过分键入)。然后将文本分配给Range并应用删除线。
请注意,在旧的Word Basic中,“ true”和“ false”不是用于设置字体修饰的概念。 Word的对象模型仍然使用这些旧的Word Basic命令。在幕后,他们仍然使用-1表示true,使用0表示false(有时使用1表示其他)。为了方便起见,VB语言可以使用已添加到对象模型中的“伪布尔”设置(true / false),但C#不会“看到”它们,因此您需要-1表示true。
//adding text to document
object oCollapseEnd = Word.WdCollapseDirection.wdCollapseEnd;
Word.Range rng = document.Content;
rng.Collapse(ref oCollapseEnd);
rng.Text = input.ToString();
rng.Font.Strikethrough = -1; // 0 for false