关于Excel导出模板的问题

项目需要在页面添加一个导出Excel表格模板,在Excel中固定几个字段名称,在java代码中以字符流的形式写入。

1.页面上添加一个导出模板按钮,点击导出Excel模板。在前台js中绑定一个click事件,用form表单的请求方式提交到后台。(layer.close();关闭当前的弹框)

      $('#bargeCompanyFormExport').click(function(){
      layer.msg('确认导出文件??', {
time: 0,
btn: ['确认', '再想想'],
yes: function(index) {
top.layer.close(index);
var $form = $('#form_index');
$form.attr('method', 'post');
$form.attr('action', '${rc.contextPath}/boship/exportForm');
$form.submit();
$form.attr('action', '${rc.contextPath}/boship/index');
      return false;
}
});

      })


2.后台接收导出功能的请求,@RequestMapping("/exportForm")  调用service的exportForm()方法,最后返回index页面。

@RequestMapping("/exportForm")
public String exportForm(HttpServletRequest request, HttpServletResponse response) throws Exception {
dnCtnrDetailService.exportForm(response);
return INDEX;
}

    

3.service层的实现方法 (filename的处理目前不支持中文)

@Override
public void exportForm(HttpServletResponse response) {
try {
    HSSFWorkbook wb = new HSSFWorkbook();
    HSSFSheet dockSheet=wb.createSheet("驳船计划");  
    for(int i =0;i<2;i++){
    int yq=i;
HSSFRow yqRow = dockSheet.createRow(yq);  
HSSFCell so_no  = yqRow.createCell(0);
HSSFCell etd_time  = yqRow.createCell(1);
HSSFCell cutTime  = yqRow.createCell(2);
HSSFCell box_type  = yqRow.createCell(3);
HSSFCell sailing_ship  = yqRow.createCell(4);
HSSFCell port  = yqRow.createCell(5);
HSSFCell remark  = yqRow.createCell(6);
if(i==0){
so_no.setCellValue("SO号");
etd_time.setCellValue("ETD");
cutTime.setCellValue("大船截重时间");
box_type.setCellValue("箱型");
sailing_ship.setCellValue("驳船公司");
port.setCellValue("中转港");
remark.setCellValue("备注");
}else{
so_no.setCellValue("SKCA008639");
etd_time.setCellValue("2018/7/4");
cutTime.setCellValue("2018/7/11");
box_type.setCellValue("40HQ");
sailing_ship.setCellValue("广运");
port.setCellValue("香港");
remark.setCellValue("模板样例");
}
    }
        dockSheet.autoSizeColumn(0,true);
dockSheet.autoSizeColumn(1,true);
dockSheet.autoSizeColumn(2,true);
dockSheet.autoSizeColumn(3,true);
dockSheet.autoSizeColumn(4,true);
dockSheet.autoSizeColumn(5,true);
dockSheet.autoSizeColumn(6,true);
response.reset();  
response.setContentType("multipart/form-data"); //自动识别
response.setHeader("Content-disposition", "attachment; filename=shipplane.xls"); 
OutputStream output = response.getOutputStream();
wb.write(output);  
output.flush();
output.close();
} catch (Exception e) {
e.printStackTrace();
}
}


猜你喜欢

转载自blog.csdn.net/qq_38383402/article/details/80977015