Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/08/2014, 00:41
Avatar de NSD
NSD
Colaborador
 
Fecha de Ingreso: mayo-2012
Ubicación: Somewhere
Mensajes: 1.332
Antigüedad: 12 años
Puntos: 320
Respuesta: Generar gráficos de encuesta online en word usando PHP

Un documento de Word, no es mas que un ZIP con otra extencion, la via mas sencilla es entonces, crear una plantilla en Word con el tipo de grafico y luego personalizar los datos desde php, con esto te ahorras de estar paleando con librerias complejas y demas.

Te pongo un ejemplo, en tu servidor local crea una carpeta llamada "ChartWord", dentro de esa carpeta, crea un script llamado "index.php" y dentro de este index, pega el siguiente codigo:
Código PHP:
Ver original
  1. <?php
  2.     // Los datos de tu estadistica.
  3.     $data = array(
  4.         "titulo" => "Resultados de encuesta",
  5.         "datos" => array(
  6.             "Bueno" => 10,
  7.             "Muy bueno" => 30,
  8.             "Malo" => 22,
  9.             "Muy malo" => 12
  10.         )
  11.     );
  12.  
  13.     $tmp_name = microtime(true)."_word_chart.docx";
  14.     $file_edit = "word/charts/chart1.xml";
  15.     copy("chart.doc", $tmp_name);
  16.  
  17.     $zip = new ZipArchive ;
  18.     $zip->open($tmp_name);
  19.     $chart = $zip->getFromName($file_edit);
  20.     $zip->deleteName($file_edit);
  21.  
  22.     $chart = str_replace("[TITULO]", $data["titulo"], $chart);
  23.     $chart = str_replace("[CANT-VALORES]", count($data["datos"]), $chart);
  24.     $nombres = $valores = "";
  25.     $nro = 0;
  26.     foreach($data["datos"] as $nombre => $valor)
  27.     {
  28.         $nombres .= "<c:pt idx=\"$nro\"><c:v>$nombre</c:v></c:pt>";
  29.         $valores .= "<c:pt idx=\"$nro\"><c:v>$valor</c:v></c:pt>";
  30.         $nro++;
  31.     }
  32.     $chart = str_replace("[NOMBRES]", $nombres, $chart);
  33.     $chart = str_replace("[VALORES]", $valores, $chart);
  34.  
  35.     $zip->addFromString($file_edit, $chart);
  36.     $zip->close();
  37.  
  38.     header('Content-Description: File Transfer');
  39.     header('Content-Type: application/octet-stream');
  40.     header('Content-Disposition: attachment; filename=estadistica.docx');
  41.     header('Content-Transfer-Encoding: binary');
  42.     header('Expires: 0');
  43.     header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  44.     header('Pragma: public');
  45.     header('Content-Length: '.filesize($tmp_name));
  46.  
  47.     ob_clean();
  48.     flush();
  49.     readfile($tmp_name);
  50.  
  51.     unlink($tmp_name);

Luego, dentro de esa misma carpeta, pon el archivo .doc que te adjunto, este archivo es la plantilla. Luego ejecuta el script y veras que se descarga un archivo .docx que tiene el gráfico de los valores del array que definiste al inicio.

NOTA: El archivo que te adjunto no puede abrirse con el word, si lo intentas te dará error de formato.
Archivos Adjuntos
Tipo de Archivo: doc chart.doc (19,0 KB (Kilobytes), 3 visitas)
__________________
Maratón de desafíos PHP Junio - Agosto 2015 en FDW | Reglamento - Desafios