我需要换一个新的
HWPFDocument paragraph
的文本 .doc
如果文件包含特定文本,则使用 java
. 它取代了文本。但是进程以一种奇怪的方式写入输出文本。请帮我纠正这个问题。使用的代码段:
public static HWPFDocument processChange(HWPFDocument doc)
{
try
{
Range range = doc.getRange();
for (int i = 0; i < range.numParagraphs(); i++)
{
Paragraph paragraph = range.getParagraph(i);
if (paragraph.text().contains("Place Holder"))
{
String text = paragraph.text();
paragraph.replaceText(text, "*******");
}
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
return doc;
}
输入:
Place Holder
Textvalue1
Textvalue2
Textvalue3
输出:
*******Textvalue1
Textvalue1
Textvalue2
Textvalue3
1条答案
按热度按时间zpgglvta1#
hwpf库对于更改/写入.doc文件来说不是一个完美的状态(至少在我最后一次看的时候。不久前,我为我的客户机开发了一个定制的hwpf变体,它提供了正确的替换和保存操作,但该库并不公开。)
如果您绝对必须使用.doc文件和java,您可以用长度完全相同的字符串替换。例如
"12345"
->"__"
(_
空间或任何适合你的东西)。在doc文件中找到要替换的字符串的绝对位置(使用hwpf),然后直接在doc文件中更改它(不使用hwpf),这可能是有意义的。word文件格式非常复杂,“正确处理”并不是一件小事。除非你愿意花很多人月,否则也不可能修复库的一部分,这样就可以节省工作量。许多数据结构必须非常精确地处理,一个“失误”就可以让word在生成的输出文件上崩溃。