Relace HWPFDocument 段落文本使用 java 结果奇怪的输出
Relace HWPFDocument paragraph text using java results strange output
我需要替换 .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 文件格式非常复杂,"doing it right" 并非易事。除非您愿意花费很多人月,否则也不可能修复库的一部分以便仅保存工作。许多数据结构必须非常精确地处理,单个 "slip up" 会让 Word 在生成的输出文件上崩溃。
我需要替换 .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 文件格式非常复杂,"doing it right" 并非易事。除非您愿意花费很多人月,否则也不可能修复库的一部分以便仅保存工作。许多数据结构必须非常精确地处理,单个 "slip up" 会让 Word 在生成的输出文件上崩溃。