Estou com um problema sério. Preciso unificar (merging) dois arquivos do word (.doc) e manter a formatação do mesmo. Já tentei com a api apache poi. Mas meu texto está perdendo a formatação.
Você consegue fazer isso com VBA, por acaso? Pode ser que os dois documentos não possam ser juntados porque têm definições diferentes para os tipos de parágrafos.
mascjunior
Eu não tentei fazer em VBA.
Com a api apache poi, eu consegui fazer a junção, porém o texto perde a formatação.
Fiz usando HWPFDocument e utilizando o Range.
teria como manter a formatação utilizando este componente?
B
bezier_curve
Eu perguntei se usando VBA você consegue manter a formatação desejada, porque como é um componente do próprio Word e escrito pela própria Microsoft não deve sofrer de problemas do tipo “não foi feita uma engenharia reversa completa do formato .DOC, portanto o POI não consegue fazer tal tipo de coisas” (ignoro se o POI tenha tal tipo de limitação porque nunca o usei).
Talvez sofra de outros problemas, do tipo “só funciona se houver uma cópia licenciada do Office nessa máquina etc.”, ou então “que não seja possível fazer um merge preservando a formatação”. É uma coisa que não sei, só estou perguntando para você porque você pode tentar ver se isso consegue preservar a formatação ou não.
mascjunior
com esse código eu consigo uma copia exara do arquivo.
Com o código abaixo, eu consigo fazer o merging entre os arquivos, porém eu perco a formatação e as imagens.
// POI apparently cant create a document from scratch, // so we need an existing empty dummy document HWPFDocumentdoc=newHWPFDocument(newFileInputStream(D:\\tmp.doc));Rangerange=doc.getRange();//I can get the entire Document and insert it in the tmp.doc //However any formatting in my word document is lost. HWPFDocumentdoc2=newHWPFDocument(newFileInputStream(D:\\doc1.doc));Rangerange2=doc2.getRange();range.insertAfter(range2.text());//I can get the information (text only) for each character run/paragraph or section. //Again any formatting in my word document is lost. HWPFDocumentdoc3=newHWPFDocument(newFileInputStream(D:\\doc2.doc));Rangerange3=doc3.getRange();for(inti=0;irange3.numCharacterRuns();i++){CharacterRunrun3=range3.getCharacterRun(i);range.insertAfter(run3.text());}OutputStreamout=newFileOutputStream(D:\\result.doc);doc.write(out);out.flush();out.close();
alguma dica de como manter a formatação e as imagens?