问题是我无法将Worksheet :: setInputEncoding设置为未创建的工作表,但我需要将utf = 8格式的名称设置为此工作表。
所以现在我得到了这个结果: 工作表标题中有一些不可读的符号。
有什么建议吗?
答案 0 :(得分:0)
你可能在那里运气不好,你确定biff格式实际上支持工作表名称中的unicode字符。工作表名称非常严格
我已将大部分excel表单生成切换为现在使用phpexcel,也许这将适合您
答案 1 :(得分:0)
我的(希望是正确的)调查结果:
Spreadsheet_Excel_Writer_Worksheet
构造函数将UTF-8硬编码为工作表名称的输入编码。因此需要注意:
使用\Spreadsheet_Excel_Writer_Workbook::setVersion()
尽快将BIFF8设置为格式(扩展工作表限制等附加好处):
$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