PHPExcel 命名范围不适用于 MS Office 中的特殊字符

PHPExcel Named Ranges not working with special characters in MS Office

我创建了一个依赖下拉列表,如图 here

问题是命名范围在 MS Office 中不能使用特殊字符,如 spaces、方括号、连字符等(下划线有效!),但在 LibreOffice 中工作正常。

$objPHPExcel->addNamedRange( 
    new PHPExcel_NamedRange(
        'New Zealand', 
        $objPHPExcel->getSheetByName('Worksheet 1'), 
        'A1:A2'
    ) 
);

名称 New Zealand 有一个 space 并产生 excel 错误。

我也需要它在 Office 中工作。

引自 MS Excel documentation(amd 重复 Tim Williams 在评论中所说的话)

The following is a list of syntax rules that you need to be aware of when you create and edit names.

  • 有效字符 名称的第一个字符必须是字母、下划线字符 (_) 或反斜杠 (\)。名称中的其余字符可以是字母、数字、句点和下划线字符。

    Note 不能使用大写和小写字符“C”、“c”、“R”或“r”作为定义名称,因为它们都用作 shorthand 用于在“名称”或“转到”文本框中输入当前选定的单元格时选择行或列。

  • 不允许引用单元格名称不能与单元格引用相同,例如 Z$100 或 R1C1。

  • 空格无效 不允许空格作为名称的一部分。使用下划线字符 (_) 和句点 (.) 作为单词分隔符,例如 Sales_Tax 或 First.Quarter.

  • 名称长度名称最多可包含 255 个字符。

  • 区分大小写 名称可以包含大写和小写字母。 Excel 不区分名称中的大小写字符。例如,如果您创建了名称 Sales,然后在同一工作簿中创建了另一个名为 SALES 的名称,Excel 会提示您选择一个唯一的名称。

包含 space 字符的名称可能在 LibreOffice 中有效,但在 MS Office 中无效...唯一在 MS Office 中有效的方法是更改​​名称,以便 MS办公室命名规则适用