Могу ли я изменить заголовок рабочего листа после «добавления» этого таблицы в рабочую книгу в 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
Другие советы
Возможно, вам не повезло, вы уверены, что Biff Format фактически поддерживает Unicode Chars в названии листа. Листовые имена довольно ограничительны
Я переключил большую часть своего поколения листов Excel, чтобы использовать Phpexcel, возможно, это подойдет вам