【发布时间】:2017-09-02 19:34:56
【问题描述】:
我正在尝试使用Apache POI 将tableView 导出到excel
一切都很好,但我需要导出所有表格,而不仅仅是项目,我的意思是在使用此代码时使用列名:
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet spreadsheet = workbook.createSheet("sample");
HSSFRow row = null;
for (int i = 0; i < TousEmpSusp.getItems().size(); i++) {
row = spreadsheet.createRow(i);
for (int j = 0; j < TousEmpSusp.getColumns().size(); j++) {
row.createCell(j).setCellValue(TousEmpSusp.getColumns().get(j).getCellData(i).toString());
}
}
它只导出项目,我尝试这样修改它:
for (int j = 0; j < TousEmpView.getColumns().size(); j++) {
row.createCell(j).setCellValue(TousEmpView.getColumns().get(j).getText());
}
for (int i = 0; i < TousEmpView.getItems().size(); i++) {
row = spreadsheet.createRow(i+1);
for (int j = 0; j < TousEmpView.getColumns().size(); j++) {
row.createCell(j).setCellValue(TousEmpView.getColumns().get(j).getCellData(i).toString());
}
}
但它调用IndexOutOfBoundsException。
那么如何使用列名导出tableView?我应该修改什么?
【问题讨论】:
-
看起来这段代码应该可以正确执行,你能指出它在哪一行抛出
IndexOutOfBoundsException吗? -
是的,这段代码工作正常,但它不显示列名,它从表视图的第一项开始,当我使用 i=1 时,它会调用 IndexOutOfBoundsException。
-
您使用的是哪个 JDK 版本和 Apache POI 版本?你确定你没有在你的 for 循环中使用类似:
j <= TousEmpView.getColumns().size()的东西吗?这将在迭代i = TousEmpView.getColumns().size()时引发异常。 -
我的问题是如何从列标题名称开始导出 tableView,我的代码从 tableView 的一项开始。使用此代码
row.createCell(j).setCellValue(TousEmpView.getColumns() .get(j).getText());可以获得列名,但我有一个技巧可以将此行添加到我的代码中。
标签: java apache-poi javafx-8