• java-jxls根据模板导出excel


    1、pom引入

    <dependency>
        <groupId>org.jxls</groupId>
        <artifactId>jxls</artifactId>
        <version>2.4.7</version>
    </dependency>
    <dependency>
        <groupId>org.jxls</groupId>
        <artifactId>jxls-poi</artifactId>
        <version>1.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.jxls</groupId>
        <artifactId>jxls-jexcel</artifactId>
        <version>1.0.7</version>
    </dependency>

    2、创建excel管理工具类

    public class JxlsUtils {
        /**
         * 根据模板生成excel,新文件放入download文件夹下
         * @param templateFileName 模板文件名
         * @param newFileName 新文件名
         * @param model 填充数据
         * @return 新文件名
         * @throws IOException
         */
        public static String exportExcel(String templateFileName,String newFileName, Map<String, Object> model) throws IOException{
            // 获取模板文件
            InputStream is = new FileInputStream(new File("E://"+templateFileName));
            // 输出
            OutputStream os = new FileOutputStream(RuoYiConfig.getDownloadPath() +newFileName);
            Context context = PoiTransformer.createInitialContext();
            if (model != null) {
                for (String key : model.keySet()) {
                    context.putVar(key, model.get(key));
                }
            }
            JxlsHelper jxlsHelper = JxlsHelper.getInstance();
            Transformer transformer  = jxlsHelper.createTransformer(is, os);
            //获得配置
            JexlExpressionEvaluator evaluator = (JexlExpressionEvaluator)transformer.getTransformationConfig().getExpressionEvaluator();
            //设置静默模式,不报警告
            evaluator.getJexlEngine().setSilent(true);
            //函数强制,自定义功能
            Map<String, Object> funcs = new HashMap<String, Object>();
            funcs.put("utils", new JxlsUtils());    //添加自定义功能
            evaluator.getJexlEngine().setFunctions(funcs);
            //必须要这个,否则表格函数统计会错乱
            jxlsHelper.setUseFastFormulaProcessor(false).processTemplate(context, transformer);
            return newFileName;
        }
    
    }
    

      3、controller中调用方法

    public void exportExcel(){
            // 绑定数据
            Map<String, Object> model = new HashMap<String, Object>();
            String fileName="test.xls";
            model.put("yearT", 2021);//年份
            model.put("monthT", 1);//月份
            JxlsUtils.exportExcel(fileName, fileName, model);//根据模板生成excel
    }

      4、创建excel模板

    (注意:如果你是用的office 2007生成的excel模板,要另存为97-2003版本的。看网上说的。)

    jxls官网:http://jxls.sourceforge.net/getting_started.html

    创建时注意增加批注:例子

     

     (lastCell的范围要大于等于填充数据的最右下角单元格)

    5、遇到的问题

    a.m³单位输入可以使用输入法汉语模式下,输入“立方米”,然后选中m³。

    b.10的几次方输入模板后导出的excel会报错,目前未解决。

  • 相关阅读:
    矩阵Frobenius范数、核范数与奇异值的关系
    范数与正则化
    对偶上升法,增光拉格朗日乘子法,交替方向乘子法
    拉格朗日函数,拉格朗日对偶函数,KKT条件
    relint, 相对内点集的理解
    转:Mac 弹出App can’t be opened because Apple cannot check it for malicious software的解决方法
    数组分块1
    fzu 2275 Game [第八届福建省大学生程序设计竞赛 Problem D]
    fzu 2275 Game [第八届福建省大学生程序设计竞赛 Problem D]
    Plug-in CodeForces
  • 原文地址:https://www.cnblogs.com/webttt/p/14283481.html
Copyright © 2020-2023  润新知