Spreadsheet_excel_writerのワークブックにこのワークシートを「追加」した後、ワークシートのタイトルを変更できますか?

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

質問

問題は、ワークシート:: SetinputEncodingを作成していないワークシートに設定できないことですが、このワークシートにutf = 8形式で名前を設定する必要があります。

だから今のところ、私はこの結果を得ました:ワークシートのタイトルの読みにくいシンボル。

助言がありますか?

役に立ちましたか?

解決

私の(できれば正しい)調査結果:

  • ワークシート名のUTF-8は、BIFF8形式でのみ可能です。
  • Spreadsheet_Excel_Writer_Worksheet ワークシート名の入力エンコードとして、コンストラクターハードコードUTF-8。
  • ワークシートの名前を変更するための組み込みメソッドはありません。

したがって、これに注意する必要があります:

  1. できるだけ早くbiff8をフォーマットとして設定します \Spreadsheet_Excel_Writer_Workbook::setVersion() (ワークシートの拡張制限のように追加された追加の利点があります):

    $workbook->setVersion(8);
    
  2. UTF-8を使用していない場合(たとえば、レガシープロジェクトだから)、ワークシートの作成にワークシート名を変換してください。

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

シートの名前を変更する必要がある場合は、独自の方法を作成する必要があります。

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

他のヒント

あなたはそこで運が悪いかもしれません、あなたはあなたが確かにシート名でユニコード・チャーを実際にサポートしていると確信していますか?シート名はかなり制限されています

Excelシート生成のほとんどを今すぐPHPExcelを使用するように切り替えました。多分それはあなたに適しています

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top