前端代码
按钮:
<a href="#" class="btn btn-default" id="btnA" ><i class="fa fa-external-link"></i>${text('导出Execl')}</a>
方法:
$("#btnA").on("click", function() {
var myForm = document.createElement("form");
myForm.method = "post";
myForm.action = "${ctx}/plan/proPlanList/saveExports";
var createInput = document.createElement("input");
createInput.setAttribute("name", "Ids"); // 为input对象设置name
createInput.setAttribute("value", zsr); // 为input对象设置value
myForm.appendChild(createInput);
var p = $("#searchForm").serializeArray();
for (var i in p){
var myInput = document.createElement("input");
myInput.setAttribute("name", p[i].name); // 为input对象设置name
myInput.setAttribute("value", p[i].value); // 为input对象设置value
myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm); // 提交后移除创建的form
js.showMessage('导出成功!');
});
后端代码:
/**
* 导出数据excel
*/
@RequiresPermissions("plan:proPlanList:edit")
@RequestMapping(value = "saveExports")
@ResponseBody
public void saveExports(Employee employee, HttpServletResponse response) throws IOException {
//声明一个工作簿
HSSFWorkbook workbook = new HSSFWorkbook();
//生成一个表格,设置表格名称
HSSFSheet sheet = workbook.createSheet("员工");
//设置表格列宽度为20个字节
sheet.setDefaultColumnWidth(30);
//创建第一行表头
HSSFRow headrow = sheet.createRow(0);
// 设置首行行高
Row row = sheet.getRow(0);
row.setHeightInPoints(25);
//遍历添加表头
List<String> names = new ArrayList<>();
names.add("姓名");
names.add("年龄");
names.add("性别");
for (int i = 0; i < names.size(); i++) {
//创建一个单元格
HSSFCell cell = headrow.createCell(i);
//创建一个内容对象
HSSFRichTextString text = new HSSFRichTextString(names.get(i));
//将内容对象的文字内容写入到单元格中
cell.setCellValue(text);
HSSFCellStyle cellStyle = workbook.createCellStyle();
// 全局字体垂直居中
cellStyle.setAlignment(HorizontalAlignment.CENTER_SELECTION);
cellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
//下边框
cellStyle.setBorderBottom(BorderStyle.THIN);
//左边框
cellStyle.setBorderLeft(BorderStyle.THIN);
//上边框
cellStyle.setBorderTop(BorderStyle.THIN);
//右边框
cellStyle.setBorderRight(BorderStyle.THIN);
// 设置字体样式
HSSFFont font = workbook.createFont();
//字体颜色
font.setColor(HSSFFont.COLOR_RED);
//字体加粗
font.setBold(true);
//字体大小
font.setFontHeightInPoints((short) 13);
cellStyle.setFont(font);
cell.setCellStyle(cellStyle);
}
HSSFCellStyle cellSty = workbook.createCellStyle();
// 全局字体垂直居中
cellSty.setAlignment(HorizontalAlignment.CENTER_SELECTION);
cellSty.setVerticalAlignment(VerticalAlignment.CENTER);
//下边框
cellSty.setBorderBottom(BorderStyle.THIN);
//左边框
cellSty.setBorderLeft(BorderStyle.THIN);
//上边框
cellSty.setBorderTop(BorderStyle.THIN);
//右边框
cellSty.setBorderRight(BorderStyle.THIN);
//获取数据
List<Employee> employeeList = employeeService.getAll()
//放入数据
for (int j = 0; j < employeeList.size(); j++){
Employee ll = employeeList.get(j);
List<String> llss = new ArrayList<>();
llss.add(null == ll.getName() ? "" : ll.getName());
llss.add(null == ll.getAge() ? "" : ll.getAge());
llss.add(null == ll.getSex() ? "" : ll.getSex());
HSSFRow row1 = sheet.createRow(j + 1);
row1.setHeightInPoints(15);
for (int z = 0; z < proPlanSubList1.size(); z++) {
HSSFCell cells = row1.createCell(z);
HSSFRichTextString text = new HSSFRichTextString(llss.get(z));
cells.setCellValue(text);
cells.setCellStyle(cellSty);
}
}
//将Excel的输出流通过response输出到页面下载, 八进制输出流
response.setContentType("application/octet-stream");
//这后面可以设置导出Excel的名称
String exportFileName = "员工.xls";
String fileNameURL = URLEncoder.encode(exportFileName, "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileNameURL + ";" + "filename*=utf-8''" + fileNameURL);
//刷新缓冲
response.flushBuffer();
//workbook将Excel写入到response的输出流中,供页面下载
workbook.write(response.getOutputStream());
}