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<?php
// Los datos de tu estadistica.
"titulo" => "Resultados de encuesta",
"Bueno" => 10,
"Muy bueno" => 30,
"Malo" => 22,
"Muy malo" => 12
)
);
$tmp_name = microtime(true)."_word_chart.docx"; $file_edit = "word/charts/chart1.xml";
copy("chart.doc", $tmp_name);
$zip = new ZipArchive ;
$zip->open($tmp_name);
$chart = $zip->getFromName($file_edit);
$zip->deleteName($file_edit);
$chart = str_replace("[TITULO]", $data["titulo"], $chart); $nombres = $valores = "";
$nro = 0;
foreach($data["datos"] as $nombre => $valor)
{
$nombres .= "<c:pt idx=\"$nro\"><c:v>$nombre</c:v></c:pt>";
$valores .= "<c:pt idx=\"$nro\"><c:v>$valor</c:v></c:pt>";
$nro++;
}
$zip->addFromString($file_edit, $chart);
$zip->close();
header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename=estadistica.docx'); header('Content-Transfer-Encoding: binary'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
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.