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; }

浙公网安备 33010602011771号