Generamos documentos de Microsoft Word en PHP. Generación programática de documentos de formulario en Word Creación de una plantilla de documento de Word

En los artículos anteriores de la serie "Automatización del llenado de documentos", hablé sobre cómo crear la interfaz de usuario de una aplicación, organizar la validación de entrada y obtener un número en palabras sin usar código VBA. En este artículo final, hablaremos sobre la magia: transferir todos los valores necesarios de un libro de Excel a un documento de Word. Déjame mostrarte el resultado final:

Descripción del mecanismo

Para empezar, describiré en términos generales exactamente cómo se transferirán los datos a un documento de Word. En primer lugar, necesitamos una plantilla. documento de Word que contiene todo el marcado, las tablas y la parte del texto que permanecerá sin cambios. En esta plantilla, debe definir los lugares donde se sustituirán los valores del libro de Excel; la forma más conveniente de hacerlo es con la ayuda de marcadores. Después de eso, debe organizar los datos de Excel de tal manera que coincidan con la plantilla de Word y, por último, pero no menos importante, escribir el procedimiento de transferencia en VBA.

Entonces, lo primero es lo primero.

Crear una plantilla de documento de Word

Aquí todo es extremadamente simple: creamos un documento regular, escribimos y formateamos el texto, en general, logramos obtener la forma necesaria. En aquellos lugares donde será necesario sustituir valores de Excel, debe crear marcadores. Esto se hace de la siguiente manera:

Por lo tanto, deberá crear todos los marcadores, es decir, marcar todos los lugares donde se insertarán los datos de Excel. El archivo resultante debe guardarse como una "Plantilla de MS Word" utilizando el elemento de menú "Archivo" -> "Guardar como...".

preparación de datos de excel

Para mayor comodidad, decidí colocar todos los datos que deben transferirse al documento de Word en una hoja de trabajo separada llamada Marcadores: marcadores. Esta hoja tiene dos columnas: la primera contiene los nombres de los marcadores (exactamente como se nombran en el documento de Word), y la segunda contiene los valores correspondientes a transferir.

Algunos de estos valores se obtienen directamente de la hoja de ingreso de datos, y algunos son de tablas auxiliares ubicadas en la hoja de Soporte. En este artículo, no analizaré las fórmulas que calculan los valores deseados, si algo no está claro, haga preguntas en los comentarios.

En esta etapa, es importante especificar correctamente todos los nombres de los marcadores; la exactitud de la transferencia de datos depende de esto.

Procedimiento de transferencia

Pero esto es lo más interesante. Hay dos opciones para ejecutar el código de migración de datos:

  • El código se ejecuta en un libro de Excel, los datos se pasan a Word un valor a la vez y se colocan inmediatamente en el documento.
  • El código se ejecuta en un documento de Word separado, todos los datos se transfieren desde Excel en un lote.

En términos de velocidad de ejecución, especialmente cuando en numeros grandes marcadores, la segunda opción parece mucho más atractiva, pero requiere acciones más complejas. Ese es el que usé.

Esto es lo que hay que hacer:

  • Cree una plantilla de documento de Word habilitada para macros. Esta plantilla contendrá el código VBA ejecutable.
  • En la plantilla creada, debe colocar un programa escrito en VBA. Para hacer esto, al editar una plantilla, presione la combinación de teclas Alt + F11 e ingrese el código del programa en la ventana del editor de Visual Basic que se abre.
  • En un libro de Excel, escriba código que llame al procedimiento de relleno desde la plantilla de Word recién creada.

No proporcionaré el texto del procedimiento en el artículo; se puede ver fácilmente en el archivo FillDocument.dotm ubicado en la carpeta Plantilla en el archivo de ejemplo.

¿Cómo puedes usar todo esto para resolver tu problema particular?

Entiendo que en palabras todo parece muy simple, pero ¿qué sucede en la práctica? Le sugiero que use la opción preparada. Descargue el archivo con el ejemplo, en un libro de Excel, presione la combinación de teclas Alt + F11 para abrir el editor de Visual Basic y leer todos mis comentarios sobre el programa. Para cambiar el programa para adaptarlo a sus necesidades, solo necesita cambiar el valor de algunas constantes, se colocan al principio del programa. Puede copiar libremente todo el texto del programa en su proyecto.

Estructura del archivo

El archivo adjunto a este artículo contiene varios archivos.

El archivo principal es un libro de Excel llamado "Generar confirmaciones". Hay 4 hojas de trabajo en este libro de trabajo, de las cuales solo se muestran dos: "Entrada" - una hoja de entrada de datos y "Base de datos" - un archivo de todos los documentos ingresados.

