Excel 工作表名称的有效字符

2022-09-01 08:12:01

在 Java 中,我们使用以下包以编程方式创建 Excel 文档:

org.apache.poi.hssf

如果尝试设置工作表的名称(不是文件,而是内部 Excel 工作表),则在以下情况下将出现错误:

  • 名称超过 31 个字符
  • 名称包含以下任意字符:/ \ * ?[ ]

但是,在创建工作表名称为以下内容的文档后:

@#$%&()+~'"':;,.|

没有输出任何错误,在Java中一切似乎都很好。当您在Office 2003中打开Excel文件时,它将为您提供一个错误,指出工作表名称无效,并且将其重命名为通用名称,如“工作表1”。

我不太了解我们正在使用的前面所述的包,但看起来它没有正确筛选无效的Excel工作表名称。关于如何过滤掉所有已知的无效字符的任何想法?我犹豫是否要简单地过滤掉所有非单词字符。


答案 1

我认为问题是冒号,而不是感叹号。

如果您打开 Excel 并尝试手动编辑工作表名称,则它不允许您键入的唯一字符是 [ ] * / \ ?:

如果粘贴其中一个字符,则会收到以下错误:(Excel 2003)

重命名工作表或图表时,您输入的名称无效。请尝试以下操作之一:

  • 确保您输入的名称不超过 31 个字符。
  • 请确保名称不包含以下任何字符:: \ / ?* [ 或 ]
  • 确保您没有将名称留空。

答案 2

您可以使用 Apache POI 的 WorkbookUtil.createSafeSheetName(String) 安全地创建工作表名称。

http://poi.apache.org/apidocs/org/apache/poi/ss/util/WorkbookUtil.html


推荐