问题是我无法将 Worksheet::setInputEncoding 设置为未创建的工作表,但我需要为此工作表设置 utf=8 格式的名称。
所以现在我得到了这个结果:工作表标题中有一些不可读的符号。
有什么建议么?
问题是我无法将 Worksheet::setInputEncoding 设置为未创建的工作表,但我需要为此工作表设置 utf=8 格式的名称。
所以现在我得到了这个结果:工作表标题中有一些不可读的符号。
有什么建议么?
您可能在那里不走运,您确定 biff 格式实际上支持工作表名称中的 unicode 字符。工作表名称非常严格
我现在已经将我的大部分 excel 表生成切换为使用 phpexcel,也许这会适合你
我的(希望是正确的)发现:
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