基於java的高校就業管理系統設計與實現,可適用於高校就業招聘,大學招聘管理系統,校園招聘系統,就業信息管理系統,畢業招聘系統,畢業就業系統,大學生就業招聘平臺,校園就業信息平臺,校園畢業信息管理平臺,大學生就業招聘,大學生畢業招聘管理平臺等等 ...
說明:本文是jxls根據模板導出Excel直接下載。
使用版本:jxls V2.10.0
excel模板版本:.xlsx格式
jxls官網地址:https://jxls.sourceforge.net/index.html
1、pom引用
<dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-poi</artifactId> <version>2.10.0</version> </dependency> <dependency> <groupId>org.jxls</groupId> <artifactId>jxls-jexcel</artifactId> <version>1.0.8</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-jexl</artifactId> <version>2.1.1</version> </dependency>
2、Controller調用方法
@PostMapping("/export") public AjaxResult export(HttpServletResponse response, Data data) throws IOException { String fileName = "test.xlsx"; Map<String, Object> model = dataService.getExportData(data,fileName);//拼接需要導出的內容 response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); return JxlsUtils.exportExcelWithOS(response.getOutputStream(),fileName, model); }
3、拼接數據
public Map<String, Object> getExportData(Data data,String fileName) { Map<String, Object> model = new HashMap<String, Object>(); // 綁定數據 try { //可綁定單個參數,Excel模板中單元格直接用${test1}獲取 model.put("test1", "ttt"); //可綁定list,使用${item.參數名}獲取,需在列表首個單元格中增加批註 List<Data1> taskItems = new ArrayList<Data1>();//Data1為某個數據類 for (int i=0;i<5;i++) { Data1 d=new Data1; //d.setA("111"); taskItems.add(d); } model.put("taskItems", taskItems); }catch (Exception ex){ logger.error(ex.getMessage()); System.out.println(ex.getMessage()); } return model; }
4、Excel導出方法
import org.apache.commons.jexl3.JexlBuilder; import org.apache.commons.jexl3.JexlEngine; import org.jxls.builder.xls.XlsCommentAreaBuilder; import org.jxls.common.Context; import org.jxls.expression.JexlExpressionEvaluator; import org.jxls.transform.Transformer; import org.jxls.transform.poi.PoiTransformer; import org.jxls.util.JxlsHelper; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.*; import java.util.HashMap; import java.util.Map; public class JxlsUtils { static{ } /** * 根據模板生成文件,直接下載 * @param os 流數據 * @param templateFileName 模板文件名稱 * @param model 填充數據 * @throws IOException */ public static AjaxResult exportExcelWithOS(OutputStream os , String templateFileName, Map<String, Object> model) throws IOException{ // 獲取模板文件 InputStream is = new FileInputStream(new File(模板文件路徑地址 + templateFileName)); try { // 輸出 Context context = PoiTransformer.createInitialContext(); if (model != null) { for (String key : model.keySet()) { context.putVar(key, model.get(key)); } } JxlsHelper.getInstance().setUseFastFormulaProcessor(false).setEvaluateFormulas(true).processTemplate(is, os, context); } catch (Exception ex){ System.out.println(ex.getMessage()); logger.error(ex.getMessage()); return AjaxResult.error(ex.getMessage()); }finally { is.close(); } return AjaxResult.success(); } }
5、Excel模板,創建xlsx格式模板
添加批註,第一個單元格添加範圍批註,jx:area(lastCell="K3")
list列表增加jx:each(items="taskItems" var="item" lastCell="K3")
之前寫過另一種方法,先根據模板生成Excel,然後調用方法導出,可參考:https://www.cnblogs.com/webttt/p/14283481.html