1 apache POI-HSSF and POI-XSSF 项目介绍URL http://poi.apache.org/spreadsheet/index.html
2 api 文档 http://poi.apache.org/apidocs/
3 下载地址 http://poi.apache.org/download.html
4 jsp 页面代码
$("#export").on("click", function () {
var form = $("<form>");
form.attr('style', 'display:none');
form.attr('target', '');
form.attr('method', 'post');
form.attr('action', "/testproject/export");
nameS= $('<input>');
nameS.attr('type', 'hidden');
nameS.attr('name', 'nameS');
nameS.attr('value', $("#myform input[name='nameS']").val());
createTimeLeft = $('<input>');
createTimeLeft.attr('type', 'hidden');
createTimeLeft.attr('name', 'createTimeLeft');
createTimeLeft.attr('value', $("#myform input[name='createTimeLeft']").val());
createTimeRight = $('<input>');
createTimeRight.attr('type', 'hidden');
createTimeRight.attr('name', 'createTimeRight');
createTimeRight.attr('value', $("#myform input[name='createTimeRight']").val());
$('body').append(form); //将表单放置在web中
//将查询参数控件提交到表单上
form.append(sname);
form.append(createTimeLeft);
form.append(createTimeRight);
form.submit();
});
controller
@RequestMapping(value = "/export")
public void export(HttpServletRequest request, HttpServletResponse response) {
response.setCharacterEncoding("utf-8");
response.setContentType("multipart/form-data");
String fileName = System.currentTimeMillis() + ".xlsx";
response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);
Map<String, Object> mapMessage = new HashMap<String, Object>();
try { //从数据库中得到结果
List<PointwallTasklog> list = queryFromDatabase();
OutputStream out = response.getOutputStream();
SXSSFWorkbook wb = new SXSSFWorkbook(-1);
// turn off auto-flushing and accumulate all rows in memory
wb.setCompressTempFiles(true); //使用gzip压缩,减小空间占用
Sheet sh = wb.createSheet("下载日志");
//设置每一列的宽度,注意 要乘以256,因为1代表excel中一个字符的1/256的宽度
sh.setColumnWidth(0, 40 * 256);
sh.setColumnWidth(1, 40 * 256);
sh.setColumnWidth(2, 22 * 256);
Row rowHeader = sh.createRow(0);
Cell cellHeader = rowHeader.createCell(0);
cellHeader.setCellValue("id");
cellHeader = rowHeader.createCell(1);
cellHeader.setCellValue("name");
cellHeader = rowHeader.createCell(2);
cellHeader.setCellValue("create_time");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
for(int rownum = 1; rownum < list.size() + 1; rownum++) {
Row row = sh.createRow(rownum);
Cell cell = row.createCell(0);
cell.setCellValue(list.get(rownum - 1).getId());
cell = row.createCell(1);
cell.setCellValue(list.get(rownum - 1).getName());
cell = row.createCell(2);
cell.setCellValue(simpleDateFormat.format(list.get(rownum - 1).getCreateTime()));
// manually control how rows are flushed to disk
if(rownum % 100 == 0) { // ((SXSSFSheet)sh).flushRows(100); // retain 100 last rows and flush all others
((SXSSFSheet) sh).flushRows();
//is a shortcut for ((SXSSFSheet)sh).flushRows(0),
// this method flushes all rows
}
}
wb.write(out);
out.close();
// dispose of temporary files backing this workbook on disk
wb.dispose();
} catch(Exception e) {
e.printStacktrace();
}
}
</pre><pre>