Apply patch+test from bug #48325 - If a HSSF header or footer lacks left/right/centre information, assume it is a centre one
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@999320 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
39a185e9a7
commit
32b9522fd4
@ -34,6 +34,7 @@
|
|||||||
|
|
||||||
<changes>
|
<changes>
|
||||||
<release version="3.7-beta3" date="2010-??-??">
|
<release version="3.7-beta3" date="2010-??-??">
|
||||||
|
<action dev="poi-developers" type="fix">48325 - If a HSSF header or footer lacks left/right/centre information, assume it is a centre one</action>
|
||||||
<action dev="poi-developers" type="fix">49966 - Correctly remove calcChain entries for XSSF cells that stop holding formulas</action>
|
<action dev="poi-developers" type="fix">49966 - Correctly remove calcChain entries for XSSF cells that stop holding formulas</action>
|
||||||
<action dev="poi-developers" type="add">47582 - XSSFCellStyle support for creating a style in one workbook based on a style from a different one</action>
|
<action dev="poi-developers" type="add">47582 - XSSFCellStyle support for creating a style in one workbook based on a style from a different one</action>
|
||||||
<action dev="poi-developers" type="fix">49931 - Avoid concurrency problems when re-ordering multiple HSSF header records for a PageSettingsBlock</action>
|
<action dev="poi-developers" type="fix">49931 - Avoid concurrency problems when re-ordering multiple HSSF header records for a PageSettingsBlock</action>
|
||||||
|
@ -40,7 +40,13 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
|
|||||||
String _center = "";
|
String _center = "";
|
||||||
String _right = "";
|
String _right = "";
|
||||||
|
|
||||||
|
outer:
|
||||||
while (text.length() > 1) {
|
while (text.length() > 1) {
|
||||||
|
if (text.charAt(0) != '&') {
|
||||||
|
// Mimics the behaviour of Excel, which would put it in the center.
|
||||||
|
_center = text;
|
||||||
|
break;
|
||||||
|
}
|
||||||
int pos = text.length();
|
int pos = text.length();
|
||||||
switch (text.charAt(1)) {
|
switch (text.charAt(1)) {
|
||||||
case 'L':
|
case 'L':
|
||||||
@ -74,7 +80,9 @@ public abstract class HeaderFooter implements org.apache.poi.ss.usermodel.Header
|
|||||||
text = text.substring(pos);
|
text = text.substring(pos);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw new IllegalStateException("bad text '" + getRawText() + "'.");
|
// Mimics the behaviour of Excel, which would put it in the center.
|
||||||
|
_center = text;
|
||||||
|
break outer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return new String[] { _left, _center, _right, };
|
return new String[] { _left, _center, _right, };
|
||||||
|
@ -1868,4 +1868,22 @@ if(1==2) {
|
|||||||
assertEquals(1, wb.getNumberOfSheets());
|
assertEquals(1, wb.getNumberOfSheets());
|
||||||
assertEquals("Foo", wb.getSheetAt(0).getRow(0).getCell(0).getRichStringCellValue().toString());
|
assertEquals("Foo", wb.getSheetAt(0).getRow(0).getCell(0).getRichStringCellValue().toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Missing left/right/centre options on a footer
|
||||||
|
*/
|
||||||
|
public void test48325() throws Exception {
|
||||||
|
HSSFWorkbook wb = openSample("48325.xls");
|
||||||
|
HSSFSheet sh = wb.getSheetAt(0);
|
||||||
|
HSSFFooter f = sh.getFooter();
|
||||||
|
|
||||||
|
// Will show as the centre, as that is what excel does
|
||||||
|
// with an invalid footer lacking left/right/centre details
|
||||||
|
assertEquals("Left text should be empty", "", f.getLeft());
|
||||||
|
assertEquals("Right text should be empty", "", f.getRight());
|
||||||
|
assertEquals(
|
||||||
|
"Center text should contain the illegal value",
|
||||||
|
"BlahBlah blah blah ", f.getCenter()
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
BIN
test-data/spreadsheet/48325.xls
Normal file
BIN
test-data/spreadsheet/48325.xls
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user