Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

groff

Criando documento Word através do PHP

Recommended Posts

Fala pessoal,

Primeira vez que estou postando aqui.

To tentando fazer um sistema que gere para mim um documento word só que esse documento tem alguns detalhes que preciso seguir. Um deles é um cabeçalho fixo e rodapé em todas as páginas.

Pesquisei em vários lugares sobre e já consegui chegar em algum lugar.

Sei que para isso precisso utilizar a classe 'COM', porém não achei muita informação sobre como utilizar ela exatamente.

 

Consegui fazer gerar o documento, porém estou tendo dificuldade com como gerar o conteúdo.

Aqui vai o pouco do que eu consegui.

O que vocês puderem me ajudar eu agradeço.

<?php
$local			= getcwd();
$local			= $local.'\\\\';
//======================================================================================
// INSTANCIANDO O OBJETO 'COM'.
//======================================================================================
$word = new COM("Word.Application") or die("Cannot start MS Word"); 
print "Loaded Word version ($word->Version)";
//VER MONTANDO O ARQUIVO.doc
$word->visible = false; 
//======================================================================================
// COPIANDO O ARQUIVO PARA A O DIRETORIO C:/
//======================================================================================
$timestamp 		= date("dmYHis",time());
//ARQUIVO TEMPORARIO
$temp			= 'EvidenciaTemp_'.$timestamp.'.doc';
if(copy($local."ModeloEvidencia.doc", $local.$temp)){
	//echo "Arquivo Copiado";
}else{
	echo "erro ao copiar arquivo";
}
//======================================================================================
// ABRINDO O ARQUIVO TEMP.
//======================================================================================
$word->Documents->Open($local.$temp);
//======================================================================================
//  PRIMEIRA PAGINA
//======================================================================================
$destino = 'C:\xampp\htdocs\geradorWord';
$imagem	= 'C:\xampp\htdocs\geradorWord\logoportoseguro.png';
$word->Selection->ParagraphFormat->Alignment = 0;
$word->ActiveDocument->Tables->Add($word->Selection->Range, 1, 3, 1, 2);
$word->Selection->InlineShapes->AddPicture("$imagem");
$word->Selection->MoveDown();

$word->Selection->ParagraphFormat->Alignment = 0;
$word->ActiveDocument->Tables->Add($word->Selection->Range, 1, 5, 1, 1);
$destino = 'C:\xampp\htdocs\geradorWord';
$arqSaida = 'GeradorDeDocumento';
$saida = $local.$arqSaida.'.doc';
$word->ActiveDocument->SaveAs($saida);
//LIBERA DOCUMENTO
$word->Application->Quit();
//AGUARDAR 2 SEGUNDOS PARA DELETAR O ARQUIVO TEMPORARIO
sleep(2);
//DELETA ARQUIVO TEMPORARIO
@unlink($local.$temp);
if(copy($saida, $destino.$arqSaida.'.doc')){
	echo'<center><div class="sucesso">Arquivo gerado no Diretório:<br>
									'.$destino.'<br>
									<a href="javascript:history.go(-1)">Voltar</a></div>';
}else{
	echo "erro ao copiar arquivo";
}
//AGUARDAR 2 SEGUNDOS PARA DELETAR O ARQUIVO TEMPORARIO
sleep(2);
//Deletando o arquivo na pasta do servidor
@unlink($saida);
?>

 

Gostaria se alguem pudesse me enviar ou disponibilizar no fórum alguma documentação, tutorial, algo assim para que eu possa aprender mais sobre.

 

Eu agradeço desde já.

 

Abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

No php.net tem tudo sobre essa classe!

 

Um "Overall" da classe -> http://php.net/manual/en/class.com.php

 

Métodos da classe -> http://www.php.net/manual/en/function.com-release.php

 

 

Boa sorte ai!

 

Antes, me diga uma coisa, que conteúdo é esse? Explique melhor, que talvez eu possa te ajudar!

 

Abrss!

 

Valeu falcao544,

Vou dar uma olhada nesses links que você me mandou :)

 

Então, o que eu to precisando é o seguinte

 

O sistema possui alguns campos de input's tipo text para receber informações e dois campos input's do tipo file para receber o caminho de duas imagens (sendo o primeiro a imagem inicial e o segundo a imagem final, ou seja, se a primeira imagem for a imagem 1 e a segunda imagem for a imagem 10, ele vai buscar as imagens da 1 até a 10 para anexar). Cada vez que é preenchido e clicado no botão "Adicionar", as informações são armazenadas no banco de dados.

 

Após o usuário finalizar as inserções das imagens e informações, ele irá clicar no botão "Gerar Documento" e ai que entra o que eu estou fazendo agora.

 

Existe já uma modelo padrão que eu tenho de informações que irão ser fixas e informações que serão adicionadas de acordo com as informações cadastradas no banco de dados.

 

No padrão do documento eu tenho que ter no cabeçalho uma tabela com 2 linhas e 5 colunas com algumas informações. (Ai começa a minha luta)

 

Eu tenho que mesclar as colunas 2,3 e 4 da linha 1 e na linha 2 tem que ficar com as 5 colunas normalmente.

No word até sei fazer isso, mas através do php não sei.

 

Enfim, são muitos detalhes que ainda estou para ver, por isso pedi alguma documentação.

 

Se puder me ajudar a resolver esse problema fico muito grato falcao.

 

Abraço e obrigado mais uma vez.

 

Esqueci de falar...

O código que coloquei ele já gera um documento Word para mim com algumas coisas.

Por exemplo

 

Aqui eu crio o documento word

$word = new COM("Word.Application") or die("Cannot start MS Word"); 

 

Aqui estou gerando o cabeçalho no qual eu falei

A primeira linha gero a tabela com 1 linha e 3 colunas (já estou tentando de uma maneira diferente, mas não sei se vai dar certo ainda)

Na segunda coloca uma imagem na tabela (por default ele ta colocando na primeira coluna)

Na terceira linha é como se eu movesse o cursor no word para baixo (apertasse a seta do teclado para baixo, não o Enter)

$word->ActiveDocument->Tables->Add($word->Selection->Range, 1, 3, 1, 2);
$word->Selection->InlineShapes->AddPicture("$imagem");
$word->Selection->MoveDown();

 

Ai logo abaixo ja crio outra tabela com 1 linha e 5 colunas para tentar essa minha "idéia" de criar o cabeçalho do jeito que quero.

$word->ActiveDocument->Tables->Add($word->Selection->Range, 1, 5, 1, 1);

 

Ai mais abaixo eu salvo o documento e deleto o rascunho.

 

Basicamente é isso que ta sendo feito ali.

 

Alguém sabe algum tutorial, apostila, algo assim além dos que o falcao544 passou?

 

Estou tendo problema para manipular o documento word pelo PHP.

No momento quero colocar a linha 1 de uma tabela com uma cor de fundo, porém essa linha possui 4 colunas.

Para 1 linha com 1 coluna eu usei o comando abaixo e funcionou.

$word->Selection->Shading->BackgroundPatternColor = 12611584

 

Porém para 1 linha e mais de 1 coluna não está dando certo.

 

Agradeço a ajuda desde já e fico no aguardo.

 

:)

 

Ninguém sabe?

:upset:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.