01 julho 2010

Escrever para um documento Word a partir do código

Um projecto requereu que a alteração de algumas partes de um documento Word automaticamente.

A pesquisa da solução foi um pouco demorada, já que se encontra muita coisa, mas muita não é de fácil adaptação ou compreensão.

Encontrei um exemplo, que funcionou quase directo. O projecto encontra-se numa versão anterior ao VS2008, mas não é necessário fazer a conversão, basta abrir o "Form1.cs".

Da minha parte, tive de adicionar a referência para o Word mais recente: “Microsoft Word 12.0 Object Library” (Add reference, tab COM).

Alterei ainda para o nome do ficheiro criado ser dinâmico. Acrescentei também código para no final de o ficheiro ser processado, aparecer a caixa de download.

No entanto, existem limitações. Passa desde logo pela necessidade de existir o Office no servidor. Mas por agora, fica assim.

A página na fonte pede para se fazer o registo, para ter o código do projecto.

Fonte:
techrepublic

6 comentários:

Anónimo disse...

Como fizeste isso?

Preciso de fazer isso num projecto, mas não encontro nenhum tutorial bom. Poderias-me ajudar?

To disse...

Se reparares, deixei a fonte. A página ainda existe, e encontras lá o código que utilizei. Funcionou bem logo à primeira.

Uma adaptação que tens de fazer (que eu nao fiz) é em vez de usares nomes fixos para os documentos, estes têm de ser dinâmicos. Por exemplo, a dependerem do nome do utilizador e de algum contador, para que os utilizadores não apaguem os documentos uns dos outros.

De qualquer forma, não é a melhor maneira. Tens de pesquisar por open xml e tentar ver o que encontras. Se tiveres opção, tenta tratar do documento word no teu lado e transforma-o em pdf quando entregares ao utilizador.

Existem também soluções em colocares campos do teu ficheiro word a irem ler alguma coisa em base de dados, mas vi pouco disso.

Outro problema dificil de resolver (que tambem nunca me dei ao trabalho de desmistificar) é que a instancia de excel ou word permanece em memória. Tens de descobrir maneira de a mandar abaixo depois de criares o documento.

Resumindo: a solução é openxml; utilizar o que encontras neste link http://epplus.codeplex.com/releases/view/42439 para trabalhares melhor com o openxml; partires um bocado a cabeça, que eu meti-me muito pouco neste assunto.

Cumprimentos!

Anónimo disse...

O epplus destina-se a excel..eu precisava para word...

Obrigado na mesma

To disse...

Que desatenção a minha... :(

Para Word, não mexi noutras soluções. Cumprimentos.

Anónimo disse...

Caro Tó

O nome do blog está incorrecto.
Deveria ser problemaPorResolver.blogspot.com

No entanto, obrigado na mesma.

To disse...

Isso agora foi como uma facada no coração.