使用poi来生成excel,遇到的了一个坑。
sheet页的名字最后面加上了业务id,肯定是不一样的。但是在创第二个sheet时就是报sheet name已存在。
原因是我创建的sheet name的固定前缀太长了,最长不能超过32位,超过了会被自动截取为32位。
public boolean doesContainsSheetName(String name, int excludeSheetIdx) { String aName = name; if(name.length() > 31) { aName = name.substring(0, 31); } for(int i = 0; i < this.boundsheets.size(); ++i) { BoundSheetRecord boundSheetRecord = this.getBoundSheetRec(i); if(excludeSheetIdx != i) { String bName = boundSheetRecord.getSheetname(); if(bName.length() > 31) { bName = bName.substring(0, 31); } if(aName.equalsIgnoreCase(bName)) { return true; } } } return false; }