bom tive uns progressos.
tentei converter o arquivo que eu tinha pro formato doc pra ser mais facil de trabalhar (na verdade é pq tem mais exemplos por ai).
então acabei achando um código aqui pelo guj mesmo que trabalha com o Range e um mapa de strings pra localização e substituição do conteudo o arquivo:
vamos ao códEgo:
[code] public static void replaceWord(InputStream fistream, Map<String, String> mapReplacement) {
try{
HWPFDocument word = new HWPFDocument(new POIFSFileSystem(fistream));
Range range = word.getRange();
for(String keySet : mapReplacement.keySet())
range.replaceText(keySet, mapReplacement.get(keySet));
OutputStream output = new FileOutputStream("DocTeste.doc");
word.write(output);
}catch(Exception e){
e.printStackTrace();
}
}[/code]
esse provavelmente é o mais efetivo dos códigos pra se trabalhar com um modelo doc.
crie campos no arquivo (como se fossem tags) que possam ser alteradas com um replace (por exempo “#remetente#”). e jogue isso num map e ele devolve um arquivo .doc modificado.
public static void main(String[] args) {
HashMap<String, String> mapa = new HashMap<String, String>();
mapa.put("#remetente#", "LOLOLOL");
try {
replaceWord(new FileInputStream(new File("MODELO.doc")), mapa);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
o problema é que meu modelo tem um header e um footer que contem imagens. o texto ele conseguiu jogar normalmente, mas as imagens não aparecem mais.
depois tentei algo parecido com um código pra trabalhar com XWPFDocument e XWPFWordExtractor
[code] public static void reclace() throws IOException {
InputStream arquivoCarregado = new FileInputStream(new File(“MODELmine.docx”));
XWPFDocument word = new XWPFDocument(arquivoCarregado);
XWPFWordExtractor extractor = new XWPFWordExtractor(word);
String conteudo = extractor.getText();
conteudo = conteudo.replace("#nate_oper#", “Simpsons”);
FileOutputStream output = new FileOutputStream("testeteste.docx");
word.write(output);
output.flush();
output.close();
}
[/code]
provavelmente este também funciona da mesma forma. eu consigo ver a saída do texto no console, mas não sei como escrever esses dados alterados corretamente no docx do meu modelo.
alguém sabe alguma coisa a respeito (sobre um ou ambos os casos)?