I\'m working on importing data from an Excel file into a Java JTable. I can import all the sheet, but I want to import only some rows. This is the code I\
Starting from this complete example, the following code creates a table having the indicated number of COLUMNS from MIN_ROW to MAX_ROW, inclusive.

private static final int COLUMNS = 4;
private static final int MIN_ROW = 3;
private static final int MAX_ROW = 5;
…
DataFormatter format = new DataFormatter();
DefaultTableModel model = new DefaultTableModel(0, COLUMNS);
for (Row row : sheet) {
if (row.getRowNum() >= MIN_ROW && row.getRowNum() <= MAX_ROW) {
Vector rowData = new Vector();
for (Cell cell : row) {
rowData.add(format.formatCellValue(cell));
}
model.addRow(rowData);
}
}
…
JFrame f = new JFrame("TableTest");
f.add(new JTable(model));
Addendum: Looking closer at your current approach, you may want to accommodate non-contiguous rows. It may help to replace your array with a List<Integer>. You can then use contains() in place of the predicate above:
if (a.contains(row.getRowNum()) {…}
Addendum: To evaluate formulae, you can pass a FormulaEvaluator to formatCellValue().

FormulaEvaluator eval = book.getCreationHelper().createFormulaEvaluator();
…
rowData.add(format.formatCellValue(cell, eval));