Generiamo documenti Microsoft Word in PHP. Generazione di documenti modulo in modo programmatico in Word Creazione di un modello di documento Word

Negli articoli precedenti della serie "Automating Document Filling", ho parlato di come creare l'interfaccia utente di un'applicazione, organizzare la convalida dell'input e ottenere un numero in parole senza utilizzare il codice VBA. In questo ultimo articolo parleremo di magia: trasferire tutti i valori necessari da una cartella di lavoro di Excel a un documento di Word. Lascia che ti mostri il risultato finale:

Descrizione del meccanismo

Per cominciare, descriverò in termini generali esattamente come i dati verranno trasferiti a un documento Word. Prima di tutto, abbiamo bisogno di un modello documento verbale A contenente tutti i markup, le tabelle e la parte di testo che rimarrà invariata. In questo modello, è necessario definire i punti in cui verranno sostituiti i valori della cartella di lavoro di Excel: il modo più conveniente per farlo è utilizzare i segnalibri. Successivamente, è necessario disporre i dati di Excel in modo tale da corrispondere al modello di Word e, ultimo ma non meno importante, scrivere la procedura di trasferimento stessa in VBA.

Quindi, per prima cosa.

Crea un modello di documento Word

Tutto è estremamente semplice qui: creiamo un documento regolare, digitiamo e formattiamo il testo, in generale, otteniamo per ottenere il modulo necessario. In quei punti in cui sarà necessario sostituire i valori da Excel, è necessario creare segnalibri. Questo viene fatto nel modo seguente:

Pertanto, sarà necessario creare tutti i segnalibri, ovvero contrassegnare tutti i punti in cui verranno inseriti i dati da Excel. Il file risultante deve essere salvato come "Modello MS Word" utilizzando la voce di menu "File" -> "Salva con nome...".

Preparazione dati Excel

Per comodità, ho deciso di inserire tutti i dati che devono essere trasferiti nel documento Word in un foglio di lavoro separato chiamato Segnalibri - segnalibri. Questo foglio ha due colonne: la prima contiene i nomi dei segnalibri (esattamente come sono nominati nel documento Word), e la seconda contiene i valori corrispondenti da trasferire.

Alcuni di questi valori sono ottenuti direttamente dal foglio di inserimento dati, altri da tabelle ausiliarie situate nel foglio di supporto. In questo articolo non analizzerò le formule che calcolano i valori desiderati, se qualcosa non è chiaro fate domande nei commenti.

In questa fase, è importante specificare correttamente tutti i nomi dei segnalibri: la correttezza del trasferimento dei dati dipende da questo.

Procedura di trasferimento

Ma questo è il più interessante. Esistono due opzioni per eseguire il codice di migrazione dei dati:

  • Il codice viene eseguito in una cartella di lavoro di Excel, i dati vengono passati a Word un valore alla volta e vengono immediatamente inseriti nel documento.
  • Il codice viene eseguito in un documento Word separato, tutti i dati vengono trasferiti da Excel in un unico batch.

In termini di velocità di esecuzione, soprattutto quando in gran numero segnalibri, la seconda opzione sembra molto più attraente, ma richiede azioni più complesse. È quello che ho usato.

Ecco cosa bisogna fare:

  • Crea un modello di documento Word abilitato per le macro. Questo modello conterrà il codice VBA eseguibile.
  • Nel modello creato, è necessario inserire un programma scritto in VBA. Per fare ciò, durante la modifica di un modello, premi la combinazione di tasti Alt + F11 e inserisci il codice del programma nella finestra dell'editor di Visual Basic che si apre.
  • In una cartella di lavoro di Excel scrivere il codice che chiama la procedura di riempimento dal modello di Word appena creato.

Non fornirò il testo della procedura nell'articolo - può essere facilmente visualizzato nel file FillDocument.dotm che si trova nella cartella Template nell'archivio di esempio.

Come puoi usare tutto questo per risolvere il tuo problema particolare?

Capisco che a parole sembra tutto molto semplice, ma cosa succede in pratica? Ti suggerisco di usare solo l'opzione già pronta. Scarica l'archivio con l'esempio, in una cartella di lavoro di Excel, premi la combinazione di tasti Alt + F11 per aprire l'editor di Visual Basic e leggi tutti i miei commenti sul programma. Per modificare il programma in base alle proprie esigenze, è sufficiente modificare il valore di alcune costanti, che si trovano proprio all'inizio del programma. Puoi copiare liberamente l'intero testo del programma nel tuo progetto.

Struttura dell'archivio

L'archivio allegato a questo articolo contiene diversi file.

Il file principale è una cartella di lavoro di Excel denominata "Genera conferme". Ci sono 4 fogli di lavoro in questa cartella di lavoro, di cui solo due vengono visualizzati: "Input" - un foglio di inserimento dati e "Database" - un archivio di tutti i documenti inseriti.