La carpeta Plantillas contiene plantillas de documentos de Word. Uno de ellos es una plantilla que contiene un programa de llenado de marcadores, y el segundo es un formulario para completar. Puede usar la plantilla con el programa sin cambios, pero el formulario a completar, por supuesto, deberá modificarse de acuerdo con sus necesidades.

¿Cómo reelaborar el ejemplo "para ti mismo"?

  1. Prepare una plantilla de documento de Word para completar. Cree todos los marcadores necesarios en él y guárdelo como una "plantilla de MS Word".
  2. Copie el archivo FillDocument.dotm del archivo adjunto a este artículo a la carpeta con la plantilla preparada. Este archivo es responsable de completar los marcadores de la plantilla y no es necesario cambiar nada en él.
  3. Prepare un libro de trabajo de Excel para la entrada de datos. Depende de usted decidir si tendrá alguna interfaz de usuario "avanzada" y realizar varios cálculos complicados. Lo principal es que contiene una hoja de trabajo con una tabla de correspondencia entre el nombre del marcador en la plantilla de Word y el valor a sustituir.
  4. Inserte el código del programa VBA del archivo de muestra en el libro preparado. Reemplace todas las constantes según su proyecto.
  5. Prueba de correcto funcionamiento.
  6. ¡Disfruta activamente!

Una vez, después de resumir los resultados de la Olimpiada, cuando los participantes necesitaban enviar cartas con los resultados de las materias aprobadas (o no aprobadas), noté que la niña estaba sentada e ingresando los resultados del examen, el nombre del estudiante. y otra información en la plantilla de carta con sus manos. Frente a ella había varias hojas impresas de Excel con nombres y calificaciones. Copiar-Pegar, Ctrl + C - Ctrl + V, pasando el nombre completo del caso nominativo al genitivo, y así ya se ha trabajado con la mitad de la primera de las tres fichas. ¿Cuánto tiempo crees que podría quedarse quieta copiando los datos y luego verificando el resultado? Creo que durante mucho tiempo, y habría bastantes errores. Pero aún tenía que firmar sobres postales... Lamenté su tiempo y en unos minutos le mostré cómo se podía automatizar este proceso utilizando medios sencillos. Después de una breve excursión, completó su trabajo en 20 minutos.

En esta lección, le mostraré cómo crear rápidamente documentos (cartas, invitaciones) con un mínimo de tiempo. En diferentes versiones de idiomas, este proceso descrito se llama de manera diferente. Entonces, en ruso es "Combinar", y en inglés, "Combinar".

Espero que las "cartas de felicidad" del fondo de pensiones, los avisos de impuestos se creen de la misma manera :)

Instrumentos

Para crear documentos, necesitamos OpenOffice Writer. En él crearemos una plantilla de carta. También necesitará OpenOffice Calc. En él crearemos una base de datos con los nombres y direcciones de aquellas personas a las que, por ejemplo, queramos invitar a una fiesta. En lugar de programas del paquete OpenOffice, se pueden utilizar fácilmente MS Word y Excel. La base de datos puede estar fácilmente en MS Access. Y así, comencemos.

Creación de base de datos

Una base de datos no es más que una tabla en MS Excel u OpenOffice Calc, donde los datos se organizan en columnas y la primera fila se usa para nombrar las columnas. Comencemos, por ejemplo, con las columnas "nombre", "ciudad", "código postal", "dirección". Introduzca los datos y guarde el archivo en el disco.



Otras fuentes se pueden utilizar como bases de datos, por ejemplo la libreta de direcciones Base de datos de Outlook o MS Access.

Crear una plantilla de carta

Con la creación de una plantilla de carta, la situación es un poco más complicada. Dado que los datos de la tabla (nuestra base de datos) se sustituirán en la plantilla tal cual, la carta debe escribirse en consecuencia. Si su nombre completo está en caso nominativo en su base de datos, es poco probable que pueda usar este campo en la apelación "Estimado,<ФИО>!" y para el sobre en la línea "Para:<ФИО>". En este último caso, el nombre completo se verá algo torpe.

Al redactar una plantilla de carta, recomiendo comenzar escribiendo una carta a algunos Persona real. Puedes a ti mismo. Luego resalte en él los datos que tomará de la base de datos y reemplácelos con los campos apropiados. Antes de reemplazar el texto seleccionado con un campo, le recomiendo que preste atención a qué letra debe comenzar el campo en la base de datos (minúsculas o mayúsculas). Por supuesto, puede crear una plantilla inmediatamente con los campos, pero es posible que no note algunos errores, como inconsistencias en los casos.



