Como gerar documentos no word. Exwog - gerador de relatórios do Excel para o Word por modelo

Vivemos em um mundo onde os desenvolvedores PHP precisam interagir com o sistema operacional Windows de tempos em tempos. WMI (Windows Management Interface, Windows Management Interface) - um exemplo é a interação com o Microsoft Office.

Neste artigo, veremos uma integração simples entre Word e PHP: gerar um documento do Microsoft Word com base em campos de entrada em um formulário HTML usando PHP (e sua extensão Interop).

Etapas Preparatórias

Antes de tudo, vamos nos certificar de que temos um ambiente WAMP básico configurado. Como o Interop está presente apenas no Windows, precisamos que nosso servidor Apache e a instalação do PHP sejam implantados em uma máquina Windows. Como tal, estou usando o EasyPHP 14.1, que é extremamente fácil de instalar e configurar.

O próximo passo é instalar o Microsoft Office. A versão não é muito importante. Estou usando o Microsoft Office 2013 Pro, mas qualquer versão do Office anterior a 2007 deve funcionar.

Também precisamos ter certeza de que instalamos bibliotecas para desenvolver o aplicativo de interoperabilidade (PIA, assemblies de interoperabilidade primários, assemblies de interoperabilidade primários). Você pode descobrir isso abrindo o Windows Explorer e indo para o diretório \assembly , e lá devemos ver um conjunto de assemblies instalados:

Aqui você pode ver o elemento Microsoft.Office.Interop.Word (sublinhado na captura de tela). Esta será a compilação que usaremos em nossa demonstração. Preste atenção especial aos campos "Nome do assembly", "Versão" e "Token de chave pública". Vamos usá-los em breve em nosso script PHP.

Este diretório também contém outros assemblies (incluindo toda a família Office) disponíveis para uso em seus programas (não apenas para PHP, mas também para VB.net, C#, etc.).

Se a lista de assemblies não incluir todo o pacote Microsoft.Office.Interop, precisamos reinstalar o Office adicionando o PIA ou baixar manualmente o pacote do site da Microsoft e instalá-lo. Consulte esta página do MSDN para obter instruções mais detalhadas.

Comente Observação: apenas a distribuição do Microsoft Office 2010 PIA está disponível para download e instalação. A versão do assembly neste pacote é 14.0.0 e a versão 15 vem apenas com o Office 2013.

Finalmente, você precisa habilitar a extensão php_com_dotnet.dll em php.ini e reiniciar o servidor.

Agora podemos passar para a programação.

formulário HTML

Como a parte principal deste exemplo está no lado do servidor, criaremos uma página simples com um formulário parecido com este:

Temos um campo de texto para o nome, um grupo de botões de rádio para o sexo, um controle deslizante para a idade e uma área de entrada de texto para inserir uma mensagem, além do infame botão “Enviar”.

Salve este arquivo como "index.html" no diretório do host virtual para que possa ser acessado em uma URL como http://test/test/interop .

Parte do servidor

O arquivo manipulador no lado do servidor é o objetivo principal de nossa conversa. Primeiro, darei o código completo para este arquivo e, em seguida, explicarei passo a passo.

visível = verdadeiro; $fn = __DIR__ . "\\modelo.docx"; $d = $w->Documentos->Abrir($fn); echo "O documento está aberto.


"; $flds = $d->Campos; $count = $flds->Count; echo "O documento tem $count campos.
"; eco "
    "; $mapping = setupfields(); foreach ($flds as $index => $f) ( $f->Select(); $key = $mapping[$index]; $value = $inputs[$key]; if ($chave == "gênero") ( if ($valor == "(!LANG:m") $value = "Senhor."; else $value = "Em."; } if($key=="printdate") $value= date ("Y-m-d H:i:s"); $w->Selection->TypeText($value); echo "!}
  • Atribuindo $index: $key para $value
  • "; ) eco "
"; echo "Processamento concluído!

"; echo "Imprimindo, aguarde...
"; $d->PrintOut(); sleep(3); echo "Done!"; $w->Quit(false); $w=null; function setupfields() ( $mapping = array(); $mapping = "gender"; $mapeamento = "nome"; $mapping = "idade"; $mapping = "msg"; $mapping = "printdate"; return $mapping; )

Depois de escrevermos os valores recebidos do formulário para a variável $inputs, e também criarmos um elemento vazio com a chave printdate (por que fizemos isso - discutiremos mais adiante), passamos para quatro linhas muito importantes:

$assembly = "Microsoft.Office.Interop.Word, Versão=15.0.0.0, Cultura=neutro, PublicKeyToken=71e9bce111e9429c"; $class = "Microsoft.Office.Interop.Word.ApplicationClass"; $w = new DOTNET($montagem, $classe); $w->visível = verdadeiro;

O manipulador COM do PHP requer que a classe seja instanciada dentro do "assembly". No nosso caso, estamos trabalhando com Word. Se você observar a primeira captura de tela, poderá anotar a assinatura completa do assembly para o Word:

  • “Nome”, “Versão”, “Token de Chave Pública” são todos obtidos de informações que podem ser visualizadas em “c:\Windows\assembly“ .
  • “Cultura” é sempre neutra

A classe à qual queremos nos referir é sempre chamada de “nome do assembly” + “.ApplicationClass “.

Ao definir esses dois parâmetros, podemos obter um objeto para trabalhar com o Word.

Esse objeto pode permanecer em segundo plano ou podemos colocá-lo em produção definindo o atributo visible como true .

O próximo passo é abrir o documento a ser processado e escrever uma instância do “documento” na variável $d .

Há várias maneiras de criar conteúdo baseado em formulário em um documento.

A pior coisa a fazer seria codificar o conteúdo do documento em PHP e depois enviá-lo para um documento do Word. Eu recomendo fortemente não fazer isso pelos seguintes motivos:

  1. Você perde flexibilidade. Quaisquer alterações no arquivo de saída exigirão alterações no código PHP.
  2. Isso quebra a separação de controle e visão
  3. A aplicação de estilos ao conteúdo do documento (alinhamento, fontes, estilos, etc.) em um script aumentará muito o número de linhas de código. Alterar estilos programaticamente é muito complicado.

Outra opção seria usar localizar e substituir. O PHP tem boas ferramentas embutidas para isso. Podemos criar um documento do Word no qual colocamos rótulos com separadores especiais, que serão substituídos posteriormente. Por exemplo, podemos criar um documento que conterá o seguinte trecho:

e com a ajuda do PHP, podemos substituí-lo facilmente pelo conteúdo do campo “Nome” recebido do formulário.

Isso é simples e nos salva de todas as consequências desagradáveis ​​que enfrentamos no primeiro método. Só precisamos decidir sobre o delimitador correto, nesse caso acabamos usando um template.

Eu recomendo o terceiro método, e é baseado em um conhecimento mais profundo da Palavra. Usaremos campos como placeholders, e usando código PHP atualizaremos diretamente os valores nos campos com os valores correspondentes.

Essa abordagem é flexível, rápida e consistente com as práticas recomendadas do Word. Com ele, você também pode evitar a pesquisa de texto completo no documento, o que tem um bom efeito no desempenho. Observe que esta solução também tem desvantagens.

O Word não deu suporte a índices nomeados para campos desde o início. Mesmo que tenhamos especificado nomes para os campos criados, ainda precisamos usar os identificadores numéricos desses campos. Isso também explica por que precisamos usar uma função separada (setupfields) para corresponder ao índice do campo e ao nome do campo do formulário.

Nesta demonstração, usaremos um documento com 5 campos MERGEFIELD. Colocaremos o documento de modelo no mesmo local que nosso manipulador de script.

Observe que o campo printdate não possui um campo correspondente no formulário. É por isso que adicionamos um elemento printdate vazio ao array $inputs. Sem isso, o script ainda será executado e executado, mas o PHP emitirá um aviso de que o índice printdate está faltando no array $inputs.

Após substituir os campos por novos valores, imprimimos o documento com

$d->Imprimir();

O método PrintOut recebe alguns parâmetros opcionais e usamos a forma mais simples dele. Isso imprimirá uma cópia do documento na impressora padrão conectada à máquina Windows.

Você também pode chamar PrintPreview para ver o resultado antes de imprimi-lo. Em um ambiente totalmente automático, é claro que usaremos o método PrintOut.

Você deve esperar um pouco antes de sair do aplicativo Word, pois leva tempo para que o trabalho de impressão seja enfileirado. Sem atraso(3), o método $w->Quit é executado imediatamente e o trabalho não é enfileirado.

Por fim, chamamos $w->Quit(false) , que fecha o aplicativo Word que foi chamado pelo nosso script. O único parâmetro passado para o método é salvar o arquivo antes de sair. Fizemos edições no documento, mas não queremos salvá-las porque precisamos de um modelo limpo para trabalho posterior.

Depois que terminarmos com o código, podemos carregar nossa página de formulário, preencher alguns valores e enviá-lo. As imagens abaixo mostram a saída do script, bem como o documento Word atualizado:

Velocidade de processamento aprimorada e um pouco mais sobre o PIA

PHP é uma linguagem de tipagem flexível. Um objeto COM do tipo Object . Ao escrever o script, não temos como obter a descrição do objeto, seja um aplicativo Word, um documento ou um campo. Não sabemos quais propriedades esse objeto possui ou quais métodos ele suporta.

Isso diminuirá bastante a velocidade de desenvolvimento. Para acelerar o desenvolvimento, eu recomendaria escrever funções primeiro em C# e depois traduzir o código para PHP. Posso recomendar um IDE gratuito para desenvolvimento em C# chamado “#develop”. Você pode encontrá-la. Eu prefiro o Visual Studio porque o #develop é menor, mais fácil e mais rápido.

Migrar código C# para PHP não é tão assustador quanto parece. Deixe-me mostrar algumas linhas em C#:

Word.Application w=new Word.Application(); w.Visível=verdadeiro; String path=Application.StartupPath+"\\template.docx"; Word.Document d=w.Documents.Open(path) como Word.Document; Word.Fields flds=d.Fields; intlen=flds.Count; foreach (Word.Field f in flds) ( f.Select(); int i=f.Index; w.Selection.TypeText("..."); )

Você pode ver que o código C# é muito semelhante ao código PHP que mostrei anteriormente. C# é uma linguagem fortemente tipada, portanto, neste exemplo, você pode ver vários operadores de conversão e também precisa especificar um tipo para variáveis.

Ao especificar o tipo de variável, você pode desfrutar de um código mais claro e auto-completar, e a velocidade de desenvolvimento é muito maior.

Outra maneira de acelerar o desenvolvimento do PHP é chamar uma macro no Word. Realizamos a mesma sequência de ações e depois a salvamos como uma macro. A macro é escrita em Visual Basic, que também é fácil de traduzir para PHP.

E, mais importante, a documentação do Office PIA da Microsoft, especialmente a documentação do namespace de cada aplicativo do Office, é a referência mais detalhada. Os três aplicativos mais usados ​​são:

  • Excel 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel(v=office.15).aspx
  • Word 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word(v=office.15).aspx
  • PowerPoint 2013: http://msdn.microsoft.com/en-us/library/microsoft.office.interop.powerpoint(v=office.15).aspx

Conclusão

Neste artigo, mostramos como preencher um documento do Word com dados usando as bibliotecas PHP COM e a interoperabilidade do Microsoft Office.

Windows e Office são amplamente utilizados na vida diária. Conhecer o poder do Office/Window e do PHP será útil para todos os desenvolvedores de PHP e Windows.

A extensão PHP COM abre a porta para você usar essa combinação.

Continuamos o tema de trabalhar com formulários no Word que começamos anteriormente. Nos artigos anteriores, analisamos apenas os formulários de uma perspectiva de “usuário avançado”, ou seja, criamos documentos convenientes para preenchimento manual. Hoje, quero propor expandir essa tarefa e tentar usar o mecanismo de controles de conteúdo para gerar documentos.

Antes de começarmos a nossa tarefa imediata, quero dizer algumas palavras sobre como os dados para controles de conteúdo são armazenados em documentos do Word (omitirei deliberadamente como eles estão vinculados ao conteúdo do documento por enquanto, mas espero retornar para isso em algum momento nos próximos artigos).

A questão legítima é o que é itemProps1.xml e componentes semelhantes? Esses componentes armazenam descrições de fontes de dados. Muito provavelmente, como concebido pelos desenvolvedores, além dos arquivos xml embutidos no documento, deveria usar outros, mas até agora apenas esse método foi implementado.

O que é útil para nós itemPropsX.xml? O fato de eles listarem esquemas xml (suas targetNamespace) que são usados ​​no pai itemX.xml. Isso significa que, se incluímos mais de um xml personalizado no documento, para encontrar o correto, precisamos percorrer itemPropsX.xml componentes e encontrar o circuito desejado e, portanto, o itemX.xml.

Agora mais um momento. Não analisaremos manualmente os relacionamentos entre os componentes e procuraremos os corretos usando apenas a API de embalagem básica! Em vez disso, usaremos o Open XML SDK (suas compilações estão disponíveis via NuGet). Claro, não dissemos uma palavra sobre essa API anteriormente, mas para nossa tarefa ela requer um mínimo e todo o código será bastante transparente.

Bem, a introdução principal está feita, você pode prosseguir para o exemplo.

De acordo com a tradição estabelecida, levaremos o mesmo “Relatório da Reunião” que desenhamos no artigo. Deixe-me lembrá-lo de que era assim que o modelo de documento se parecia:

E assim, o XML ao qual os campos do documento foram vinculados

< meetingNotes xmlns ="urn:MeetingNotes" subject ="" date ="" secretary ="" > < participants > < participant name ="" /> < decisions > < decision problem ="" solution ="" responsible ="" controlDate ="" />

Etapa 1. Criar um modelo de dados

Na verdade, nossa tarefa não é apenas gerar um documento, mas criar (pelo menos em uma versão de rascunho) uma ferramenta conveniente para uso tanto do desenvolvedor quanto do usuário.

Portanto, vamos declarar o modelo como uma estrutura de classes C#:

Classe pública MeetingNotes ( public MeetingNotes() ( Participantes = new List (); Decisões = nova lista (); ) public string Subject ( get; set; ) public DateTime Date ( get; set; ) public string Secretary ( get; set; ) public List Participantes ( get; set; ) lista pública Decisões ( get; set; ) ) public class Decisão ( public string Problema ( get; set; ) public string Solução ( get; set; ) public string Responsável ( get; set; ) public DateTime ControlDate ( get; set; ) ) public class Participant ( public string Name ( get; set; ) )

Em geral, nada de especial, exceto que os atributos foram adicionados para controlar a serialização de XML (porque os nomes no modelo e o XML necessário são ligeiramente diferentes).

Etapa 2: serializar o modelo acima para XML

A tarefa é, em princípio, trivial. O que é chamado de “pegue nosso XmlSerializer favorito e vá”, se não for um mas

Infelizmente, na versão atual do Office, aparentemente, há um bug, que é o seguinte: se em xml personalizado frente declarando o namespace principal (aquele do qual o Word deve receber os elementos para exibição), declare mais alguns, então os controles de conteúdo repetidos começam a ser exibidos incorretamente (apenas tantos elementos são mostrados quanto havia no próprio modelo - ou seja, a seção de repetição não trabalho).

Aqueles. Aqui está o xml que funciona:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

e este também:

< test xmlns ="urn:Test" attr1 ="1" attr2 ="2" xmlns:t ="urn:TTT" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

e este sumiu:

< test xmlns:t ="urn:TTT" xmlns ="urn:Test" attr1 ="1" attr2 ="2" > < repeatedTag attr ="1" /> < repeatedTag attr ="2" /> < repeatedTag attr ="3" />

Tentei enviar um bug para o suporte da Microsoft no Connect, mas por algum motivo me foi negado o acesso para enviar bugs via Office. Uma discussão no fórum do MSDN também não ajudou.

Em geral, a manobra de desvio necessária. Se formássemos o XML manualmente, não haveria problemas - faríamos tudo sozinhos. No entanto, neste caso, eu realmente quero usar o XmlSerializer padrão, que por padrão adiciona vários de seus namespaces ao XML de saída, mesmo que esses namespaces não sejam usados.

Faremos uma supressão completa da saída de nossos próprios namespaces no XmlSerializer. É verdade que essa abordagem funcionará apenas se ele realmente não precisar deles (caso contrário, eles ainda serão adicionados e apenas ANTES dos nossos).

Na verdade, todo o código (desde que a variável notas da reunião contém um objeto previamente preenchido do tipo MeetingNotes):

var serializer = new XmlSerializer(typeof (MeetingNotes));
var serializedDataStream = new MemoryStream();

var namespaces = new XmlSerializerNamespaces();
namespaces.Add(“” , “” );

serializer.Serialize(serializedDataStream, meetingNotes, namespaces);
serializedDataStream.Seek(0, SeekOrigin.Begin);

Etapa 3. Inserimos o XML resultante em um documento do Word.

Aqui fazemos o seguinte:

  • copie o modelo e abra a cópia
  • encontre o xml personalizado desejado nele (pesquise por namespace “urn:Notas da Reunião”)
  • substituímos o conteúdo do componente pelo nosso XML

File.Copy(templateName, resultDocumentName, true); using (var document = WordprocessingDocument.Open(resultDocumentName, true )) ( var xmlpart = document.MainDocumentPart.CustomXmlParts .Single(xmlPart => xmlPart.CustomXmlPropertiesPart.DataStoreItem.SchemaReferences.OfType () .Any(sr => sr.Uri.Value == "(!LANG:urn:MeetingNotes"!}

Nos artigos anteriores da série "Automatizando o preenchimento de documentos", falei sobre como criar a interface de usuário de um aplicativo, organizar a validação de entrada e obter um número em palavras sem usar código VBA. Neste artigo final, falaremos sobre mágica - transferir todos os valores necessários de uma pasta de trabalho do Excel para um documento do Word. Deixe-me mostrar o resultado final:

Descrição do mecanismo

Para começar, descreverei em termos gerais exatamente como os dados serão transferidos para um documento do Word. Em primeiro lugar, precisamos de um modelo de documento do Word contendo todas as marcações, tabelas e a parte do texto que permanecerá inalterada. Neste modelo, você precisa definir os locais onde os valores da pasta de trabalho do Excel serão substituídos - a maneira mais conveniente de fazer isso é com a ajuda de marcadores. Depois disso, você precisa organizar os dados do Excel de forma a corresponder ao modelo do Word e, por último, mas não menos importante, escrever o próprio procedimento de transferência no VBA.

Então, as primeiras coisas primeiro.

Criar um modelo de documento do Word

Tudo é extremamente simples aqui - criamos um documento regular, digitamos e formatamos o texto, em geral, conseguimos obter a forma necessária. Nos locais em que será necessário substituir valores do Excel, você precisará criar marcadores. Isso é feito da seguinte maneira:

Assim, você precisará criar todos os bookmarks, ou seja, marcar todos os locais onde os dados do Excel serão inseridos. O arquivo resultante deve ser salvo como um "MS Word Template" usando o item de menu "Arquivo" -> "Salvar como...".

Preparação de dados do Excel

Por conveniência, decidi colocar todos os dados que precisam ser transferidos para o documento do Word em uma planilha separada chamada Marcadores - marcadores. Esta planilha possui duas colunas: a primeira contém os nomes dos marcadores (exatamente como são nomeados no documento do Word), e a segunda contém os valores correspondentes a serem transferidos.

Alguns desses valores são obtidos diretamente da planilha de entrada de dados, e alguns são de tabelas auxiliares localizadas na planilha de Suporte. Neste artigo, não analisarei as fórmulas que calculam os valores desejados, se algo não estiver claro, faça perguntas nos comentários.

Nesta fase, é importante especificar corretamente todos os nomes dos marcadores - a exatidão da transferência de dados depende disso.

Procedimento de transferência

Mas este é o mais interessante. Existem duas opções para executar o código de migração de dados:

  • O código é executado em uma pasta de trabalho do Excel, os dados são passados ​​para o Word um valor por vez e são colocados imediatamente no documento.
  • O código é executado em um documento Word separado, todos os dados são transferidos do Excel em um lote.

Do ponto de vista da velocidade de execução, especialmente com um grande número de marcadores, a segunda opção parece muito mais atraente, mas requer ações mais complexas. Essa é a que eu usei.

Aqui está o que precisa ser feito:

  • Crie um modelo de documento do Word habilitado para macro. Este modelo conterá o código VBA executável.
  • No template criado, você precisa colocar um programa escrito em VBA. Para fazer isso, ao editar um modelo, pressione a combinação de teclas Alt + F11 e insira o código do programa na janela do editor Visual Basic que se abre.
  • Em uma pasta de trabalho do Excel, escreva o código que chama o procedimento de preenchimento do modelo do Word recém-criado.

Não fornecerei o texto do procedimento no artigo - ele pode ser facilmente visualizado no arquivo FillDocument.dotm localizado na pasta Modelo no arquivo de exemplo.

Como você pode usar tudo isso para resolver seu problema específico?

Eu entendo que em palavras tudo parece muito simples, mas o que acontece na prática? Eu sugiro que você apenas use a opção pronta. Baixe o arquivo com o exemplo, em uma pasta de trabalho do Excel, pressione a combinação de teclas Alt + F11 para abrir o editor do Visual Basic e ler todos os meus comentários sobre o programa. Para alterar o programa para atender às suas necessidades, você só precisa alterar o valor de algumas constantes, elas são colocadas no início do programa. Você pode copiar livremente todo o texto do programa em seu projeto.

Estrutura do arquivo

O arquivo anexado a este artigo contém vários arquivos.

O arquivo principal é uma pasta de trabalho do Excel chamada "Gerar confirmações". Existem 4 planilhas nesta pasta de trabalho, das quais apenas duas são exibidas: "Entrada" - uma folha de entrada de dados e "Banco de dados" - um arquivo de todos os documentos inseridos.

A pasta Modelos contém modelos de documentos do Word. Um deles é um modelo contendo um programa de preenchimento de favoritos e o segundo é um formulário para preenchimento. Você pode usar o modelo com o programa sem alterações, mas o formulário a preencher, é claro, terá que ser alterado de acordo com suas necessidades.

Como refazer o exemplo "para você mesmo"?

  1. Prepare um modelo de documento do Word a ser preenchido. Crie todos os marcadores necessários e salve-o como um "modelo do MS Word".
  2. Copie o arquivo FillDocument.dotm do arquivo anexado a este artigo para a pasta com o modelo preparado. Este arquivo é responsável por preencher os marcadores do template, e nada precisa ser alterado nele.
  3. Prepare uma pasta de trabalho do Excel para entrada de dados. Cabe a você decidir se ele terá alguma interface de usuário "avançada" e realizar vários cálculos complicados. O principal é que ele contém uma planilha com uma tabela de correspondência entre o nome do marcador no modelo do Word e o valor a ser substituído.
  4. Insira o código do programa VBA do arquivo de exemplo na pasta de trabalho preparada. Substitua todas as constantes de acordo com seu projeto.
  5. Teste para operação correta.
  6. Aproveite ativamente!

UMA, sobrenomes na coluna B e profissões na coluna C.

2. Crie um documento do Word (.doc ou .docx)


(UMA), (B) e (C).

(UMA), (B) e (C) (UMA)- nome, (B)- sobrenome, (C)- profissão.

Configurações programas.

3. Escolha caminhos para arquivos e pastas


Selecionar

4. Defina as planilhas e linhas dos dados desejados


Folhas de dados do arquivo Excel

Linhas de dados do arquivo Excel Folhas de dados do arquivo Excel

1 .

Se você deseja que todas as planilhas e/ou linhas do seu arquivo excel com dados participem da formação do documento, clique no botão apropriado à direita com a inscrição números(sua inscrição mudará para Tudo).

5. Defina o modelo de nome para novos arquivos de palavras


Defina o modelo de nome para novos arquivos do Word:

Novo modelo de nomes de arquivos de palavrasé um modelo para os nomes de novos documentos (arquivos de palavras) gerados pelo programa. Aqui, o modelo de nome contém os nomes das colunas do arquivo excel, enquadrados por chaves: (UMA) e (B). Ao gerar um novo documento, o programa substituirá todos os (UMA) e (B) os valores de célula correspondentes do arquivo excel - este será o nome do novo documento (arquivo word).

Você pode definir seus próprios caracteres de borda na guia Configurações programas.

6. Clique em "Gerar"


Clique no botão Gerar e o progresso aparecerá na tela. Documentos (word-files) serão criados exatamente quantas linhas do arquivo excel estiverem envolvidas na formação.

7. Tudo


Todos os documentos (word-files) foram criados e estão localizados na pasta especificada em Pasta para salvar os novos arquivos do Word. Tudo:)

Exwog- gerador de relatório de modelo do excel para o word

Gerador de arquivos do Word gratuito por modelo (arquivo do Word) com base nos dados do arquivo do Excel

Funciona em Mac OS, Windows e Linux

Permite definir os nomes dos novos arquivos de palavras gerados

Permite definir planilhas e linhas dos dados necessários

Permite definir caracteres de borda para nomes de colunas do Excel

Fácil de usar

Armazene seus dados em formato Excel (.xls e .xlsx) e gere arquivos Word (.doc e .docx) em poucos cliques :)


Como funciona?

Dê uma olhada no seu arquivo excel


Neste exemplo, o arquivo excel contém informações sobre clientes. Cada linha corresponde a um cliente específico. Os nomes estão em uma coluna UMA, sobrenomes na coluna B e profissões na coluna C.

Clique para ver

Criar um documento do Word (.doc ou .docx)


Clique para ver

Crie um "modelo" (arquivo de palavras) para gerar novos documentos (arquivos de palavras). Aqui o texto do "template" contém os nomes das colunas do arquivo excel, enquadrados por chaves: (UMA), (B) e (C).

O programa irá gerar novos documentos de acordo com o "template" substituindo todos os (UMA), (B) e (C) valores de células correspondentes do arquivo excel: (UMA)- nome, (B)- sobrenome, (C)- profissão.

Você também pode definir seus próprios caracteres de borda na guia Configurações programas.

Escolha caminhos para arquivos e pastas


Selecione caminhos para arquivos e pastas (botões rotulados Selecionar). No programa, você especifica os seguintes caminhos:

Arquivo Excel com dados (*.xls, *.xlsx)- este é o caminho para o seu arquivo excel com dados (informações do cliente);

Arquivo de modelo do Word (*.doc, *.docx)é o caminho para o seu "template" (o arquivo de palavras criado no passo anterior);

Pasta para salvar os novos arquivos do Word- este é o caminho para a pasta onde o programa salvará os documentos recém-gerados.

Clique para ver

Defina as planilhas e linhas dos dados desejados


Clique para ver

Defina os números de planilhas e linhas do seu arquivo excel com dados (informações sobre clientes) sobre os quais você deseja gerar documentos:

Folhas de dados do arquivo Excel- números de folhas de seu arquivo excel que serão envolvidas na formação de novos documentos;

Linhas de dados do arquivo Excel- números de linha de folhas (folhas especificadas em Folhas de dados do arquivo Excel) do seu arquivo excel que estará envolvido na formação de novos documentos. Com base nos dados de cada linha especificada, um documento separado (arquivo de palavras) será criado.

A numeração de folhas e linhas no programa começa com 1 .