Open GoogleCodeExporter opened 8 years ago
correction
xmlTemplate replacePh = (xmlTemplate, "tabela", tbl.getContent ());
Original comment by paulo3...@gmail.com
on 23 Apr 2012 at 5:53
I am looking at this for you...
Original comment by leonardo...@gmail.com
on 24 Apr 2012 at 8:08
there is something wrong with your template itself. I deleted everything
between <w:body></w:body>
and the doc doesn't open.
Take a look at this example:
http://code.google.com/p/java2word/source/browse/trunk/java2word/src/test/java/w
ord/w2004/template/TemplateTest.java
the first unit test, if you remove @Ignore, works perfectly. Maybe create a
template with no style, very simple just to get started.
The example works fine. It replaces all placeholders that are inside
paragraphs. This is fine as I know.
I got the code of the table tbl.getContent() and pasted on an empty doc and
works. So the table is fine. The template is not.
1- Create a very simple template with no style, add one text and one
placeholder: "phTabela"
2 - Make sure you can open the template without replacing anything using MS
Word.
3 - copy this healthy table code:
<w:tbl>
<w:tblPr>
<w:tblW w:w="0" w:type="auto"/>
<w:tblBorders>
<w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
<w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
<w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
<w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
<w:insideH w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
<w:insideV w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
</w:tblBorders>
<w:tblLook w:val="00BF"/>
</w:tblPr>
<w:tblGrid>
<w:gridCol w:w="4258"/>
<w:gridCol w:w="4258"/>
</w:tblGrid>
<w:tr>
<w:tc>
<w:p wsp:rsidR="008979E8" wsp:rsidRDefault="00000000">
<w:pPr> <w:jc w:val="left"/>
<w:ind w:left="0"/>
</w:pPr>
<w:r>
<w:t>Simple String cell</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<w:p wsp:rsidR="008979E8" wsp:rsidRDefault="00000000">
<w:pPr> <w:jc w:val="left"/>
<w:ind w:left="0"/>
</w:pPr>
<w:r>
<w:t>Another String simple cell</w:t>
</w:r>
</w:p>
</w:tc>
</w:tr>
</w:tbl>
4 - open the template by using a text editor.
5 - manually replace the placeholder with the table XML above.
6 - and save the file with another name.
7 - then open the new file with MS Word.
This is just an exercise to understand how things happen behind the scenes.
We get fancy later...don't worry.
cheers
Leonardo
Original comment by leonardo...@gmail.com
on 24 Apr 2012 at 8:49
Leonardo,
Tbm sou brasileiro e vou escrever em português, pois meu inglês é
péssimo... :D
Fiz o q vc falou mas não funciona... É o seguinte, fiz meu template usando o
BrOffice Writer 3.2 e criei o template conforme vc demonstra. Criei um
placeholder para a tabela chamado "phTabela" e no código java tentei inserir
uma tabela usando tanto o TableV2 quanto o Table, mas não abre de forma alguma
o .doc
Aqui no trabalho só tenho o broffice, será se o problema está no broffice?
Na minha casa tbm criei usando o Word mas tbm não funciona...Só falta
resolver esse problema da tabela para eu finalizar uma demanda...
Obrigado!
Paulo
Original comment by paulo3...@gmail.com
on 25 Apr 2012 at 10:56
Nunca tentei com BR Office . Vc pode mandar seu template por email?
eu posso dar mais uma olhada. Todos os meus examples sao baseados no MS office
rodando em Mac.
Manda tb um segundo documento salvo como XML 2003 em branco. Vou ver se o doc
em branco consegue ser aberto e entao eu vou para o tmeplate real.
Br Office foi descontinuado cara! mas se e isso que voce esta usando eu posso
tentar resolver o problema.
Nao da para garantir nada mas eu pelo menos vou tentar.
Abs
Original comment by leonardo...@gmail.com
on 26 Apr 2012 at 12:12
Po.. não sabia q o BrOffice foi descontinuado.. :D
É pq no desktop aqui da empresa só tem Broffice... Mas daí baixei o
OpenOffice 3.3 e gerei 2 templates...
E muito obrigado pela resposta!
Abs...
Original comment by paulo3...@gmail.com
on 27 Apr 2012 at 4:36
Attachments:
vlw, vou dar uma olhada qdo eu chegar em casa mais tarde. Ads
Original comment by leonardo...@gmail.com
on 30 Apr 2012 at 12:11
dentro de "w:t" vc so pode ter texto:
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.te
xt.aspx
Ja se voce por o conteudo dentro de um "w:r", este pode receber varios outros
elementos:
http://msdn.microsoft.com/en-us/library/documentformat.openxml.wordprocessing.ru
n.aspx (embaixo de "Remarks")
Ah mais uma coisa: Os "w:p" nao podem ter nada a nao ser: <w:p> e </w:p>
Qdo vc substituir o ph, substitui o <w:t> antes e depois o placeholder. Ex.:
xmlTemplate = replacePh(xmlTemplate, "<w:t>phTabela</w:t>",
tbl.getContent().replace("<w:p*********>", "<w:p>") );
Tenta evitar < e > no nome do placeholder pq eles seram ecaped no XML e o
replacement will not find them.
voce vai ter que escrever o regex para remover tudo dentro da tag <w:p xxx> e
deixar-lo <w:p> vlw: replace( "wsp:rsidR=\"008979E8\"
wsp:rsidRDefault=\"00000000\">, "<w:p>"
outra opcao e voce ir na marra na classe Paragraph linha 53 e temporariamente
mudar o codigo fonte. Paragraph e usado dentro da tabela.
Esse problema e so com open office e libre.
sei que e muita coisa mas isso vai te dar um entendimento do java2word leval.
fiz uns testes aqui e consegui ter um template abrindo a tabela perfeitamente:
@Test
public void test93() {
IDocument myDoc = new Document2004();
String xmlTemplate = Utils.readFile("/home/leonardo/Desktop/template.doc");
TableV2 tbl = new TableV2();
tbl.addRow(TableRow.with("Simple String cell", "Another String simple cell"));
xmlTemplate = replacePh(xmlTemplate, "<w:t><phTabela></w:t>", tbl.getContent());
System.out.println(xmlTemplate.trim());
TestUtils.createLocalDoc(xmlTemplate.trim());
}
Lembre-se: o codigo acima funcionou pq eu alterei a classe Paragrahp na marra.
Se vc usar um regex para remover all that crap will work as well.
Vou ver depois o que tem que ser feito para resolver esse problema
definitivamente.
abraco
Leonardo Correa
Original comment by leonardo...@gmail.com
on 30 Apr 2012 at 9:57
Tô aprendendo muito com essa API e está resolvendo alguns problemas aqui no
trabalho! Vou implantar essa solução q vc falou...
Muito obrigado!
Abs,
Paulo
Original comment by paulo3...@gmail.com
on 2 May 2012 at 2:04
nao e perfeito mas se vc fizer o que te falei vai funcionar. To sem tempo para
implementar a solucao cara. abs
Original comment by leonardo...@gmail.com
on 2 May 2012 at 2:14
Original issue reported on code.google.com by
paulo3...@gmail.com
on 23 Apr 2012 at 5:48Attachments: