我可以在“添加”此工作表中的工作表中修改工作表的标题,并在电子表格_excel_writer中的工作簿中进行修改?
-
22-10-2019 - |
题
问题在于,我无法将工作表:: SetInputencododing设置为未创建的工作表,但是我需要以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格式实际上支持表格名称中的Unicode Chars。表格非常限制
我已经切换了我的大部分Excel纸一代,现在使用Phpexcel,也许适合您
不隶属于 StackOverflow