public interface SpreadsheetComponentFactory extends Serializable
Spreadsheet. Use it with
Spreadsheet.setSpreadsheetComponentFactory(SpreadsheetComponentFactory)
. The more custom components you have visible, the slower the spreadsheet
comes. It is a very bad idea to have layouts and complex widgets inside the
spreadsheet.
There are two types of custom components inside the Cells. The ones
returned by
getCustomComponentForCell(Cell, int, int, Spreadsheet, Sheet) are
always visible inside the cells as they are rendered. These components are
unique per cell. Having many of them visible at the same time will decrease
the spreadsheet performance. This method is NOT meant for displaying
images or charts inside the spreadsheet.
The components returned by
getCustomEditorForCell(Cell, int, int, Spreadsheet, Sheet) are shown
as the cells are selected. Thus, they are meant for replacing the default
inline editor in the spreadsheet. These components can be shared with
multiple cells; when a component comes visible inside a cell, the
onCustomEditorDisplayed(Cell, int, int, Spreadsheet, Sheet, Component)
is called with the appropriate parameters making it possible to update custom
editor value to correspond to the cell's value.
The getCustomComponentForCell(Cell, int, int, Spreadsheet, Sheet) is
called first
| Modifier and Type | Method and Description |
|---|---|
com.vaadin.ui.Component |
getCustomComponentForCell(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet)
Should return a unique component that is displayed inside the cell
instead of the cell's value.
|
com.vaadin.ui.Component |
getCustomEditorForCell(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet)
Should return the custom component that is displayed in the cell when it
has been selected.
|
void |
onCustomEditorDisplayed(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet,
com.vaadin.ui.Component customEditor)
This method is called when a cell with a custom editor is displayed (the
cell is selected).
|
com.vaadin.ui.Component getCustomComponentForCell(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet)
Having custom components always visible inside some Spreadsheet cells makes it possible to add some custom functionality into the sheet: ComboBoxes for filtering, Buttons for doing calculations etc.
Note that each component makes the Spreadsheet a little bit slower.
This method is called before
getCustomEditorForCell(Cell, int, int, Spreadsheet, Sheet).
For merged regions, this method is only called for the first cell of the merged region.
cell - Cell that should display the component or null if
the cell doesn't yet exist inside POIrowIndex - 0-basedcolumnIndex - 0-basedspreadsheet - The target Spreadsheet componentsheet - The active sheet of the workbook (never null)null if no component should be
displayed when the cell is not selected.com.vaadin.ui.Component getCustomEditorForCell(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet)
If some cells share the same type of "editor", the same component
instance can be shared for all of those cells. As the component comes
visible in Cell X, the
onCustomEditorDisplayed(Cell, int, int, Spreadsheet, Sheet, Component)
is called with the appropriate parameters. This way, you can update the
editor component value accordingly to the currently selected cell.
This method is called after
getCustomComponentForCell(Cell, int, int, Spreadsheet, Sheet),
if it returned null.
For merged regions, this method is only called for the first cell of the merged region.
cell - Cell that should display the custom editor or
null if the cell doesn't yet exist inside POIrowIndex - 0-basedcolumnIndex - 0-basedspreadsheet - The target spreadsheet componentsheet - The active sheet of the workbook (never null)null if the default editor (input field) should be
used.void onCustomEditorDisplayed(org.apache.poi.ss.usermodel.Cell cell,
int rowIndex,
int columnIndex,
Spreadsheet spreadsheet,
org.apache.poi.ss.usermodel.Sheet sheet,
com.vaadin.ui.Component customEditor)
Note that the Spreadsheet component doesn't automatically update the Cell value if it has a custom editor.
cell - The cell that has the editor, might be null if
the cell doesn't exist it the POI modelrowIndex - 0-basedcolumnIndex - 0-basedspreadsheet - The target spreadsheet componentsheet - The active sheet of the workbook (never null)customEditor - The component that is displayed inside the cellCopyright © 2013–2026 Vaadin Ltd. All rights reserved.