在 Java 中,我们使用以下包以编程方式创建 excel 文档:
org.apache.poi.hssf
如果您尝试设置工作表的名称(不是文件,而是内部 Excel 工作表),您将在以下情况下收到错误:
- 名称超过 31 个字符
- 该名称包含以下任何字符: / \ * ? [ ]
但是,在创建工作表名称为以下的文档后:
@#$%&()+~`"':;,.|
没有错误输出,在 Java 中一切正常。当您在 Office 2003 中打开 Excel 文件时,它会给您一条错误消息,指出工作表名称无效,并将其重命名为诸如“工作表 1”之类的通用名称。
我对我们使用的先前声明的包知之甚少,但看起来它没有正确过滤无效的 Excel 工作表名称。知道如何过滤掉所有已知的无效字符吗?我不愿简单地过滤掉所有非单词字符。
我认为问题是冒号,而不是感叹号。
如果您打开 Excel 并尝试手动编辑工作表名称,则它不允许您键入的唯一字符是 [ ] * / \ ? :
如果粘贴其中一个字符,则会出现以下错误:(Excel 2003)