/ / Crie um arquivo do Word usando POI - java, apache, ms-word, apache-poi

Criar um arquivo do Word usando POI - java, apache, ms-word, apache-poi

Meu requisito é que eu deva ler um arquivo de modelo e alterar alguns valores em seu conteúdo e escrevê-lo novamente em outro arquivo. Mais importante ainda, ele deve ter os mesmos estilos que o do modelo.

O problema que enfrento é que sou capaz de ler eescrever, mas é muito difícil transferir os estilos também. Estou cansado de tentar aplicar os estilos de parágrafo ao documento. Pls me ajude ..... este é o meu código

  public static void main(String[] args) {
try {
HWPFDocument templateFile = new HWPFDocument(new FileInputStream("D:\POI\testPOIin.doc"));
HWPFDocument blankFile = new HWPFDocument(new FileInputStream("D:\POI\blank.doc"));

ParagraphProperties pp = templateFile.getRange().getParagraph(4).cloneProperties();
blankFile.getRange().insertAfter(pp, 0);
OutputStream out = new FileOutputStream("D:\POI\testPOIout.doc");
blankFile.write(out);

} catch (FileNotFoundException fnfe) {
// TODO: Add catch code
fnfe.printStackTrace();
} catch (Exception ioe) {
// TODO: Add catch code
ioe.printStackTrace();
}
}
}

Pls deixe-me saber que estou fazendo errado .....

Respostas:

0 para resposta № 1

Eu também tive uma tarefa semelhante e, após investigação, criei a solução, mas funciona apenas para arquivos docx:

public static void main(String[] args) throws Exception {
FileOutputStream fos = new FileOutputStream(new File("transformed.docx"));
XWPFDocument doc = new XWPFDocument(new FileInputStream(new File("original.docx")));
for(XWPFParagraph p:doc.getParagraphs()){
for(XWPFRun r:p.getRuns()){
for(CTText ct:r.getCTR().getTList()){
String str = ct.getStringValue();
if(str.contains("NAME")){
str = str.replace("NAME", "Java Dev");
ct.setStringValue(str);
}
}
}
}
doc.write(fos);
}

opera em elementos de baixo nível, para salvar estilos e outros adereços. Espero que ajude alguém.