Ya en la plantilla anterior, está claro que necesitamos un nombre completo en caso genitivo y un campo que contenga solo el primer y segundo nombre. Con el primer campo, podemos reemplazar “Para” por “Destinatario” y luego el nombre completo en el caso nominativo nos vendrá perfecto. Con el segundo campo todo es algo más complicado y tendremos que crear otra columna en la base de datos y rellenarla con los datos adecuados. En una de las siguientes lecciones, le diré cómo hacer esto automáticamente, pero por ahora asumiremos que ya tenemos dicho campo.

Para insertar un campo y vincular la plantilla a la base de datos, debe realizar la siguiente secuencia de acciones. Seleccionar una base de datos en OpenOffice Writer



y haga clic en "Definir".



Luego inserte el campo de la base de datos conectada en el lugar correcto. Para hacer esto, presione Ctrl + F2, o seleccione "Campos" y "Otros" en el menú "Insertar". En la ventana que se abre, seleccione la pestaña "Bases de datos", seleccione "Campos de combinación de correspondencia" en el tipo de campo, seleccione el campo apropiado de la base de datos y haga clic en "Insertar". La propia base de datos también se puede seleccionar en esta ventana.



Después de insertar un campo, sin cerrar la ventana actual, seleccione el texto que será reemplazado por el siguiente campo, seleccione el campo y haga clic en "Insertar" nuevamente. Y así para cada uno de los campos.

Para MS Word, la situación es algo similar y quizás más conveniente. Después de crear una tabla en MS Excel, inicie MS Word y vaya a la pestaña "Correos". En esta pestaña, puede ver los tres pasos necesarios: "Iniciar la fusión", "Componer el documento e insertar campos" y "Completar". También hay un paso intermedio "Ver resultado", pero es opcional.

Y así comienza el trabajo con la selección de un documento. Pueden ser letras, pegatinas, un documento de Word normal. También puede ejecutar el asistente de combinación aquí mismo, que lo guiará a través de todos los pasos del proceso. El siguiente paso es seleccionar el destinatario, es decir, la base de datos. Aquí puede elegir una base de datos preparada (por ejemplo, la tabla de MS Excel creada en la etapa anterior) o crear una nueva lista. Después de seleccionar la lista, se activan los botones "Insertar campo de combinación", "Editar lista de destinatarios", etc. A través del cuadro de diálogo "Editar lista de destinatarios", que se abre con el botón correspondiente, puede seleccionar de toda la lista solo el registros necesarios para la fusión.







Al insertar campos, encuentro conveniente resaltar todos los campos en gris haciendo clic en el botón "Seleccionar campos de combinación". De lo contrario, si hay muchos de estos campos, pueden perderse en el texto.

Y así, la plantilla está lista.

generación de letras

La última etapa es la generación de letras. En OpenOffice, para ello, en el menú "Herramientas", seleccione "Mail Merge Wizard..." y siga todos los pasos propuestos para combinar nuestra plantilla con la base de datos.





En el cuadro de diálogo, vemos que de los 8 puntos propuestos, no tenemos que realizar algunos puntos. Así que ya hemos creado el documento y no necesitamos editarlo, también ya hemos insertado el bloque de direcciones. Pero vamos en orden.

Primero, elegimos que creamos cartas basadas en el documento actual y hacemos clic en "Siguiente" en la parte inferior de la ventana. El segundo punto es si tendremos esta carta en papel o por correo electrónico. Para que la carta se guarde en un archivo, seleccione la primera. Haga clic en Siguiente". En el tercer párrafo, se nos ofrece crear un bloque de direcciones, pero como lo creamos a mano, desmarcamos todas las casillas y pasamos al siguiente paso. Aquí se nos ofrece insertar una apelación, pero ya la tenemos, así que haga clic en "Siguiente". En el sexto párrafo, puede editar el documento, mirar el documento con los campos insertados desde la base de datos y, si es necesario, excluir algunos campos.



En el paso 7, se propone editar cada uno de los archivos creados como resultado de conectar la plantilla a la base de datos. Y finalmente, en el último paso, el 8, puede elegir qué hacer con los documentos recibidos. Puede guardar, imprimir o enviar por correo electrónico. En este caso, puede guardar todos los documentos en un archivo o cada documento por separado.

En MS Word, el proceso de combinación se completa haciendo clic en el botón "Buscar y combinar".



Desde el menú desplegable, es obvio que todas las cartas se pueden imprimir y enviar por correo electrónico, pero no es tan obvio que todas se pueden guardar en un archivo. Para guardar, seleccione el primer elemento: "Cambiar documentos individuales". Esto abrirá un nuevo documento, en el que se ubicará cada nueva letra con nueva pagina, y aquí ya puedes guardar este archivo.

Conclusión

