git-svn-id: https://svn.apache.org/repos/asf/jakarta/poi/trunk@353412 13f79535-47bb-0310-9956-ffa450edef68tags/PERF_BEFORE_MERGE
@@ -194,10 +194,22 @@ public class BoundSheetRecord | |||
/** | |||
* Set the sheetname for this sheet. (this appears in the tabs at the bottom) | |||
* @param sheetname the name of the sheet | |||
* @thows IllegalArgumentException if sheet name will cause excel to crash. | |||
*/ | |||
public void setSheetname( String sheetname ) | |||
{ | |||
if ((sheetname == null) || (sheetname.length()==0) | |||
|| (sheetname.length()>31) | |||
|| (sheetname.indexOf("/") > -1) | |||
|| (sheetname.indexOf("\\") > -1) | |||
|| (sheetname.indexOf("?") > -1) | |||
|| (sheetname.indexOf("*") > -1) | |||
|| (sheetname.indexOf("]") > -1) | |||
|| (sheetname.indexOf("[") > -1) ){ | |||
throw new IllegalArgumentException("Sheet name cannot be blank, greater than 31 chars, or contain any of /\\*?[]"); | |||
} | |||
field_5_sheetname = sheetname; | |||
} | |||
@@ -270,7 +270,9 @@ public class HSSFWorkbook | |||
/** | |||
* set the sheet name. | |||
* set the sheet name. | |||
* Will throw IllegalArgumentException if the name is greater than 31 chars | |||
* or contains /\?*[] | |||
* @param sheet number (0 based) | |||
* @param sheet name | |||
*/ | |||
@@ -371,7 +373,11 @@ public class HSSFWorkbook | |||
windowTwo.setPaged(sheets.size() == 1); | |||
sheets.add(clonedSheet); | |||
workbook.setSheetName(sheets.size()-1, srcName+"[1]"); | |||
if (srcName.length()<28) { | |||
workbook.setSheetName(sheets.size()-1, srcName+"(2)"); | |||
}else { | |||
workbook.setSheetName(sheets.size()-1,srcName.substring(0,28)+"(2)"); | |||
} | |||
return clonedSheet; | |||
} | |||
return null; |
@@ -92,5 +92,25 @@ public class TestBoundSheetRecord | |||
assertEquals(" 2 + 2 + 4 + 2 + 1 + 1 + len(str) * 2", 24, record.getRecordSize()); | |||
} | |||
public void testName() { | |||
BoundSheetRecord record = new BoundSheetRecord(); | |||
record.setSheetname("1234567890223456789032345678904"); | |||
assertTrue("Success", true); | |||
try { | |||
record.setSheetname("12345678902234567890323456789042"); | |||
assertTrue("Should have thrown IllegalArgumentException, but didnt", false); | |||
} catch (IllegalArgumentException e) { | |||
assertTrue("succefully threw exception",true); | |||
} | |||
try { | |||
record.setSheetname("s//*s"); | |||
assertTrue("Should have thrown IllegalArgumentException, but didnt", false); | |||
} catch (IllegalArgumentException e) { | |||
assertTrue("succefully threw exception",true); | |||
} | |||
} | |||
} |
@@ -79,7 +79,7 @@ public class TestCloneSheet extends TestCase { | |||
s.addMergedRegion(new Region((short)0,(short)0,(short)1,(short)1)); | |||
b.cloneSheet(0); | |||
} | |||
catch(Exception e){fail(e.getMessage());} | |||
catch(Exception e){e.printStackTrace();fail(e.getMessage());} | |||
} | |||
} |