NPOI 操作 Word 段落代码:
XWPFDocument.Paragraphs[0].ReplaceText(oldText, newText);
以上代码在两种情况下会出现 NullReferenceException 错误:
1、oldText 为 null 或 Empty。
2、oldText 在该段落中不存在。
这个确实比较奇葩,通常我们找不到,跳过就是了,可是这个 NPOI 的作者却 抛出异常。
解决方法
我们自己加上判断。
var p = XWPFDocument.Paragraphs[0]; var ts = p.SearchText(oldText, new PositionInParagraph() { Run = 0 }); if (ts != null) { p.ReplaceText(oldText, newText); }
在 SearchText 中,oldText 为 null 或 Empty 均不会出错,只是总是返回 null,即使这一行确实为 Empty,它返回的也是 null。