Y así, en esta lección, aprendió a usar la herramienta de combinación para crear documentos basados ​​en una plantilla. Escribamos brevemente la secuencia de acciones:

  1. Es necesario crear una base de datos en el procesador de hojas de cálculo, de donde se tomarán los datos para llenar los campos.
  2. Necesita crear una plantilla de carta.
  3. Realice la fusión y guarde el resultado.

A, apellidos en columna B y profesiones en la columna C.

2. Cree un documento de Word (.doc o .docx)


(A), (B) y (C).

(A), (B) y (C) (A)- nombre, (B)- apellido, (C)- profesión.

Ajustes programas

3. Elija rutas para archivos y carpetas


Seleccione

4. Establecer las hojas y filas de los datos deseados


Hojas de datos de archivos de Excel

Filas de datos de archivos de Excel Hojas de datos de archivos de Excel

1 .

Si desea que todas las hojas y/o filas de su archivo de Excel con datos participen en la formación del documento, haga clic en el botón correspondiente a la derecha con la leyenda números(su inscripción cambiará a Todas).

5. Establecer la plantilla de nombre para nuevos archivos de Word


Establezca la plantilla de nombre para nuevos archivos de Word:

Nueva plantilla de nombres de archivos de Word es una plantilla para los nombres de nuevos documentos (archivos de palabras) generados por el programa. Aquí, la plantilla de nombre contiene los nombres de las columnas del archivo de Excel, enmarcados por llaves: (A) y (B). Al generar un nuevo documento, el programa reemplazará todos (A) y (B) los valores de celda correspondientes del archivo de Excel: este será el nombre del nuevo documento (archivo de Word).

Puede establecer sus propios caracteres de borde en la pestaña Ajustes programas

6. Haga clic en "Generar"


Clic en el botón Generar y el progreso aparecerá en la pantalla. Los documentos (archivos de Word) se crearán exactamente tantas líneas del archivo de Excel están involucradas en la formación.

7. Todo


Todos los documentos (archivos de Word) se han creado y se encuentran en la carpeta especificada en Carpeta para guardar los nuevos archivos de Word. Todo:)

Exwog- generador de informes de plantilla de excel a word

Generador de archivos de Word gratuito por plantilla (archivo de Word) basado en datos de archivos de Excel

Funciona en Mac OS, Windows y Linux

Le permite establecer los nombres de los nuevos archivos de Word generados

Le permite establecer hojas y filas de los datos requeridos

Le permite establecer caracteres de borde para los nombres de las columnas de Excel

Fácil de usar

Almacene sus datos en formato Excel (.xls y .xlsx) y genere archivos de Word (.doc y .docx) con unos pocos clics :)


¿Cómo funciona?

Eche un vistazo a su archivo de Excel


En este ejemplo, el archivo de Excel contiene información sobre los clientes. Cada línea corresponde a un cliente específico. Los nombres están en una columna. A, apellidos en columna B y profesiones en la columna C.

Click para ver

Crear un documento de Word (.doc o .docx)


Click para ver

Cree una "plantilla" (archivo de palabras) para generar nuevos documentos (archivos de palabras). Aquí el texto de la "plantilla" contiene los nombres de las columnas del archivo de Excel, enmarcado por llaves: (A), (B) y (C).

El programa generará nuevos documentos de acuerdo con la "plantilla" reemplazando todos (A), (B) y (C) valores de celda correspondientes del archivo de Excel: (A)- nombre, (B)- apellido, (C)- profesión.

También puede establecer sus propios caracteres de borde en la pestaña Ajustes programas

Elija rutas para archivos y carpetas


Seleccionar rutas para archivos y carpetas (botones etiquetados Seleccione). En el programa, especifica las siguientes rutas:

Archivo de Excel con datos (*.xls, *.xlsx)- esta es la ruta a su archivo de Excel con datos (información del cliente);

Archivo de plantilla de Word (*.doc, *.docx) es la ruta a su "plantilla" (el archivo de Word creado en el paso anterior);

Carpeta para guardar los nuevos archivos de Word- esta es la ruta a la carpeta donde el programa guardará los documentos recién generados.

Click para ver

Establecer las hojas y filas de los datos deseados


Click para ver

Establezca el número de hojas y líneas de su archivo de Excel con datos (información sobre clientes) sobre los que desea generar documentos:

Hojas de datos de archivos de Excel- números de hojas de su archivo de Excel que estarán involucrados en la formación de nuevos documentos;

Filas de datos de archivos de Excel- números de línea de hojas (hojas especificadas en Hojas de datos de archivos de Excel) de su archivo de Excel que estará involucrado en la formación de nuevos documentos. Según los datos de cada línea especificada, se creará un documento separado (archivo de Word).

La numeración de hojas y líneas en el programa comienza con 1 .