Как скрыть следующие неиспользуемые строки в листе Excel, используя Java Apache POI? - PullRequest
4 голосов
/ 03 августа 2011

Я заполняю шаблон листа 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 ?

Цель достижения:

  • Я хочу, чтобы неиспользуемые строки, следующие за заполненными строками, были скрыты?
  • Все заполненные строки должны быть видны.
  • Например: если заполнены первые 100 строк данных,тогда строки после 101 и далее должны быть скрыты.

Пожалуйста, помогите !!

Ответы [ 3 ]

5 голосов
/ 06 апреля 2012
Row r = sheet.getRow(indexRow);
if ( r!=null ) {
    r.setZeroHeight(true);
}
3 голосов
/ 31 августа 2011

row.setRowStye() и row.getRowStye() присутствуют в poi-3.8-beta4.

3 голосов
/ 04 августа 2011

POI распознает количество логических строк на вашем листе при его создании.Таким образом, если вы заполните 100 строк, он создаст 100 записей.Остальные появятся, когда вы откроете XLS в Excel с макетом по умолчанию - но это не записи 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);


            }
...