gpt4 book ai didi

java - Relace HWPFDocument段落文本使用java结果输出奇怪

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:43:58 26 4
gpt4 key购买 nike

我需要替换 .doc 文件的 HWPFDocument paragraph 文本,如果它包含使用 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

最佳答案

HWPF 库并非处于更改/写入 .doc 文件的完美状态。 (至少在我最后一次看的时候是这样。前段时间我为我的客户开发了一个 HWPF 的自定义变体,其中包括提供正确的替换和保存操作,但该库不公开可用。)

如果您绝对必须使用 .doc 文件和 Java,您可以通过替换为完全相同长度的字符串来逃脱。例如 "12345" -> "abc__" (_ 是空格或任何适合你的东西)。在 doc 文件中找到要替换的字符串的绝对位置(使用 HWPF),然后直接在 doc 文件中更改它(不使用 HWPF)可能是有意义的。

Word 文件格式非常复杂,“正确处理”并非易事。除非您愿意花费很多人月,否则也不可能修复库的一部分以便仅保存工作。许多数据结构必须非常精确地处理,一次“失误”就会让 Word 在生成的输出文件上崩溃。

关于java - Relace HWPFDocument段落文本使用java结果输出奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913377/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com