JavaWeb Excel模板下载,核心代码与思路

一,页面

(1)超链接请求后台的模板下载方法:

<a href="${LUI_ContextPath}/wyz/evaluation/wyz_evaluation_group/wyzEvaluationGroupImport.do?method=exportStuTemplate" target="_self" style="color:rgb(51,163,243);"></a>

(2)后台Java方法处理,模板下载。

Action层代码:

public ActionForward exportStuTemplate(ActionMapping mapping,ActionForm form, 
HttpServletRequest request, HttpServletResponse response) throws Exception {
TimeCounter.logCurrentTime("Action-exportStuTemplate", true, getClass());
try{
HSSFWorkbook workbook = ((IWyzEvaluationStuService) getBean("wyzEvaluationStuService"))
.exportStuTemplate(request);
final String modelKey = "wyz-evaluation";
final String modelTitle = ResourceUtil.getString(modelKey + ":" + "table.wyzEvaluationStu",request.getLocale());
response.setHeader("Content-Disposition", "attachment; filename=\""
+ new String((modelTitle + ".xls").getBytes("GBK"),
"iso8859-1")
+ "\"");
response.setHeader("Content-Type", "application/octet-stream");
OutputStream out = response.getOutputStream();
workbook.write(out);
out.close();
return null;
}catch(Exception e){
KmssMessages messages = new KmssMessages();
messages.addError(e);
KmssReturnPage.getInstance(request).addMessages(messages)
.addButton(KmssReturnPage.BUTTON_RETURN).save(request);
return getActionForward("failure", mapping, form, request, response);
}finally{
TimeCounter.logCurrentTime("Action-exportStuTemplate", false, getClass());
}
}

Service层代码:

@Override
    public HSSFWorkbook exportStuTemplate(HttpServletRequest request) throws Exception {
//excel的文档对象。 HSSFWorkbook workbook
= new HSSFWorkbook(); final String modelKey = "wyz-evaluation:wyzEvaluationStu.import."; final String modelTitle = ResourceUtil.getString(modelKey + "template",request.getLocale()); Locale locale = request.getLocale(); // 声明一个表格 excel的sheet。 HSSFSheet sheet = workbook.createSheet(modelTitle); String[] titles = new String[]{ ResourceUtil.getString("page.serial",locale), ResourceUtil.getString( modelKey + ADMIT_TYPE, locale), ResourceUtil.getString( modelKey + PROVINCE, locale), ResourceUtil.getString( modelKey + SOURCE_TYPE, locale), ResourceUtil.getString( modelKey + ENROLL_YEAR, locale), ResourceUtil.getString( modelKey + STU_NO, locale) };
//初始化excel的,行。 HSSFRow headRow
= initRow(sheet, 0, titles.length); for (int i = 0; i < titles.length; i++) { int width = 4000; switch(i){ case 0: case 9: width = 2000; break; case 1: case 11: case 13: case 14: case 19: case 21: case 22: width = 6000; break; default: } headRow.getCell(i).setCellValue(titles[i]); sheet.setColumnWidth(i, width); } return workbook; }

初始化标题行

private HSSFRow initRow(HSSFSheet sheet, int rowNum, int colNum) {
        //创建行,参数为,创建第几行。
        HSSFRow row = sheet.createRow(rowNum);
         //设置行的高度
        row.setHeightInPoints(15);
        for (int i = 0; i < colNum; i++) {
            HSSFCell cell = row.createCell(i);
            //设置空值初始化表格。
            cell.setCellValue("");
        }
        return row;
    }

 

posted @ 2020-03-30 10:58  花开岁月无须时  阅读(364)  评论(0)    收藏  举报