]> source.dussan.org Git - poi.git/commitdiff
better handle (i.e. skip) empty cells
authorSergey Vladimirov <sergey@apache.org>
Tue, 13 Sep 2011 16:10:27 +0000 (16:10 +0000)
committerSergey Vladimirov <sergey@apache.org>
Tue, 13 Sep 2011 16:10:27 +0000 (16:10 +0000)
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1170223 13f79535-47bb-0310-9956-ffa450edef68

src/scratchpad/src/org/apache/poi/hssf/converter/ExcelToFoConverter.java

index dd0b826ec8ad0fecd9459d0e427cc988e107520b..0d031396c05206cfaa1c02a889370169ad9cb318 100644 (file)
@@ -40,6 +40,7 @@ import org.apache.poi.hssf.util.HSSFColor;
 import org.apache.poi.hwpf.converter.FoDocumentFacade;
 import org.apache.poi.hwpf.converter.FontReplacer.Triplet;
 import org.apache.poi.ss.formula.eval.ErrorEval;
+import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.util.CellRangeAddress;
 import org.apache.poi.util.Beta;
 import org.apache.poi.util.POILogFactory;
@@ -179,6 +180,22 @@ public class ExcelToFoConverter extends AbstractExcelConverter
         return foDocumentFacade.getDocument();
     }
 
+    /**
+     * Returns <tt>false</tt> if cell style by itself (without text, i.e.
+     * borders, fill, etc.) worth a mention, <tt>true</tt> otherwise
+     * 
+     * @return <tt>false</tt> if cell style by itself (without text, i.e.
+     *         borders, fill, etc.) worth a mention, <tt>true</tt> otherwise
+     */
+    protected boolean isEmptyStyle( CellStyle cellStyle )
+    {
+        return cellStyle.getFillPattern() == 0 //
+                && cellStyle.getBorderTop() == HSSFCellStyle.BORDER_NONE //
+                && cellStyle.getBorderRight() == HSSFCellStyle.BORDER_NONE //
+                && cellStyle.getBorderBottom() == HSSFCellStyle.BORDER_NONE //
+                && cellStyle.getBorderLeft() == HSSFCellStyle.BORDER_NONE; //
+    }
+
     protected boolean processCell( HSSFWorkbook workbook, HSSFCell cell,
             Element tableCellElement, int normalWidthPx, int maxSpannedWidthPx,
             float normalHeightPt )
@@ -255,8 +272,8 @@ public class ExcelToFoConverter extends AbstractExcelConverter
         final boolean noText = ExcelToHtmlUtils.isEmpty( value );
         final boolean wrapInDivs = !noText && !cellStyle.getWrapText();
 
-        final short cellStyleIndex = cellStyle.getIndex();
-        if ( cellStyleIndex != 0 )
+        final boolean emptyStyle = isEmptyStyle( cellStyle );
+        if ( !emptyStyle )
         {
             if ( noText )
             {
@@ -306,13 +323,13 @@ public class ExcelToFoConverter extends AbstractExcelConverter
             block.setAttribute( "keep-together.within-line", "always" );
         }
 
-        processCellStyle( workbook, cell.getCellStyle(), tableCellElement,
-                block );
+        processCellStyle( workbook, cell.getCellStyle(),
+                tableCellElement, block );
 
         block.appendChild( text );
         tableCellElement.appendChild( block );
 
-        return ExcelToHtmlUtils.isEmpty( value ) && cellStyleIndex == 0;
+        return ExcelToHtmlUtils.isEmpty( value ) && emptyStyle;
     }
 
     protected void processCellStyle( HSSFWorkbook workbook,
@@ -358,6 +375,7 @@ public class ExcelToFoConverter extends AbstractExcelConverter
 
         HSSFFont font = cellStyle.getFont( workbook );
         processCellStyleFont( workbook, blockTarget, font );
+
     }
 
     protected void processCellStyleBorder( HSSFWorkbook workbook,