刚开始,我用的是ajax,后来发现后台生成了Excel,可是前台老是没反应,百度以后才知道这是由于ajax无法弹出保存下载对话框导致的。所以我就直接使用了form表单提交
前台代码如下:
<form method="post" action="/ODSMSPortlet/questionF/questionSysF!exportExcel.action">
<input class="btn btn-success" type="submit" value="下载模板"/>
</form>
后台代码如下:
/**
* 导出Excel模板
*/
public void exportExcel() throws IOException{
setDataObject();
try{
//获取输出流
OutputStream out = response.getOutputStream();
//清空response
response.reset();
//设置文件内容下载方式
String fileName = "Template.xls";// 文件名
response.setHeader("Content-Disposition", "attachment; filename="
+ URLEncoder.encode(fileName, "UTF-8"));
response.setContentType("application/x-download; charset=UTF-8");
/***生成Excel***/
// 第一步,创建一个workbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet("模板");
// 第三步,在sheet中添加表头第0行
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
HSSFCell cell = row.createCell(0);
cell.setCellType(0);
cell.setCellValue("账号");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("姓名");
cell.setCellStyle(style);
cell = row.createCell( 2);
cell.setCellValue("区域");
cell.setCellStyle(style);
cell = row.createCell( 3);
cell.setCellValue("权限:0-提问权限,1-转派权限,2-回答权限");
cell.setCellStyle(style);
//设置权限列表内容下拉框选择
String[] limitList = { "0", "1", "2"};
// 加载下拉列表内容
DVConstraint constraint = DVConstraint.createExplicitListConstraint(limitList);
// 设置数据有效性加载在哪个单元格上,四个参数分别是:起始行、终止行、起始列、终止列
CellRangeAddressList regions = new CellRangeAddressList(1,500, 3, 3);
// 数据有效性对象
HSSFDataValidation data_validation_list = new HSSFDataValidation(regions, constraint);
sheet.addValidationData(data_validation_list);
//将excel写入到response输出流
wb.write(out);
response.getOutputStream().flush();
response.getOutputStream().close();
}catch(Exception e){
e.printStackTrace();
}
}
OK,下面链接是之前参考过的文章:
http://www.java17.cn/thread-488-1-1.html
http://blog.youkuaiyun.com/u012116457/article/details/49780677
http://blog.youkuaiyun.com/lk_blog/article/details/7234736