La cartella Modelli contiene i modelli di documento di Word. Uno di questi è un modello contenente un programma di riempimento dei segnalibri e il secondo è un modulo da compilare. Puoi utilizzare il modello con il programma senza modifiche, ma il modulo da compilare, ovviamente, dovrà essere modificato in base alle tue esigenze.

Come rielaborare l'esempio "per te stesso"?

  1. Preparare un modello di documento Word da completare. Crea tutti i segnalibri necessari e salvalo come "modello MS Word".
  2. Copiare il file FillDocument.dotm dall'archivio allegato a questo articolo nella cartella con il modello preparato. Questo file è responsabile della compilazione dei segnalibri del modello e non è necessario modificare nulla al suo interno.
  3. Preparare una cartella di lavoro di Excel per l'immissione dei dati. Sta a te decidere se avrà un'interfaccia utente "avanzata" ed eseguire vari calcoli complicati. La cosa principale è che contiene un foglio di lavoro con una tabella di corrispondenza tra il nome del segnalibro nel modello di Word e il valore da sostituire.
  4. Inserisci il codice del programma VBA dal file di esempio nella cartella di lavoro preparata. Sostituisci tutte le costanti in base al tuo progetto.
  5. Testare il corretto funzionamento.
  6. Divertiti attivamente!

Una volta, dopo aver riassunto i risultati delle Olimpiadi, quando i partecipanti dovevano inviare lettere con i risultati delle materie superate (o non superate), ho notato che la ragazza era seduta e inseriva i risultati dell'esame, il nome dello studente e altre informazioni nel modello di lettera con le mani. Davanti a lei c'erano diversi fogli stampati da Excel con nomi e voti. Copia-Incolla, Ctrl+C - Ctrl+V, trasferendo il nome completo dal nominativo al genitivo, e così il lavoro è già stato fatto con metà della prima delle tre schede. Per quanto tempo pensi che potrebbe stare ferma a copiare i dati e poi a controllare il risultato? Penso per molto tempo, e ci sarebbero parecchi errori. Ma poi doveva ancora firmare le buste postali... Mi è dispiaciuto per il suo tempo e in pochi minuti ho mostrato come questo processo potesse essere automatizzato con mezzi semplici. Dopo una breve escursione, il suo lavoro è stato completato in 20 minuti.

In questa lezione ti mostrerò come creare rapidamente documenti (lettere, inviti) con un minimo di tempo. In diverse versioni delle lingue, questo processo descritto è chiamato in modo diverso. Quindi in russo è "Unisci", e in inglese - "Unisci".

Spero che le "lettere di felicità" dal fondo pensione, gli avvisi fiscali vengano creati allo stesso modo :)

Utensili

Per creare documenti, abbiamo bisogno di OpenOffice Writer. In esso creeremo un modello di lettera. Avrai anche bisogno di OpenOffice Calc. In esso creeremo un database con i nomi e gli indirizzi di quelle persone che, ad esempio, vogliamo invitare a una festa. Invece dei programmi del pacchetto OpenOffice, MS Word ed Excel possono essere facilmente utilizzati. Il database può trovarsi facilmente in MS Access. E quindi, cominciamo.

Creazione database

Un database non è altro che una tabella in MS Excel o OpenOffice Calc, in cui i dati sono disposti in colonne e la prima riga viene utilizzata per denominare le colonne. Iniziamo, ad esempio, le colonne "nome", "città", "codice postale", "indirizzo". Immettere i dati e salvare il file su disco.



Altre fonti possono essere utilizzate come database, ad esempio La rubrica Outlook o database MS Access.

Crea un modello di lettera

Con la creazione di un modello di lettera, la situazione è un po' più complicata. Poiché i dati della tabella (il nostro database) verranno sostituiti nel modello così come sono, la lettera deve essere scritta di conseguenza. Se il tuo nome completo è nel caso nominativo nel tuo database, è improbabile che tu possa utilizzare questo campo nel ricorso "Gentile,<ФИО>!" e per la busta nella riga "A:<ФИО>". In quest'ultimo caso, il nome completo sembrerà alquanto goffo.

Quando componi un modello di lettera, ti consiglio di iniziare scrivendo una lettera ad alcuni persona reale. Puoi farlo a te stesso. Quindi evidenzia in esso i dati che prenderai dal database e sostituiscili con i campi appropriati. Prima di sostituire il testo selezionato con un campo, ti consiglio di prestare attenzione a quale lettera deve iniziare il campo nel database (minuscolo o maiuscolo). Certo, puoi creare immediatamente un modello con i campi, ma potresti non notare alcuni errori, come incongruenze nei casi.



