如何将JDBC模板结果导出到Excel工作表

时间:2015-07-21 03:07:13

标签: java sql excel oracle spring-boot

PersonDAO.java:

public List<Map<String, Object>> searchPersons(Person person)  
    String sql = "SELECT * FROM PERSON";
    List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
    return result;
}

如何将result中的数据转换为excel表格下载。

尝试使用Apache POI:

Workbook workbook = new HSSFWorkbook();
Sheet sheet = workbook.createSheet("Person Detail");

Object[][] persons = {
    {"PersonNAmeA", 1001},
    {"PersonNAmeB", 1002},
    {"PersonNAmeC", 1003}, 
};

int rowCount = 0;

for (Object[] person : persona) {
Row row = sheet.createRow(++rowCount);

int columnCount = 0;

for (Object field : person) {
    Cell cell = row.createCell(++columnCount);
    if (field instanceof String) {
        cell.setCellValue((String) field);
    } else if (field instanceof Integer) {
        cell.setCellValue((Integer) field);
    }
}

}


try (FileOutputStream outputStream = new FileOutputStream("PersonDetail.xlsx")) {
workbook.write(outputStream);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

没有错误,但尚未创建PersonDetail.xlsx。代码中可能出现的问题。

任何人都可以帮助解决这个问题。 感谢

1 个答案:

答案 0 :(得分:2)

您可以使用Apache POIJexcelAPI。后者是更轻量级的解决方案。这是一个很好的tutorial如何生成Excel工作表。

您甚至可以生成HTML表并使用HTTP标头提供它:

Content-Type: application/msexcel
Content-Disposition: attachment; filename=NAMEOFWORKSHEET.xls

然后打开,浏览器会提示将页面保存为Excel文档。

How to format data in html

如果您不需要格式化数据,请考虑写入纯CSV流。