gpt4 book ai didi

java - .doc 文件中的 Apache-POI 格式文本问题

转载 作者:行者123 更新时间:2023-12-02 05:28:39 25 4
gpt4 key购买 nike

我在我的项目中使用这个例子。一切都很好,替换文本也很好,但是在我的输出文本文件中,本应“居中”的文本文件已变为左对齐。输入文件 - .doc,我感觉这破坏了文档的格式,但我不确定问题是什么。如何解决这个问题?

public class HWPFTest {
public static void main(String[] args){
String filePath = "F:\\Sample.doc";
POIFSFileSystem fs = null;
try {
fs = new POIFSFileSystem(new FileInputStream(filePath));
HWPFDocument doc = new HWPFDocument(fs);
doc = replaceText(doc, "$VAR", "MyValue1");
saveWord(filePath, doc);
}
catch(FileNotFoundException e){
e.printStackTrace();
}
catch(IOException e){
e.printStackTrace();
}
}

private static HWPFDocument replaceText(HWPFDocument doc, String findText, String replaceText){
Range r1 = doc.getRange();

for (int i = 0; i < r1.numSections(); ++i ) {
Section s = r1.getSection(i);
for (int x = 0; x < s.numParagraphs(); x++) {
Paragraph p = s.getParagraph(x);
for (int z = 0; z < p.numCharacterRuns(); z++) {
CharacterRun run = p.getCharacterRun(z);
String text = run.text();
if(text.contains(findText)) {
run.replaceText(findText, replaceText);
}
}
}
}
return doc;
}

private static void saveWord(String filePath, HWPFDocument doc) throws FileNotFoundException, IOException{
FileOutputStream out = null;
try{
out = new FileOutputStream(filePath);
doc.write(out);
}
finally{
out.close();
}
}
}

最佳答案

HWPF 不可用于写入 .doc 文件。它可能适用于非常简单的文件内容,但很少有额外的东西会破坏它。我担心您在这里运气不好 - 如果您可以选择,您可能想要使用 RTF 文件并处理这些文件。如果您将 rtf 扩展名重命名为 .doc(如果您需要 .doc 扩展名),Word 应该可以正常工作。

(我为客户开发了一个 HWPF 的自定义和工作变体,并且知道实现这一目标有多么困难。当存在 8 位编码之外的字符、使用表格、文本时,标准 HWPF 库将会遇到麻烦嵌入图形时使用框,....doc 文件中的某些内容也与 Microsoft 官方规范中描述的内容不同。制作一个可用的 HWPF 库“并非易事”,需要大量规范-阅读和调查。如果你想继续修复这些错误,你需要至少半年的开发工作。)

关于java - .doc 文件中的 Apache-POI 格式文本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25760491/

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