¿Puedo modificar el título de la hoja de trabajo después de "agregar" esta hoja de trabajo al libro de trabajo en la hoja de cálculo de spread_excel_writer?

StackOverflow https://stackoverflow.com/questions/7802197

Pregunta

El problema es que no puedo establecer la hoja de trabajo :: setInputEncoding en una hoja de trabajo que no se crea, pero necesito establecer el nombre en formato UTF = 8 en esta hoja de trabajo.

Entonces, por ahora obtuve este resultado: algunos símbolos ilegibles en el título de la hoja de trabajo.

¿alguna sugerencia?

¿Fue útil?

Solución

Mis hallazgos (con suerte correctos):

  • UTF-8 en nombres de hojas de trabajo solo es posible en formato BIFF8.
  • Spreadsheet_Excel_Writer_Worksheet El constructor dura codifica UTF-8 como codificación de entrada para el nombre de la hoja de trabajo.
  • No hay un método integrado para cambiar el nombre de una hoja de trabajo.

Por lo tanto, debe tener cuidado con esto:

  1. Establezca biff8 como formato lo antes posible con \Spreadsheet_Excel_Writer_Workbook::setVersion() (Se agregan beneficios como límites de hoja de trabajo extendidos):

    $workbook->setVersion(8);
    
  2. Si no está utilizando UTF-8 (por ejemplo, porque es un proyecto heredado), convierta el nombre de la hoja de trabajo en la creación de la hoja de trabajo:

    $name = iconv('Windows-1252', 'UTF-18', $name);
    $worksheet = $workbook->addWorksheet($name);
    

Si necesita cambiar el nombre de una hoja, debe componer su propio método:

// Disclaimer: not fully tested code; shared for illustration purposes

/* @var $workbook Spreadsheet_Excel_Writer_Workbook */
/* @var $worksheet Spreadsheet_Excel_Writer_Worksheet */

$name = iconv($input_encoding, 'UTF-16LE', $name);

foreach($workbook->_worksheets as $c => $v){
    if($v->getName()===$name){
        throw new LogicException("New name is already in use: $name");
    }
}

$worksheet->name = $name;
$workbook->_sheetnames[$worksheet->index] = $name;          // Store EXTERNSHEET names
$workbook->_parser->setExtSheet($name, $worksheet->index);  // Register worksheet name with parser

Otros consejos

Es posible que no tengas suerte allí, ¿estás seguro de que el formato BIFF realmente admite Chars Unicode en el nombre de la hoja? Los nombres de las hojas son bastante restrictivos

He cambiado la mayor parte de mi generación de hoja de Excel para usar phpexcel ahora, tal vez sea adecuado para ti

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top