【问题标题】:How to hide the following Un-used rows in Excel sheet using Java Apache POI?如何使用 Java Apache POI 在 Excel 工作表中隐藏以下未使用的行?
【发布时间】:2011-08-03 18:48:51
【问题描述】:

我正在使用数据库中的数据填充模板 Excel 工作表:

 for (Map<String, Object> resultRow : dbResults) {
        if ((currentRow = sheet.getRow(currentDataRow)) == null) {
            currentRow = sheet.createRow(currentDataRow);   // Creates a new row.
        }
        //currentRow.getRowStyle().setHidden(false);

        for (int i = 0; i < resultColumns; i++) {
            currentCell = currentRow.getCell(i, Row.CREATE_NULL_AS_BLANK);
            setCellValue(currentCell, resultRow.get(dbcolumnNames[i]));
        }
        currentDataRow += 1;
    }

// How to hide all empty/Un-used rows following currentDataRow ?

目标实现:

  • 我希望隐藏填充行之后的 Un-Used 行?
  • 所有填充的行都必须可见。
  • 例如:如果第 100 个数据行已填充,则应隐藏第 101 行及以后的行。

请帮忙!!

【问题讨论】:

    标签: java excel apache-poi rows


    【解决方案1】:
    Row r = sheet.getRow(indexRow);
    if ( r!=null ) {
        r.setZeroHeight(true);
    }
    

    【讨论】:

    • 其实这是一种解决方法,但不是我想要的!
    • 根据我的测试,这完全对应于行标题右键菜单中可用的隐藏/显示行功能。
    【解决方案2】:

    POI 会在您创建工作表时识别工作表中的逻辑行数。 因此,当您使用 100 行填充它时,它将创建 100 条记录。其余部分将在您使用默认布局在 Excel 中打开 XLS 时出现 - 但这些不是 POI 记录。

    您必须像这样在最后一条数据记录之后创建一些虚拟行

    for (int i=currentDataRow ;i<65000;i++)
                    sheet.createRow(i);
    

    创建单元格样式,并将其设置为隐藏

    CellStyle hiddenstyle = workBook.createCellStyle();
    hiddenstyle.setHidden(true);
    

    为从最后一行到工作表末尾的所有行设置此样式

    while (rows.hasNext()){
                    Row row1 = rows.next ();
                    row1.setRowStyle(hiddenstyle);
    
    
                }
    

    【讨论】:

    • 我会试试你的答案,稍后会告诉你结果。
    • 我不知道朋友发生了什么事..row.setRowStye() method not found。同样,找不到 row.getRowStyle() 方法。实际上,我已经有了解决方案,但它不起作用。我不知道为什么 - 当它在 API 文档中给出时,但在我的程序中使用时不起作用。天知道!
    • Yap.. 我使用的是最新的 3.7.. 很奇怪!
    【解决方案3】:

    row.setRowStye()row.getRowStye() 存在于 poi-3.8-beta4 中。

    【讨论】:

    • 不能说 3.7 但我使用的是 3.7 beta3 (20100924) 并且它们不存在
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    相关资源
    最近更新 更多