Example usage for org.apache.wicket.extensions.markup.html.repeater.data.table.export IExportableColumn getDisplayModel

List of usage examples for org.apache.wicket.extensions.markup.html.repeater.data.table.export IExportableColumn getDisplayModel

Introduction

In this page you can find the example usage for org.apache.wicket.extensions.markup.html.repeater.data.table.export IExportableColumn getDisplayModel.

Prototype

IModel<String> getDisplayModel();

Source Link

Document

Returns a model of the column header.

Usage

From source file:org.wicketstuff.poi.datatable.export.AbstractExcelDataExporter.java

License:Apache License

/**
 * Exports data to a Excel {@link Workbook}.
 *
 * @param <T> The type of each row in the exported data.
 * @param dataProvider The {@link IDataProvider} from which the row data is retrieved.
 * @param columns A {@link List} of {@link IExportableColumn}s which can be exported.
 * @param outputStream The {@link OutputStream} to which the exported spreadsheet will be written.
 * @throws IOException If an error occurs while exporting the data.
 */// w w w  .  j  av  a 2 s  . c o m
@Override
public <T> void exportData(IDataProvider<T> dataProvider, List<IExportableColumn<T, ?>> columns,
        OutputStream outputStream) throws IOException {
    Workbook workbook = createWorkbook();

    Sheet sheet = workbook.createSheet();

    int rowNumber = 0;

    Row row = sheet.createRow(rowNumber);

    rowNumber++;

    int columnNumber = 0;
    for (IExportableColumn<T, ?> column : columns) {
        Cell cell = row.createCell(columnNumber);
        IModel<String> headerModel = column.getDisplayModel();
        if (headerModel != null) {
            String header = headerModel.getObject();
            populateHeaderCell(cell, header, columnNumber, column, workbook);
        } else {
            populateHeaderCell(cell, null, columnNumber, column, workbook);
        }
        columnNumber++;
    }

    Iterator<? extends T> it = dataProvider.iterator(0, dataProvider.size());
    while (it.hasNext()) {
        T rowObject = it.next();
        IModel<T> rowModel = dataProvider.model(rowObject);

        row = sheet.createRow(rowNumber);
        rowNumber++;

        columnNumber = 0;
        for (IExportableColumn<T, ?> column : columns) {
            Cell cell = row.createCell(columnNumber);
            // rowNumber - 1 because 
            populateCell(cell, rowModel, column, rowNumber - 1, columnNumber, workbook);
            columnNumber++;
        }
    }

    workbook.write(outputStream);
}