Già nel modello sopra, è chiaro che abbiamo bisogno di un nome completo nel genitivo e di un campo contenente solo il nome e il secondo nome. Con il primo campo, possiamo sostituire “To” con “Destinatario” e quindi il nome completo nel caso nominativo ci si addice perfettamente. Con il secondo campo, tutto è un po' più complicato e dovremo creare un'altra colonna nel database e riempirla con i dati appropriati. In una delle lezioni seguenti ti dirò come farlo automaticamente, ma per ora supponiamo di avere già un tale campo.

Per inserire un campo e associare il modello al database, è necessario eseguire la seguente sequenza di azioni. Seleziona un database in OpenOffice Writer



e fare clic su "Definisci".



Quindi inserisci il campo dal database connesso nel posto giusto. Per fare ciò, premi Ctrl + F2 o seleziona "Campi" e "Altro" dal menu "Inserisci". Nella finestra che si apre, seleziona la scheda "Database", seleziona "Campi Mail Merge" nel tipo di campo, seleziona il campo appropriato dal database e fai clic su "Inserisci". Anche il database stesso può essere selezionato in questa finestra.



Dopo aver inserito un campo, senza chiudere la finestra corrente, selezionare il testo da sostituire con il campo successivo, selezionare il campo e fare nuovamente clic su "Inserisci". E così per ciascuno dei campi.

Per MS Word, la situazione è in qualche modo simile e forse più conveniente. Dopo aver creato una tabella in MS Excel, avvia MS Word e vai alla scheda "Mailout". In questa scheda puoi vedere i tre passaggi necessari: "Avvia l'unione", "Componi il documento e inserisci i campi" e "Completa". C'è anche un passaggio intermedio "Visualizza risultato", ma è facoltativo.

E così il lavoro inizia con la selezione di un documento. Possono essere lettere, adesivi, un normale documento di Word. Puoi anche eseguire la procedura guidata di unione proprio qui, che ti guiderà attraverso tutti i passaggi del processo. Il passaggio successivo consiste nel selezionare il destinatario, ovvero il database. Qui puoi scegliere un database già pronto (ad esempio, la tabella MS Excel creata nella fase precedente) o creare un nuovo elenco. Dopo aver selezionato la lista si attivano i pulsanti “Inserisci campo unione”, “Modifica lista destinatari”, ecc.. Attraverso la finestra di dialogo “Modifica lista destinatari”, che si apre con il relativo pulsante, è possibile selezionare dall'intera lista solo il record necessari per la fusione.







Quando si inseriscono i campi, trovo conveniente evidenziare tutti i campi in grigio facendo clic sul pulsante "Seleziona campi di unione". Altrimenti, se ci sono molti di questi campi, possono andare persi nel testo.

E così, il modello è pronto.

Generazione di lettere

L'ultima fase è la generazione delle lettere. In OpenOffice, per questo, nel menu "Strumenti", seleziona "Mail Merge Wizard ..." e segui tutti i passaggi proposti per combinare il nostro modello con il database.





Nella finestra di dialogo, vediamo che degli 8 punti proposti, non dobbiamo eseguire alcuni punti. Quindi abbiamo già creato il documento e non abbiamo bisogno di modificarlo, abbiamo anche già inserito il blocco indirizzi. Ma andiamo con ordine.

Innanzitutto, scegliamo di creare lettere basate sul documento corrente e fare clic su "Avanti" nella parte inferiore della finestra. Il secondo punto è se avremo questa lettera cartacea o e-mail. Per salvare la lettera in un file, selezionare il primo. Fare clic su "Avanti". Nel terzo paragrafo, ci viene offerto di creare un blocco di indirizzi, ma poiché lo abbiamo creato manualmente, deselezioniamo tutte le caselle e procediamo al passaggio successivo. Qui ci viene offerto di inserire un ricorso, ma lo abbiamo anche già, quindi fai clic su "Avanti". Nel sesto paragrafo è possibile modificare il documento, guardare il documento con i campi inseriti dal database ed eventualmente escludere alcuni campi.



Al passaggio 7, si propone di modificare ciascuno dei file creati come risultato della connessione del modello al database. E infine, all'ultimo passaggio 8, puoi scegliere cosa fare con i documenti ricevuti. Puoi salvare, stampare o inviare via e-mail. In questo caso, puoi salvare tutti i documenti in un file o ogni documento separatamente.

In MS Word, il processo di unione viene completato facendo clic sul pulsante "Trova e unisci".



Dal menù a tendina è ovvio che tutte le lettere possono essere stampate e spedite via e-mail, ma non è scontato che tutte possano essere salvate in un file. Per salvare, seleziona il primo elemento - "Modifica singoli documenti". Questo aprirà un nuovo documento, in cui ogni nuova lettera sarà posizionata con nuova pagina, e qui puoi già salvare questo file.

