Correct logic for the start-of-sheet missing rows, for event user model, and add tests for this
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1614789 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
bf860eccf1
commit
f16296111b
@ -86,7 +86,8 @@ public final class MissingRecordAwareHSSFListener implements HSSFListener {
|
|||||||
// the workbook
|
// the workbook
|
||||||
case BOFRecord.sid:
|
case BOFRecord.sid:
|
||||||
BOFRecord bof = (BOFRecord) record;
|
BOFRecord bof = (BOFRecord) record;
|
||||||
if (bof.getType() == bof.TYPE_WORKBOOK || bof.getType() == bof.TYPE_WORKSHEET) {
|
if (bof.getType() == BOFRecord.TYPE_WORKBOOK ||
|
||||||
|
bof.getType() == BOFRecord.TYPE_WORKSHEET) {
|
||||||
// Reset the row and column counts - new workbook / worksheet
|
// Reset the row and column counts - new workbook / worksheet
|
||||||
resetCounts();
|
resetCounts();
|
||||||
}
|
}
|
||||||
@ -106,6 +107,7 @@ public final class MissingRecordAwareHSSFListener implements HSSFListener {
|
|||||||
|
|
||||||
// Record this as the last row we saw
|
// Record this as the last row we saw
|
||||||
lastRowRow = rowrec.getRowNumber();
|
lastRowRow = rowrec.getRowNumber();
|
||||||
|
lastCellColumn = -1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SharedFormulaRecord.sid:
|
case SharedFormulaRecord.sid:
|
||||||
@ -144,7 +146,8 @@ public final class MissingRecordAwareHSSFListener implements HSSFListener {
|
|||||||
// If we're on cells, and this cell isn't in the same
|
// If we're on cells, and this cell isn't in the same
|
||||||
// row as the last one, then fire the
|
// row as the last one, then fire the
|
||||||
// dummy end-of-row records
|
// dummy end-of-row records
|
||||||
if(thisRow != lastCellRow && lastCellRow > -1) {
|
if(thisRow != lastCellRow && thisRow > 0) {
|
||||||
|
if (lastCellRow == -1) lastCellRow = 0;
|
||||||
for(int i=lastCellRow; i<thisRow; i++) {
|
for(int i=lastCellRow; i<thisRow; i++) {
|
||||||
int cols = -1;
|
int cols = -1;
|
||||||
if(i == lastCellRow) {
|
if(i == lastCellRow) {
|
||||||
|
@ -44,4 +44,8 @@ public final class LastCellOfRowDummyRecord extends DummyRecordBase {
|
|||||||
* for the row.
|
* for the row.
|
||||||
*/
|
*/
|
||||||
public int getLastColumnNumber() { return lastColumnNumber; }
|
public int getLastColumnNumber() { return lastColumnNumber; }
|
||||||
|
|
||||||
|
public String toString() {
|
||||||
|
return "End-of-Row for Row=" + row + " at Column=" + lastColumnNumber;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -567,7 +567,18 @@ public final class TestMissingRecordAwareHSSFListener extends TestCase {
|
|||||||
// Now onto the cells
|
// Now onto the cells
|
||||||
|
|
||||||
// Because the 3 first rows are missing, should have last-of-row records first
|
// Because the 3 first rows are missing, should have last-of-row records first
|
||||||
// TODO Fix!
|
assertEquals(LastCellOfRowDummyRecord.class, r[pos].getClass());
|
||||||
|
assertEquals(0, ((LastCellOfRowDummyRecord)r[pos]).getRow());
|
||||||
|
assertEquals(-1, ((LastCellOfRowDummyRecord)r[pos]).getLastColumnNumber());
|
||||||
|
pos++;
|
||||||
|
assertEquals(LastCellOfRowDummyRecord.class, r[pos].getClass());
|
||||||
|
assertEquals(1, ((LastCellOfRowDummyRecord)r[pos]).getRow());
|
||||||
|
assertEquals(-1, ((LastCellOfRowDummyRecord)r[pos]).getLastColumnNumber());
|
||||||
|
pos++;
|
||||||
|
assertEquals(LastCellOfRowDummyRecord.class, r[pos].getClass());
|
||||||
|
assertEquals(2, ((LastCellOfRowDummyRecord)r[pos]).getRow());
|
||||||
|
assertEquals(-1, ((LastCellOfRowDummyRecord)r[pos]).getLastColumnNumber());
|
||||||
|
pos++;
|
||||||
|
|
||||||
|
|
||||||
// Onto row 4 (=3)
|
// Onto row 4 (=3)
|
||||||
|
Loading…
Reference in New Issue
Block a user