我可以在“添加”此工作表中的工作表中修改工作表的标题,并在电子表格_excel_writer中的工作簿中进行修改?

StackOverflow https://stackoverflow.com/questions/7802197

问题在于,我无法将工作表:: SetInputencododing设置为未创建的工作表,但是我需要以UTF = 8格式设置名称为此工作表。

因此,现在我得到了这个结果:工作表标题中的一些不可读符号。

有什么建议么?

有帮助吗?

解决方案

我的(希望正确的)发现:

  • 工作表名称中的UTF-8仅在BIFF8格式中进行。
  • Spreadsheet_Excel_Writer_Worksheet 构造函数硬码UTF-8作为工作表名称的输入编码。
  • 没有一个可以重命名工作表的方法。

因此,需要对此谨慎:

  1. 尽快将BIFF8设置为格式 \Spreadsheet_Excel_Writer_Workbook::setVersion() (添加了诸如扩展工作表限制之类的好处):

    $workbook->setVersion(8);
    
  2. 如果您不使用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,也许适合您

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top