Kann ich den Titel des Arbeitsblatts ändern, nachdem ich dieses Arbeitsblatt in die Arbeitsmappe in der Tabelle_Excel_Writer „hinzufügen“?

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

Frage

Das Problem ist, dass ich das Arbeitsblatt :: setInpUTCoding nicht auf ein Arbeitsblatt einstellen kann, das nicht erstellt wird, aber ich muss den Namen im UTF = 8 -Format für dieses Arbeitsblatt festlegen.

Im Moment habe ich dieses Ergebnis erhalten: einige unlesbare Symbole im Arbeitsblatt -Titel.

irgendwelche Vorschläge?

War es hilfreich?

Lösung

Meine (hoffentlich korrekten) Ergebnisse:

  • UTF-8 in Arbeitsblattnamen ist nur im BIFF8-Format möglich.
  • Spreadsheet_Excel_Writer_Worksheet Konstruktor-Hardcodes UTF-8 als Eingabecodierung für Arbeitsblattnamen.
  • Es gibt keine integrierte Methode, um ein Arbeitsblatt umzubenennen.

Daher müssen Sie vorsichtig sein:

  1. Setzen Sie Biff8 so schnell wie möglich als Format mit \Spreadsheet_Excel_Writer_Workbook::setVersion() (Es gibt zusätzliche Vorteile wie erweiterte Arbeitsblattgrenzen):

    $workbook->setVersion(8);
    
  2. Wenn Sie UTF-8 nicht verwenden (z. B. weil es sich um ein Legacy-Projekt handelt), konvertieren Sie den Arbeitsblattnamen bei der Erstellung der Arbeitsblatt:

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

Wenn Sie ein Blatt umbenennen müssen, müssen Sie Ihre eigene Methode komponieren:

// 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

Andere Tipps

Sie könnten dort kein Glück haben. Sind Sie sicher, dass das Biff -Format Unicode -Chars im Blattnamen tatsächlich unterstützt. Die Blattnamen sind ziemlich restriktiv

Ich habe den größten Teil meiner Excel -Blatt -Generation umgeführt, um PHPexcel jetzt zu verwenden, vielleicht ist das für Sie geeignet

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top