使用Java:替换MS Word文件中的字符串
我们需要一个Java库来替换MS Word文件中的字符串 有人能提出建议吗?试试这个: 除了替换ms word文件中的字符串外,还可以: -使用简化的API读取/写入Excel文件,如:getCell(x,y)和setCell(x,y,string) -隐藏Excel工作表(例如二次计算) -替换DOC、ODT和SXW文件中的图像 -并转换为: 文档-->pdf、html、txt、rtf xls-->pdf、html、csv使用Java:替换MS Word文件中的字符串,java,ms-word,Java,Ms Word,我们需要一个Java库来替换MS Word文件中的字符串 有人能提出建议吗?试试这个: 除了替换ms word文件中的字符串外,还可以: -使用简化的API读取/写入Excel文件,如:getCell(x,y)和setCell(x,y,string) -隐藏Excel工作表(例如二次计算) -替换DOC、ODT和SXW文件中的图像 -并转换为: 文档-->pdf、html、txt、rtf xls-->pdf、html、csv ppt-->pdf,swf我建议使用Apache POI库: 看得更
ppt-->pdf,swf我建议使用Apache POI库:
看得更多-它看起来好像没有跟上时代-嘘!不过,现在它可能已经足够完整,可以满足您的需要。我想看看ApachePOI项目。这就是我过去用来与MS文档交互的内容 虽然ApachePOI中支持MS Word,但它不是很好。加载并保存除最基本格式之外的任何文件都可能会破坏布局。你应该试试,也许对你有用 也有很多商业图书馆,但我不知道是否有更好的 我最近在处理类似需求时不得不接受的糟糕的“解决方案”是使用格式,打开ZIP容器,读取文档XML,然后用正确的文本替换我的标记。这确实适用于替换没有段落等的简单文本位
private static final String WORD_TEMPLATE_PATH = "word/word_template.docx";
private static final String DOCUMENT_XML = "word/document.xml";
/*....*/
final Resource templateFile = new ClassPathResource(WORD_TEMPLATE_PATH);
final ZipInputStream zipIn = new ZipInputStream(templateFile.getInputStream());
final ZipOutputStream zipOut = new ZipOutputStream(output);
ZipEntry inEntry;
while ((inEntry = zipIn.getNextEntry()) != null) {
final ZipEntry outEntry = new ZipEntry(inEntry.getName());
zipOut.putNextEntry(outEntry);
if (inEntry.getName().equals(DOCUMENT_XML)) {
final String contentIn = IOUtils.toString(zipIn, UTF_8);
final String outContent = this.processContent(new StringReader(contentIn));
IOUtils.write(outContent, zipOut, UTF_8);
} else {
IOUtils.copy(zipIn, zipOut);
}
zipOut.closeEntry();
}
zipIn.close();
zipOut.finish();
我并不为此感到骄傲,但它确实有效。谢谢大家。我要试试
因为我需要转换经典的DOC文件(二进制)而不是DOCX(zip格式)。创造性的解决方案,尽管有些粗糙!对我来说非常有效。但是,您必须小心在文档中键入标记的方式。有时,Word会按marker关键字分成两个XML标记,如:
hello world代码>。只要在不改变光标中间位置的情况下键入整个标记字,就可以正常工作。