Merged revisions 613395-613401 via svnmerge from
https://svn.apache.org/repos/asf/poi/trunk ........ r613395 | yegor | 2008-01-19 15:27:02 +0100 (Sat, 19 Jan 2008) | 1 line use JDK 1.4 compatible constructor for IllegalStateException ........ r613396 | yegor | 2008-01-19 15:28:10 +0100 (Sat, 19 Jan 2008) | 1 line add a check to prevent NPE in HSSFSheet.autoSizeColumn(). See Bug 44246 ........ r613400 | yegor | 2008-01-19 15:44:07 +0100 (Sat, 19 Jan 2008) | 1 line added unit tests for closed Bug 37684: Unhandled Continue Record Error ........ r613401 | yegor | 2008-01-19 15:54:06 +0100 (Sat, 19 Jan 2008) | 1 line added a unit test for fixed bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord ........ git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@613822 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
a0a4d90dfa
commit
e421eadd57
@ -187,10 +187,13 @@ public class DVRecord extends Record
|
||||
this.field_not_used_2 = in.readShort();
|
||||
|
||||
//read sec formula data condition
|
||||
// Not sure if this was needed or not...
|
||||
//Not sure if this was needed or not...
|
||||
try {
|
||||
in.skip(this.field_size_sec_formula);
|
||||
} catch(IOException e) { throw new IllegalStateException(e); }
|
||||
} catch(IOException e) {
|
||||
e.printStackTrace();
|
||||
throw new IllegalStateException(e.getMessage());
|
||||
}
|
||||
|
||||
token_pos = 0;
|
||||
while (token_pos < this.field_size_sec_formula)
|
||||
|
@ -1748,27 +1748,28 @@ public class HSSFSheet
|
||||
} else if (cell.getCellType() == HSSFCell.CELL_TYPE_BOOLEAN) {
|
||||
sval = String.valueOf(cell.getBooleanCellValue());
|
||||
}
|
||||
if(sval != null) {
|
||||
String txt = sval + defaultChar;
|
||||
str = new AttributedString(txt);
|
||||
copyAttributes(font, str, 0, txt.length());
|
||||
|
||||
String txt = sval + defaultChar;
|
||||
str = new AttributedString(txt);
|
||||
copyAttributes(font, str, 0, txt.length());
|
||||
|
||||
layout = new TextLayout(str.getIterator(), frc);
|
||||
if(style.getRotation() != 0){
|
||||
/*
|
||||
* Transform the text using a scale so that it's height is increased by a multiple of the leading,
|
||||
* and then rotate the text before computing the bounds. The scale results in some whitespace around
|
||||
* the unrotated top and bottom of the text that normally wouldn't be present if unscaled, but
|
||||
* is added by the standard Excel autosize.
|
||||
*/
|
||||
AffineTransform trans = new AffineTransform();
|
||||
trans.concatenate(AffineTransform.getRotateInstance(style.getRotation()*2.0*Math.PI/360.0));
|
||||
trans.concatenate(
|
||||
AffineTransform.getScaleInstance(1, fontHeightMultiple)
|
||||
);
|
||||
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
|
||||
} else {
|
||||
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
|
||||
layout = new TextLayout(str.getIterator(), frc);
|
||||
if(style.getRotation() != 0){
|
||||
/*
|
||||
* Transform the text using a scale so that it's height is increased by a multiple of the leading,
|
||||
* and then rotate the text before computing the bounds. The scale results in some whitespace around
|
||||
* the unrotated top and bottom of the text that normally wouldn't be present if unscaled, but
|
||||
* is added by the standard Excel autosize.
|
||||
*/
|
||||
AffineTransform trans = new AffineTransform();
|
||||
trans.concatenate(AffineTransform.getRotateInstance(style.getRotation()*2.0*Math.PI/360.0));
|
||||
trans.concatenate(
|
||||
AffineTransform.getScaleInstance(1, fontHeightMultiple)
|
||||
);
|
||||
width = Math.max(width, layout.getOutline(trans).getBounds().getWidth() / defaultCharWidth);
|
||||
} else {
|
||||
width = Math.max(width, layout.getBounds().getWidth() / defaultCharWidth);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
BIN
src/testcases/org/apache/poi/hssf/data/37684-1.xls
Executable file
BIN
src/testcases/org/apache/poi/hssf/data/37684-1.xls
Executable file
Binary file not shown.
BIN
src/testcases/org/apache/poi/hssf/data/37684-2.xls
Executable file
BIN
src/testcases/org/apache/poi/hssf/data/37684-2.xls
Executable file
Binary file not shown.
Binary file not shown.
@ -954,6 +954,63 @@ extends TestCase {
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 37684 : Unhandled Continue Record Error
|
||||
*/
|
||||
public void test37684 () throws Exception {
|
||||
FileInputStream in = new FileInputStream(new File(cwd, "37684-1.xls"));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(in);
|
||||
in.close();
|
||||
|
||||
assertTrue("No exceptions while reading workbook", true);
|
||||
|
||||
//serialize and read again
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
wb.write(out);
|
||||
out.close();
|
||||
assertTrue("No exceptions while saving workbook", true);
|
||||
|
||||
wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
|
||||
assertTrue("No exceptions while reading saved stream", true);
|
||||
|
||||
|
||||
in = new FileInputStream(new File(cwd, "37684-2.xls"));
|
||||
wb = new HSSFWorkbook(in);
|
||||
in.close();
|
||||
|
||||
assertTrue("No exceptions while reading workbook", true);
|
||||
|
||||
//serialize and read again
|
||||
out = new ByteArrayOutputStream();
|
||||
wb.write(out);
|
||||
out.close();
|
||||
assertTrue("No exceptions while saving workbook", true);
|
||||
|
||||
wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
|
||||
assertTrue("No exceptions while reading saved stream", true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord
|
||||
*/
|
||||
public void test41139() throws Exception {
|
||||
FileInputStream in = new FileInputStream(new File(cwd, "41139.xls"));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(in);
|
||||
in.close();
|
||||
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
//serialize and read again
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
wb.write(out);
|
||||
out.close();
|
||||
|
||||
wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -44,79 +44,13 @@ public class TestUnfixedBugs extends TestCase {
|
||||
protected String cwd = System.getProperty("HSSF.testdata.path");
|
||||
|
||||
|
||||
/* ArrayIndexOutOfBound in BOFRecord */
|
||||
public void test28772() throws java.io.IOException {
|
||||
String filename = System.getProperty("HSSF.testdata.path");
|
||||
filename=filename+"/28772.xls";
|
||||
FileInputStream in = new FileInputStream(filename);
|
||||
HSSFWorkbook wb = new HSSFWorkbook(in);
|
||||
assertTrue("Read book fine!" , true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 37684: Unhandled Continue Record Error
|
||||
*
|
||||
* BUT NOW(Jan07): It triggers bug 41026!!
|
||||
*
|
||||
* java.lang.ArrayIndexOutOfBoundsException: 30
|
||||
at org.apache.poi.hssf.record.aggregates.ValueRecordsAggregate.rowHasCells(ValueRecordsAggregate.java:219)
|
||||
*/
|
||||
public void test37684() throws Exception {
|
||||
FileInputStream in = new FileInputStream(new File(cwd, "37684.xls"));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(in);
|
||||
in.close();
|
||||
|
||||
HSSFSheet sheet = wb.getSheetAt( 0 );
|
||||
assertNotNull(sheet);
|
||||
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
//serialize and read again
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
wb.write(out);
|
||||
out.close();
|
||||
|
||||
wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Bug 41139: Constructing HSSFWorkbook is failed,threw threw ArrayIndexOutOfBoundsException for creating UnknownRecord
|
||||
*
|
||||
* BUT NOW (Jan07): It throws the following in write!!
|
||||
* java.lang.RuntimeException: Coding Error: This method should never be called. This ptg should be converted
|
||||
at org.apache.poi.hssf.record.formula.AreaNPtg.writeBytes(AreaNPtg.java:54)
|
||||
at org.apache.poi.hssf.record.formula.Ptg.serializePtgStack(Ptg.java:384)
|
||||
at org.apache.poi.hssf.record.NameRecord.serialize(NameRecord.java:544)
|
||||
at org.apache.poi.hssf.model.Workbook.serialize(Workbook.java:757)
|
||||
at org.apache.poi.hssf.usermodel.HSSFWorkbook.getBytes(HSSFWorkbook.java:952)
|
||||
at org.apache.poi.hssf.usermodel.HSSFWorkbook.write(HSSFWorkbook.java:898)
|
||||
|
||||
*/
|
||||
public void test41139() throws Exception {
|
||||
FileInputStream in = new FileInputStream(new File(cwd, "41139.xls"));
|
||||
HSSFWorkbook wb = new HSSFWorkbook(in);
|
||||
in.close();
|
||||
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
//serialize and read again
|
||||
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||
wb.write(out);
|
||||
out.close();
|
||||
|
||||
wb = new HSSFWorkbook(new ByteArrayInputStream(out.toByteArray()));
|
||||
assertTrue("No Exceptions while reading file", true);
|
||||
|
||||
}
|
||||
|
||||
public void test43493() throws Exception {
|
||||
// Has crazy corrup subrecords on
|
||||
// a EmbeddedObjectRefSubRecord
|
||||
File f = new File(cwd, "43493.xls");
|
||||
HSSFWorkbook wb = new HSSFWorkbook(
|
||||
new FileInputStream(f)
|
||||
);
|
||||
}
|
||||
public void test43493() throws Exception {
|
||||
// Has crazy corrup subrecords on
|
||||
// a EmbeddedObjectRefSubRecord
|
||||
File f = new File(cwd, "43493.xls");
|
||||
HSSFWorkbook wb = new HSSFWorkbook(
|
||||
new FileInputStream(f)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user