Dúvida com POI para .doc

Galera boa tarde,

Estou com problemas ao usar o POI para word ()

import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;

import java.util.Map;

import org.apache.poi.hwpf.HWPFDocument;
import org.apache.poi.hwpf.extractor.WordExtractor;

import org.apache.poi.hwpf.usermodel.Range;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;

/**
 *
 * @author rhumberto
 */
public class ReplaceToken {


    public void replaceWord(InputStream fistream, Map<String, String> mapReplacement) {
        try{
            HWPFDocument word = new HWPFDocument(new POIFSFileSystem(fistream));

            Range range = word.getRange();

            WordExtractor wordExt = new WordExtractor(word);

            for(String keySet : mapReplacement.keySet())
                range.replaceText(keySet, mapReplacement.get(keySet));

            for (String str : wordExt.getParagraphText()) {
                System.out.println("Texto >>> " + str);
            }

            /** cria um novo documento */
            OutputStream output = new FileOutputStream("DocTeste.doc");

            word.write(output);
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

Ele carrega o conteúdo e tudo mais… mas quando eu tento salvar em um arquivo novo… ele aparece corrompido…

Pelo que eu percebi é a API que está com problemas (talvez por ser uma versão instável) porque só de eu carregar o arquivo e salvar em um outro… ele já zoa todo a formatação…

se alguém puder me ajudar… há alguma versão estável para se trabalhar? … a versão do POI que eu uso é o 3.6

Cara, você conseguiu solucionar o problema ???
Eu estou tentando alterar o conteudo de um arquivo docx mas quando gravo, as alterações não estão sendo aplicadas, ou seja, o arquivo final é igual ao de destino… alguém tem alguma ideia ???

Segue meu código…

package testeDOC;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import org.apache.poi.xwpf.extractor.XWPFWordExtractor;
import org.apache.poi.xwpf.usermodel.XWPFDocument;

/**
 *
 * @author ivesbertoli
 */
public class TesteWord {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws IOException {
        InputStream arquivoCarregado = TesteWord.class.getClassLoader().getResourceAsStream("modelof.docx");        
        XWPFDocument word = new XWPFDocument(arquivoCarregado);
        XWPFWordExtractor extractor = new XWPFWordExtractor(word);       
        String conteudo = extractor.getText();
        conteudo = conteudo.replace("@Diretor", "Simpsons");        
        FileOutputStream output = new FileOutputStream("/tmp/teste.docx");
        word.write(output);
        output.flush();
        output.close();
    }

}

Eu resolvi meu problema usando o openoffice… tipo… a única coisa que eu fiz foi setar as devidas apis que se localiza dentro do openoffice instalado e, na aplicação eu jogo os dados nele e faço replace…

Com POI eu descobri que é porque a microsoft não segue os devidos padrões nos arquivos…

Boa noite.

Tive um problema parecido com esse e tbm resolvi o meu problema utilizando o openOffice.

tem um exemplo básico de como utilizar o JDOReport em http://pedrocavalero.blogspot.com/2011/05/criando-documento-partir-de-templates.html

Boa leitura e valeu

Dependendo do que vc quiser fazer, dá pra salvar em RTF e depois renomear pra .DOC. O Word vai abrir normalmente.