在使用poi做Excel动态导出时,由于Excel工作表表名不能用下列字符
星号——*
斜杠——/
冒号——:
反斜杠——
方符号——[ 或 ]
问号——?
当存在这些字符时,createSheet()方法会抛出异常,因此需要把这些字符替换掉。
替代的正则表达式如下:
String regex = "(\\*|/|:|\\\\|\\[|\\]|\\?)";
测试示例:
package test;
public class TestRegex {
public static void main(String[] args) {
String str = "1*11/33?232\\323:31[45646]]464123";
System.out.println(str);
String regex = "(\\*|/|:|\\\\|\\[|\\]|\\?)";
str = str.replaceAll(regex, "-") ;
System.out.println(str) ;
}
}
结果输出如下:
1*11/33?232\323:31[45646]]464123
1-11-33-232-323-31-45646--464123
同时,还需要注意,构成工作表的表名字符个数不得超过31个,并且sheet的名字不能使用excel的文件名 。