Example usage for org.apache.poi.hssf.converter AbstractExcelConverter getColumnWidth

List of usage examples for org.apache.poi.hssf.converter AbstractExcelConverter getColumnWidth

Introduction

In this page you can find the example usage for org.apache.poi.hssf.converter AbstractExcelConverter getColumnWidth.

Prototype

protected static int getColumnWidth(HSSFSheet sheet, int columnIndex) 

Source Link

Usage

From source file:com.wangzhu.poi.ExcelToHtmlConverter.java

License:Apache License

/**
 * Creates COLGROUP element with width specified for all columns. (Except
 * first if <tt>{@link #isOutputRowNumbers()}==true</tt>)
 *//*w w w  .j  a  va 2 s  .c  om*/
protected void processColumnWidths(HSSFSheet sheet, int maxSheetColumns, Element table) {
    // draw COLS after we know max column number
    Element columnGroup = this.htmlDocumentFacade.createTableColumnGroup();
    if (this.isOutputRowNumbers()) {
        columnGroup.appendChild(this.htmlDocumentFacade.createTableColumn());
    }
    for (int c = 0; c < maxSheetColumns; c++) {
        if (!this.isOutputHiddenColumns() && sheet.isColumnHidden(c)) {
            continue;
        }

        Element col = this.htmlDocumentFacade.createTableColumn();
        col.setAttribute("width", String.valueOf(AbstractExcelConverter.getColumnWidth(sheet, c)));
        columnGroup.appendChild(col);
    }
    table.appendChild(columnGroup);
}

From source file:com.wangzhu.poi.ExcelToHtmlConverter.java

License:Apache License

/**
 * @return maximum 1-base index of column that were rendered, zero if none
 *///from  w  w w.ja  v  a 2 s .co  m
protected int processRow(CellRangeAddress[][] mergedRanges, HSSFRow row, Element tableRowElement) {
    final HSSFSheet sheet = row.getSheet();
    final short maxColIx = row.getLastCellNum();
    if (maxColIx <= 0) {
        return 0;
    }

    final List emptyCells = new ArrayList(maxColIx);

    if (this.isOutputRowNumbers()) {
        Element tableRowNumberCellElement = this.htmlDocumentFacade.createTableHeaderCell();
        this.processRowNumber(row, tableRowNumberCellElement);
        emptyCells.add(tableRowNumberCellElement);
    }

    int maxRenderedColumn = 0;
    for (int colIx = 0; colIx < maxColIx; colIx++) {
        if (!this.isOutputHiddenColumns() && sheet.isColumnHidden(colIx)) {
            continue;
        }

        CellRangeAddress range = AbstractExcelUtils.getMergedRange(mergedRanges, row.getRowNum(), colIx);

        if ((range != null)
                && ((range.getFirstColumn() != colIx) || (range.getFirstRow() != row.getRowNum()))) {
            continue;
        }

        HSSFCell cell = row.getCell(colIx);

        int divWidthPx = 0;
        if (this.isUseDivsToSpan()) {
            divWidthPx = AbstractExcelConverter.getColumnWidth(sheet, colIx);

            boolean hasBreaks = false;
            for (int nextColumnIndex = colIx + 1; nextColumnIndex < maxColIx; nextColumnIndex++) {
                if (!this.isOutputHiddenColumns() && sheet.isColumnHidden(nextColumnIndex)) {
                    continue;
                }

                if ((row.getCell(nextColumnIndex) != null) && !this.isTextEmpty(row.getCell(nextColumnIndex))) {
                    hasBreaks = true;
                    break;
                }

                divWidthPx += AbstractExcelConverter.getColumnWidth(sheet, nextColumnIndex);
            }

            if (!hasBreaks) {
                divWidthPx = Integer.MAX_VALUE;
            }
        }

        Element tableCellElement = this.htmlDocumentFacade.createTableCell();

        if (range != null) {
            if (range.getFirstColumn() != range.getLastColumn()) {
                tableCellElement.setAttribute("colspan",
                        String.valueOf((range.getLastColumn() - range.getFirstColumn()) + 1));
            }
            if (range.getFirstRow() != range.getLastRow()) {
                tableCellElement.setAttribute("rowspan",
                        String.valueOf((range.getLastRow() - range.getFirstRow()) + 1));
            }
        }

        boolean emptyCell;
        if (cell != null) {
            emptyCell = this.processCell(cell, tableCellElement,
                    AbstractExcelConverter.getColumnWidth(sheet, colIx), divWidthPx, row.getHeight() / 20f);
        } else {
            emptyCell = true;
        }

        if (emptyCell) {
            emptyCells.add(tableCellElement);
        } else {
            for (Iterator iterator = emptyCells.iterator(); iterator.hasNext();) {
                Element emptyCellElement = (Element) iterator.next();
                tableRowElement.appendChild(emptyCellElement);
            }
            emptyCells.clear();

            tableRowElement.appendChild(tableCellElement);
            maxRenderedColumn = colIx;
        }
    }

    return maxRenderedColumn + 1;
}