Spreadsheet_excel_writerのワークブックにこのワークシートを「追加」した後、ワークシートのタイトルを変更できますか?
-
22-10-2019 - |
質問
問題は、ワークシート:: SetinputEncodingを作成していないワークシートに設定できないことですが、このワークシートにutf = 8形式で名前を設定する必要があります。
だから今のところ、私はこの結果を得ました:ワークシートのタイトルの読みにくいシンボル。
助言がありますか?
解決
私の(できれば正しい)調査結果:
- ワークシート名のUTF-8は、BIFF8形式でのみ可能です。
Spreadsheet_Excel_Writer_Worksheet
ワークシート名の入力エンコードとして、コンストラクターハードコードUTF-8。- ワークシートの名前を変更するための組み込みメソッドはありません。
したがって、これに注意する必要があります:
できるだけ早くbiff8をフォーマットとして設定します
\Spreadsheet_Excel_Writer_Workbook::setVersion()
(ワークシートの拡張制限のように追加された追加の利点があります):$workbook->setVersion(8);
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を使用するように切り替えました。多分それはあなたに適しています
所属していません StackOverflow