Relleno de Plantillas Word desde Excel
Descripción
Script Python que automatiza el llenado de plantillas Word. Lee los datos de un archivo Excel y reemplaza marcadores de posición ({{COLUMNA}}) en un documento Word con los valores de cada fila, generando un archivo de salida por registro.
Sirve para cualquier tipo de documento que necesite personalización masiva: cartas, contratos, certificados, reportes, notificaciones, constancias, etc.
Requisitos
pip install -r requirements.txt
Estructura de archivos
reemplazar_textos_word.py ← script principal
formato_datos.xlsx ← datos de entrada
formato_word.docx ← plantilla Word
output/ ← documentos generados (se crea automáticamente)
Los tres archivos deben estar en la misma carpeta que el script.
Preparación
1. formato_datos.xlsx
Crea el Excel con las columnas que necesites. Los nombres de columna definen los marcadores que usarás en la plantilla.
| NOMBRE | CARGO | EMPRESA | FECHA |
|---|
| Ana | Analista | Empresa ABC | 2025-06-01 |
| Luis | Coordinador | Empresa XYZ | 2025-06-15 |
2. formato_word.docx
En la plantilla Word, escribe {{NOMBRE_COLUMNA}} donde quieras que aparezca cada valor. Los marcadores deben coincidir exactamente con los nombres de columna del Excel.
Constancia de trabajo
Se hace constar que {{NOMBRE}} desempeña el cargo de {{CARGO}}
en {{EMPRESA}} desde el {{FECHA}}.
Los marcadores funcionan tanto en párrafos normales como dentro de tablas.
Uso
python reemplazar_textos_word.py
Salida esperada:
Columnas detectadas: ['NOMBRE', 'CARGO', 'EMPRESA', 'FECHA']
✅ Documento generado: documento_Ana.docx
✅ Documento generado: documento_Luis.docx
Los archivos quedan en la carpeta output/.
Configuración
Al inicio del script hay variables que puedes ajustar:
# Columna cuyo valor se usará como identificador en el nombre del archivo de salida.
# Si es None o la columna no existe, los archivos se numerarán automáticamente.
COLUMNA_IDENTIFICADOR = 'NOMBRE_LOCADOR'
# Prefijo que antecede al identificador en el nombre del archivo
PREFIJO_SALIDA = 'documento'
Con estos valores, si la columna NOMBRE_LOCADOR contiene Ana García, el archivo se llamará documento_Ana_García.docx. Si COLUMNA_IDENTIFICADOR = None, se generará documento_001.docx.
Si los archivos tienen nombres distintos o están en otra ubicación, edita estas líneas:
ARCHIVO_EXCEL = os.path.join(RUTA_BASE, 'formato_datos.xlsx')
PLANTILLA_WORD = os.path.join(RUTA_BASE, 'formato_word.docx')
CARPETA_SALIDA = os.path.join(RUTA_BASE, 'output')
Solución de problemas
Error al leer el Excel
- Verifica que
formato_datos.xlsx existe en la misma carpeta que el script.
- Cierra el archivo si está abierto en Excel.
ModuleNotFoundError
pip install pandas python-docx
Error procesando fila N
- Revisa que la fila no tenga celdas vacías en columnas requeridas por la plantilla.
Los marcadores no se reemplazan
- Compara el nombre de columna en el Excel con el marcador en Word: deben ser idénticos, incluyendo mayúsculas y sin espacios.
- Ejemplo correcto: columna
FECHA_INICIO → marcador {{FECHA_INICIO}}
- Escribe el marcador completo en un solo paso; si lo tecleas carácter a carácter Word puede fragmentarlo internamente.
Ejemplo completo
Excel (formato_datos.xlsx):
| NOMBRE | PUESTO | FECHA |
|---|
| María López | Analista | 2025-06-01 |
| Juan Torres | Técnico | 2025-06-15 |
Configuración en el script:
COLUMNA_IDENTIFICADOR = 'NOMBRE'
PREFIJO_SALIDA = 'carta'
Plantilla (formato_word.docx):
Lima, {{FECHA}}
Por medio de la presente se certifica que {{NOMBRE}},
quien ocupa el puesto de {{PUESTO}}, ...
Resultado en output/:
carta_María_López.docx
carta_Juan_Torres.docx