Conclusione

E così, in questa lezione, hai imparato come utilizzare lo strumento di unione per creare documenti basati su un modello. Scriviamo brevemente la sequenza di azioni:

  1. È necessario creare un database nell'elaboratore di fogli di calcolo, da cui verranno prelevati i dati per compilare i campi.
  2. Devi creare un modello di lettera.
  3. Eseguire l'unione e salvare il risultato.

UN, cognomi in colonna B e professioni nella colonna C.

2. Crea un documento word (.doc o .docx)


(UN), (B) E (C).

(UN), (B) E (C) (UN)- nome, (B)- cognome, (C)- professione.

Impostazioni programmi.

3. Scegli i percorsi per file e cartelle


Selezionare

4. Impostare i fogli e le righe dei dati desiderati


Fogli dati file Excel

Righe di dati del file Excel Fogli dati file Excel

1 .

Se vuoi che tutti i fogli e/o righe del tuo file excel con i dati partecipino alla formazione del documento, clicca sul pulsante corrispondente a destra con la didascalia numeri(la sua iscrizione cambierà in Tutto).

5. Impostare il modello di nome per i nuovi file word


Imposta il modello di nome per i nuovi file di parole:

Nuovo modello di nomi di file di paroleè un modello per i nomi dei nuovi documenti (file di parole) generati dal programma. Qui, il modello di nome contiene i nomi delle colonne del file excel, racchiusi tra parentesi graffe: (UN) E (B). Quando si genera un nuovo documento, il programma sostituirà tutto (UN) E (B) i valori di cella corrispondenti dal file excel: questo sarà il nome del nuovo documento (file word).

Puoi impostare i tuoi caratteri di bordo nella scheda Impostazioni programmi.

6. Fai clic su "Genera"


Fare clic sul pulsante creare e il progresso apparirà sullo schermo. I documenti (file word) verranno creati esattamente quante righe del file excel sono coinvolte nella formazione.

7. Tutto


Tutti i documenti (file di parole) sono stati creati e si trovano nella cartella specificata in Cartella per salvare i nuovi file word. Tutto:)

Exwog- generatore di report di modelli da excel a word

Generatore di file Word gratuito per modello (file Word) basato sui dati del file Excel

Funziona su Mac OS, Windows e Linux

Consente di impostare i nomi dei nuovi file di parole generati

Consente di impostare fogli e righe dei dati richiesti

Consente di impostare i caratteri del bordo per i nomi delle colonne di Excel

Facile da usare

Memorizza i tuoi dati in formato Excel (.xls e .xlsx) e genera file Word (.doc e .docx) in pochi click :)


Come funziona?

Dai un'occhiata al tuo file excel


In questo esempio, il file excel contiene informazioni sui client. Ogni riga corrisponde a un cliente specifico. I nomi sono in una colonna UN, cognomi in colonna B e professioni nella colonna C.

Clicca per vedere

Crea un documento word (.doc o .docx)


Clicca per vedere

Creare un "template" (file-word) per la generazione di nuovi documenti (file-word). Qui il testo del "template" contiene i nomi delle colonne del file excel, racchiusi tra parentesi graffe: (UN), (B) E (C).

Il programma genererà nuovi documenti secondo il "template" sostituendo tutti (UN), (B) E (C) valori di cella corrispondenti dal file excel: (UN)- nome, (B)- cognome, (C)- professione.

Puoi anche impostare i tuoi caratteri di bordo nella scheda Impostazioni programmi.

Scegli i percorsi per file e cartelle


Selezionare i percorsi per file e cartelle (pulsanti etichettati Selezionare). Nel programma, si specificano i seguenti percorsi:

File Excel con dati (*.xls, *.xlsx)- questo è il percorso del tuo file excel con i dati (informazioni cliente);

File modello Word (*.doc, *.docx)è il percorso del tuo "modello" (il file di parole creato nel passaggio precedente);

Cartella per salvare i nuovi file word- questo è il percorso della cartella in cui il programma salverà i documenti appena generati.

Clicca per vedere

Impostare i fogli e le righe dei dati desiderati


Clicca per vedere

Imposta i numeri di fogli e righe del tuo file excel con i dati (informazioni sui clienti) su cui vuoi generare i documenti:

Fogli dati file Excel- numero di fogli del tuo file excel che saranno coinvolti nella formazione di nuovi documenti;

Righe di dati del file Excel- numeri di riga dei fogli (fogli specificati in Fogli dati file Excel) del tuo file excel che sarà coinvolto nella formazione di nuovi documenti. Sulla base dei dati di ciascuna riga specificata, verrà creato un documento separato (file di parole).

La numerazione dei fogli e delle righe nel programma inizia con 1 .