-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path5-tablas.php
111 lines (100 loc) · 2.89 KB
/
5-tablas.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
/**
* Trabajar con documentos de Word y PHP usando PHPOffice
*
* Más tutoriales en: parzibyte.me/blog
*
* Ejemplo 5:
* Tablas
* Nota: se utiliza la notación corta de arreglos [], que se pueden remplazar por array(),
* más información en https://parzibyte.me/blog/2018/10/11/sintaxis-corta-array-php/
*/
require_once "vendor/autoload.php";
use PhpOffice\PhpWord\SimpleType\Jc;
use PhpOffice\PhpWord\Style\Language;
$documento = new \PhpOffice\PhpWord\PhpWord();
$propiedades = $documento->getDocInfo();
$propiedades->setCreator("Luis Cabrera Benito");
$propiedades->setTitle("Tablas");
# Agregar texto...
/*
Todos los textos deben estar dentro de una sección
*/
$seccion = $documento->addSection();
$estiloTabla = [
"borderColor" => "8bc34a",
"alignment" => Jc::CENTER,
"borderSize" => 5,
];
// Guardarlo para usarlo más tarde
$documento->addTableStyle("estilo1", $estiloTabla);
$tabla = $seccion->addTable("estilo1"); # Agregar tabla con el estilo que guardamos antes
$tabla->addRow(); # Agregar fila
$celda = $tabla->addCell(); # Agregar celda
$celda->addText("Dentro de una celda");
$celda = $tabla->addCell(); # Agregar celda
$celda->addText("Dentro de una celda");
# Un separador
$seccion->addText("Aquí otra tabla:");
# Otra tabla
$estiloTabla = [
"borderColor" => "000000",
"alignment" => Jc::LEFT,
"borderSize" => 10,
"cellMargin" => 10,
];
// Guardarlo para usarlo más tarde
$documento->addTableStyle("estilo2", $estiloTabla);
$tabla = $seccion->addTable("estilo2");
for ($fila = 0; $fila < 5; $fila++) {
$tabla->addRow();
for ($numeroCelda = 0; $numeroCelda < 5; $numeroCelda++) {
$celda = $tabla->addCell();
$celda->addText(sprintf("Posición %d x %d", $fila, $numeroCelda));
}
}
# Otra tabla
$estiloTabla = [
"borderColor" => "000000",
"alignment" => Jc::RIGHT,
"borderSize" => 30,
"cellMargin" => 80,
];
// Guardarlo para usarlo más tarde
$documento->addTableStyle("estilo3", $estiloTabla);
$tabla = $seccion->addTable("estilo3");
$mascotas = [
[
"nombre" => "Maggie",
"edad" => 3,
],
[
"nombre" => "Panqué",
"edad" => 1,
],
[
"nombre" => "Guayaba",
"edad" => 2,
],
];
# Encabezados
$fuente = [
"name" => "Arial",
"size" => 12,
"color" => "000000",
];
$tabla->addRow();
$tabla->addCell()->addText("Nombre", $fuente);
$tabla->addCell()->addText("Edad", $fuente);
foreach ($mascotas as $mascota) {
$tabla->addRow();
$tabla->addCell()->addText($mascota["nombre"]);
$tabla->addCell()->addText($mascota["edad"]);
}
# Para que no diga que se abre en modo de compatibilidad
$documento->getCompatibility()->setOoxmlVersion(15);
# Idioma español de México
$documento->getSettings()->setThemeFontLang(new Language("ES-MX"));
# Guardarlo
$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($documento, "Word2007");
$objWriter->save("5-tablas.docx");