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。代码中可能出现的问题。
任何人都可以帮助解决这个问题。 感谢
答案 0 :(得分:2)
您可以使用Apache POI或JexcelAPI。后者是更轻量级的解决方案。这是一个很好的tutorial如何生成Excel工作表。
您甚至可以生成HTML表并使用HTTP标头提供它:
Content-Type: application/msexcel
Content-Disposition: attachment; filename=NAMEOFWORKSHEET.xls
然后打开,浏览器会提示将页面保存为Excel文档。
如果您不需要格式化数据,请考虑写入纯CSV流。