mirror of https://github.com/apache/poi.git
remove incorrect method to lookup "upper" table cell. In fact, we don't need it at all.
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1174386 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
07e31b1879
commit
a772eb9e2c
|
@ -183,7 +183,8 @@ public abstract class AbstractWordConverter
|
|||
return colSpan;
|
||||
}
|
||||
|
||||
protected int getNumberRowsSpanned( Table table, int currentRowIndex,
|
||||
protected int getNumberRowsSpanned( Table table,
|
||||
final int[] tableCellEdges, int currentRowIndex,
|
||||
int currentColumnIndex, TableCell tableCell )
|
||||
{
|
||||
if ( !tableCell.isFirstVerticallyMerged() )
|
||||
|
@ -197,6 +198,35 @@ public abstract class AbstractWordConverter
|
|||
TableRow nextRow = table.getRow( r1 );
|
||||
if ( currentColumnIndex >= nextRow.numCells() )
|
||||
break;
|
||||
|
||||
// we need to skip row if he don't have cells at all
|
||||
boolean hasCells = false;
|
||||
int currentEdgeIndex = 0;
|
||||
for ( int c = 0; c < nextRow.numCells(); c++ )
|
||||
{
|
||||
TableCell nextTableCell = nextRow.getCell( c );
|
||||
if ( !nextTableCell.isVerticallyMerged()
|
||||
|| nextTableCell.isFirstVerticallyMerged() )
|
||||
{
|
||||
int colSpan = getNumberColumnsSpanned( tableCellEdges,
|
||||
currentEdgeIndex, nextTableCell );
|
||||
currentEdgeIndex += colSpan;
|
||||
|
||||
if ( colSpan != 0 )
|
||||
{
|
||||
hasCells = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
currentEdgeIndex += getNumberColumnsSpanned(
|
||||
tableCellEdges, currentEdgeIndex, nextTableCell );
|
||||
}
|
||||
}
|
||||
if ( !hasCells )
|
||||
continue;
|
||||
|
||||
TableCell nextCell = nextRow.getCell( currentColumnIndex );
|
||||
if ( !nextCell.isVerticallyMerged()
|
||||
|| nextCell.isFirstVerticallyMerged() )
|
||||
|
@ -211,35 +241,6 @@ public abstract class AbstractWordConverter
|
|||
return picturesManager;
|
||||
}
|
||||
|
||||
protected int getTableCellEdgesIndexSkipCount( Table table, int r,
|
||||
int[] tableCellEdges, int currentEdgeIndex, int c,
|
||||
TableCell tableCell )
|
||||
{
|
||||
TableCell upperCell = null;
|
||||
for ( int r1 = r - 1; r1 >= 0; r1-- )
|
||||
{
|
||||
final TableRow row = table.getRow( r1 );
|
||||
if ( row == null || c >= row.numCells() )
|
||||
continue;
|
||||
|
||||
final TableCell prevCell = row.getCell( c );
|
||||
if ( prevCell != null && prevCell.isFirstVerticallyMerged() )
|
||||
{
|
||||
upperCell = prevCell;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( upperCell == null )
|
||||
{
|
||||
logger.log( POILogger.WARN, "First vertically merged cell for ",
|
||||
tableCell, " not found" );
|
||||
return 0;
|
||||
}
|
||||
|
||||
return getNumberColumnsSpanned( tableCellEdges, currentEdgeIndex,
|
||||
tableCell );
|
||||
}
|
||||
|
||||
protected abstract void outputCharacters( Element block,
|
||||
CharacterRun characterRun, String text );
|
||||
|
||||
|
|
|
@ -557,8 +557,8 @@ public class WordToFoConverter extends AbstractWordConverter
|
|||
if ( tableCell.isVerticallyMerged()
|
||||
&& !tableCell.isFirstVerticallyMerged() )
|
||||
{
|
||||
currentEdgeIndex += getTableCellEdgesIndexSkipCount( table,
|
||||
r, tableCellEdges, currentEdgeIndex, c, tableCell );
|
||||
currentEdgeIndex += getNumberColumnsSpanned(
|
||||
tableCellEdges, currentEdgeIndex, tableCell );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -578,8 +578,8 @@ public class WordToFoConverter extends AbstractWordConverter
|
|||
tableCellElement.setAttribute( "number-columns-spanned",
|
||||
String.valueOf( colSpan ) );
|
||||
|
||||
final int rowSpan = getNumberRowsSpanned( table, r, c,
|
||||
tableCell );
|
||||
final int rowSpan = getNumberRowsSpanned( table,
|
||||
tableCellEdges, r, c, tableCell );
|
||||
if ( rowSpan > 1 )
|
||||
tableCellElement.setAttribute( "number-rows-spanned",
|
||||
String.valueOf( rowSpan ) );
|
||||
|
|
|
@ -76,12 +76,14 @@ public class WordToFoUtils extends AbstractWordUtils
|
|||
{
|
||||
inline.setAttribute( "color", getColor24( characterRun.getIco24() ) );
|
||||
}
|
||||
final int opacity = (int) ( characterRun.getIco24() & 0xFF000000l ) >>> 24;
|
||||
if ( opacity != 0 && opacity != 0xFF )
|
||||
{
|
||||
inline.setAttribute( "opacity",
|
||||
getOpacity( characterRun.getIco24() ) );
|
||||
}
|
||||
/* XLS FO 1.1 doesn't support opacity -- sergey */
|
||||
// final int opacity = (int) ( characterRun.getIco24() & 0xFF000000l )
|
||||
// >>> 24;
|
||||
// if ( opacity != 0 && opacity != 0xFF )
|
||||
// {
|
||||
// inline.setAttribute( "opacity",
|
||||
// getOpacity( characterRun.getIco24() ) );
|
||||
// }
|
||||
if ( characterRun.isCapitalized() )
|
||||
{
|
||||
inline.setAttribute( "text-transform", "uppercase" );
|
||||
|
|
|
@ -662,8 +662,8 @@ public class WordToHtmlConverter extends AbstractWordConverter
|
|||
if ( tableCell.isVerticallyMerged()
|
||||
&& !tableCell.isFirstVerticallyMerged() )
|
||||
{
|
||||
currentEdgeIndex += getTableCellEdgesIndexSkipCount( table,
|
||||
r, tableCellEdges, currentEdgeIndex, c, tableCell );
|
||||
currentEdgeIndex += getNumberColumnsSpanned(
|
||||
tableCellEdges, currentEdgeIndex, tableCell );
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -693,8 +693,8 @@ public class WordToHtmlConverter extends AbstractWordConverter
|
|||
tableCellElement.setAttribute( "colspan",
|
||||
String.valueOf( colSpan ) );
|
||||
|
||||
final int rowSpan = getNumberRowsSpanned( table, r, c,
|
||||
tableCell );
|
||||
final int rowSpan = getNumberRowsSpanned( table,
|
||||
tableCellEdges, r, c, tableCell );
|
||||
if ( rowSpan > 1 )
|
||||
tableCellElement.setAttribute( "rowspan",
|
||||
String.valueOf( rowSpan ) );
|
||||
|
|
Loading…
Reference in New Issue