我正在用ms字替换数字列表中的文本。当它被替换号码列表不起作用。它显示为一个段落。我想在不更改数字列表顺序的情况下替换文本。请帮忙。提前谢谢!
newDocument = application.Documents.Open(strFilepath, ref nullobj, ref nullobj, ref nullobj,
ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj, ref nullobj);
foreach (Paragraph objParagraph in newDocument.Paragraphs)
{
if (objParagraph.Range.Text.Contains("1st January 2015 to 31st December 2015"))
{
objParagraph.Range.Text = objParagraph.Range.Text.Replace("1st January 2015 to 31st December 2015", "1st January 2016 to 31st December 2016");
}
}
答案 0 :(得分:0)
当您将内容分配给Paragraph.Range.Text时,您将替换整个段落,包括末尾的段落标记(“回车”= ANSI 13 = / r或C#中的/ n)。段落标记不仅是“carridge返回”,还包含段落级格式信息,其中包括编号。
尝试使用缩短了一个字符的Range对象来排除段落标记:
Word.Range rngPara = objParagraph.Range;
//Note: You may need to pass the following params as objects, with ref
//instead of "in the clear", as below.
rngPara.MoveEnd(Word.WdUnit.wdCharacter, -1);
rngPara.Text = "abc";
答案 1 :(得分:0)
我注意到您从ASP.NET应用程序自动化MS Word。
Microsoft目前不建议也不支持从任何无人参与的非交互式客户端应用程序或组件(包括ASP,ASP.NET,DCOM和NT服务)自动化Microsoft Office应用程序,因为Office在此环境中运行Office时,可能会出现不稳定的行为和/或死锁。
如果要构建在服务器端上下文中运行的解决方案,则应尝试使用已为安全无人值守执行的组件。或者,您应该尝试找到允许至少部分代码在客户端运行的替代方法。如果从服务器端解决方案使用Office应用程序,则应用程序将缺少许多成功运行的必要功能。此外,您将承担整体解决方案稳定性的风险。请在Considerations for server-side Automation of Office文章中详细了解相关内容。
考虑使用为服务器端执行而设计的任何第三方组件,或仅使用Open XML SDK。有关详细信息,请参阅Welcome to the Open XML SDK 2.5 for Office。