Forum


Replies: 11   Views: 602
Eliminar ceros en gráfica
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by admin  · 27-10-2022 - 08:10

Hola,

Efectivamente, como comentas, MS Word cambia cómo se comporta por defecto para ocultar o mostrar los valores 0 según la versión de MS Word definida en el archivo DOCX. Por ejemplo, si el DOCX está definido como versión 12.0000 los valores 0 se ocultan automáticamente, pero si está definido como 16.0000 se muestran automáticamente. La plantilla base incluida en phpdocx es de tipo 12.0000.

No hay ninguna opción para cambiar este comportamiento por defecto de ocultar/mostrar los 0 de las gráficas de MS Word según la versión definida (etiqueta AppVersion) salvo especificar la versión que se quiere utilizar. Ni siquiera habilitando las opciones de compatibilidad con versiones anteriores según comprobamos. Estos son cambios de MS Word que hacen y rompen de cierta manera la compatibilidad con versiones anteriores.

phpdocx no tiene una opción para personalizar el valor de AppVersion, pero si haces dos sencillos cambios en dos archivos puedes incluirlo:

Archivo CreateDocx.php: en el método addProperties, en lugar de:

if (!empty($values['Manager']) || !empty($values['Company'])) {

añade:

if (!empty($values['Manager']) || !empty($values['Company']) || !empty($values['AppVersion'])) {

Archivo CreateProperties.php: en el método createPropertiesApp, en lugar de:

$appProperties = array('Manager', 'Company');

añade:

$appProperties = array('Manager', 'Company', 'AppVersion');

Con estos cambios, puedes personalizar el valor de AppVersion ejecutando addProperties. Por ejemplo:

$data = array(
    'legend' => array('Legend 4', 'Legend 3', 'Legend 2', 'Legend 1'),
    'data' => array(
        array(
            'name' => 'data 1',
            'values' => array(10, '', '', ''),
        ),
        array(
            'name' => 'data 2',
            'values' => array('', 60, '', ''),
        ),
        array(
            'name' => 'data 3',
            'values' => array('', '', 7, ''),
        ),
        array(
            'name' => 'data 3',
            'values' => array('', '', '', 22),
        ),
    ),
);

$paramsChart = array(
    'sizeX' => 15,
    'sizeY' => 10,
    'hgrid' => 1,
    'vgrid' => 0,
    'minorUnit' => 0,
    'showValue' => 1,
    'chartAlign' => 'center',
    'legendPos' => 'b',
    'stylesTitle' => [
        'fontSize' => 1100,
        'bold' => true,
    ],
    'data' => $data,
    'type' => 'barChart',
);

$docx->addChart($paramsChart);

$docx->addProperties(array('AppVersion' => '12.0000'));

 

El método recomendado sería utilizar la opción theme disponible en las licencias Premium, aunque una nueva sería necesario para borrar la visualización de valores específicos.

Saludos.