SpringBoot+jxls根据Excel模板实现数据填写并导出

 项目结构

 pom.xml

         <!--jxls导出依赖jar包-->
        <dependency>
            <groupId>net.sf.jxls</groupId>
            <artifactId>jxls-core</artifactId>
            <version>1.0.6</version>
            <scope>compile</scope>
        </dependency>

学生信息表模板:

ExcelUtiles

import net.sf.jxls.transformer.XLSTransformer;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.util.ResourceUtils;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Map;

/**
 * @ProjectName: Student
 * @Package: cn.utils
 * @Author: huat
 * @Date: 2020/5/7 8:53
 * @Version: 1.0
 */
public class ExcelUtiles {
    /**
     * 输出表格
     * @param map 表格中数据
     * @param response 响应
     * @param excelName 表格名称
     * @param excelPath 表格模板保存的路径
     */
    public static void outExcel(Map<String,Object> map,HttpServletResponse response,String excelName,String excelPath){
        File file=null;
        try {
            file= ResourceUtils.getFile(excelPath);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        //配置下载路径
        String path = StaticUrl.getFileUrl()+"down\";
        createDir(new File(path));

        //根据模板生成新的excel
        File excelFile = createNewFile(map, file, path,excelName);

        //浏览器端下载文件
        try {
            downloadFile(response, excelFile,excelName);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        //删除服务器生成文件
        deleteFile(excelFile);

    }

    /**
     * 根据excel模板生成新的excel
     * @param beans 表格中的数据
     * @param file 文件
     * @param path 生成文件的位置
     * @param excelName 文件名称
     * @return
     */
    private static File createNewFile(Map<String, Object> beans, File file, String path,String excelName) {
        XLSTransformer transformer = new XLSTransformer();


        File newFile = new File(path + excelName+".xlsx");


        try (InputStream in = new BufferedInputStream(new FileInputStream(file));
             OutputStream out = new FileOutputStream(newFile)) {
            Workbook workbook = transformer.transformXLS(in, beans);
            workbook.write(out);
            out.flush();
            return newFile;
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        return newFile;
    }

    /**
     * 将服务器新生成的excel从浏览器下载
     * @param response 响应
     * @param excelFile 表格文件
     * @param excelName 表格名称
     * @throws UnsupportedEncodingException
     */
    private static void downloadFile(HttpServletResponse response, File excelFile,String excelName) throws UnsupportedEncodingException {

        /* 设置文件头:最后一个参数是设置下载文件名 */
        response.setHeader("Content-type","application/vnd.ms-excel");
        // 解决导出文件名中文乱码
        response.setCharacterEncoding("UTF-8");
        response.setHeader("Content-Disposition","attachment;filename="+new String(excelName.getBytes("UTF-8"),"ISO-8859-1")+".xlsx");

        try (
                InputStream ins = new FileInputStream(excelFile);
                OutputStream os = response.getOutputStream()
        ) {
            byte[] b = new byte[1024];
            int len;
            while ((len = ins.read(b)) > 0) {
                os.write(b, 0, len);
            }
        } catch (IOException ioe) {
            ioe.printStackTrace();
        }
    }

    /**
     * 浏览器下载完成之后删除服务器生成的文件
     * 也可以设置定时任务去删除服务器文件
     *
     * @param excelFile
     */
    private static void deleteFile(File excelFile) {

        excelFile.delete();
    }

    //如果目录不存在创建目录 存在则不创建
    private static void createDir(File file) {
        if (!file.exists()) {
            file.mkdirs();
        }
    }
}

 controller

@RequestMapping("downExcel")
    public void downExecl(HttpServletResponse response){
        Map<String,Object> map=new HashMap<String,Object>();
        map.put("name","学生信息表");
       //获取学生信息
        map.put("studentList",studentService.getStudent());
       //"classpath:static/excel/学生表格.xlsx"   表格模板保存路径,classpath:代表resources路径
        ExcelUtiles.outExcel(map,response,"学生信息表",StaticUrl.getFileUrl()+"学生信息表.xlsx");
    }

StaticUrl

import org.springframework.util.ResourceUtils;

import java.io.FileNotFoundException;

/**
 * @ProjectName: ycbdqn
 * @Package: cn.utils 上传文件路径
 * @Author: huat
 * @Date: 2020/3/5 13:39
 * @Version: 1.0
 */
public class StaticUrl {
   
    public static String getFileUrl(){
        String   systemPath =null;
        try {
             systemPath = ResourceUtils.getURL("classpath:").getPath().replace("%20", " ").replace('/', '\').substring(1);//从路径字符串中取出工程路径
            systemPath=systemPath.substring(0,systemPath.lastIndexOf("Student"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        int result=systemPath.indexOf("\");
        if(-1!=result){
            systemPath=systemPath.substring(result).replace("/","\");

        }

        return systemPath+"file\";
       // return "E:\IDEA\file\";
    }
}

帆仔哟
关注 关注
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
java高效导出excel
chengyuhao3875的博客
05-19 195
package com.lenovo.btcp.modules.tools; import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStre...
Spring Boot 引入 Jxls 导出数据Excel 表格 -- 仅使用 Excel 模板
十七的博客
07-19 1142
Spring Boot 引入 Jxls 导出数据Excel 表格 -- 仅使用 Excel 模板
SpringBoot集成jxls2实现复杂(多表格)excel导出
最新发布
Jonny的博客
05-09 494
下本地开发工具直接运行可以访问,打包jar后也许访问不到,这种情况如果出现了的话,要么就把模板文件放到服务器本地磁盘,通过文件路径读取,而不是从demo.jar!导出需要的是一个图片文件的byte数组。导出多个表格,包含图片,类似商品标签。创建一个xlsx的模板文件,配置如下。
SpringBoot+Jxls
weixin_30640291的博客
08-08 602
1.导入jar包<!-- https://mvnrepository.com/artifact/org.jxls/jxls --><dependency> <groupId>org.jxls</groupId> <artifactId>jxls</artifactId> <version>2....
Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
编程随想随行随心
11-15 1290
【代码】Spring Boot 导出EXCEL模板以及导入EXCEL数据(阿里Easy Excel实战)
Spring-Boot快速集成jxls-poi (自定义模板,支持本地文件导出,在线文件导出)
qq_42271561的博客
09-05 1917
Spring-Boot快速集成jxls-poi (自定义模板,支持本地文件导出,在线文件导出) 在项目持续集成的过程中,有时候需要实现报表导出和文档导出,类似于excel中这种文档的导出,在要求不高的情况下,有人可能会考虑直接导出csv文件来简化导出过程。但是导出xlsx文件,其实过程相对更复杂。解决方案就是使用poi的jar包。使用源生的poi来操作表格,代码冗余,处理复杂,同时poi的相关联的依赖还会存在版本兼容问题。所以直接使用poi来实现表格导出,维护成本大,不易于拓展。 我们需要学会站在巨人的肩膀
IDEA+Springboot+gradle+Jxls导出Excel
06-18
1.FreeMarker整合EasyUI实现数据分页展示 2.IDEA+Springboot+gradle框架 3.Jxls导出数据Excel 4.logback整合logstash
SpringBoot(33) 整合JXLS实现Excel导入导出
08-17
SpringBoot(33) 整合JXLS实现Excel导入导出
简单springboot实现Jxls导出excel
04-25
做了一个简单的springboot功能,用maven管理项目,利用jxls实现到处excel功能,jxls使用简单,只需定义一个excel模板,在excel中使用jx公式即可轻松实现,具体可查看项目,运行Application.java的main方法即可启动...
使用JXLS+Excel模板制作灵活的excel导出
04-22
使用JXLS+Excel模板制作灵活的excel导出
SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出)
09-07
主要介绍了SpringBoot快速集成jxls-poi(自定义模板,支持本地文件导出,在线文件导出),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
jxls生成并导出excel所需jar包
01-30
jxls生成并导出excel所需jar包
springboot实现Excel文件导入与导出功能
12-19
springboot实现Excel文件导入与导出功能, 本次任务主要实现两个功能,一是如何将Excel文件导入后台服务器,解析文件中的内容,并且存入数据库中。二是如何将后台数据库中的数据导出Excel表格。经过调研,实现此功能常使用的是POI技术。代码是在以前的项目上修改的,注释掉的内容请忽略。
springboot+poi开发 加载使用Excel模板导出
xie_apple的博客
03-09 1919
Excel模板导出
java导出数据excel模板_springboot+jxls 根据Excel模板 填写数据导出
weixin_39721853的博客
11-29 441
项目结构pom.xml net.sf.jxls jxls-core 1.0.6 compile 学生信息表模板ExcelUtilespackage cn.bdqn.utils;import net.sf.jxls.transformer.XLSTransforme...
JAVA - 根据指定 excel 模板填充数据导出
热门推荐
wuxin1210的博客
12-01 2万+
填充导出的原模板如下 public void exportPublicity(HttpServletResponse response, HttpServletRequest request) throws Exception { // 模板地址 String fileUrl = "J:\\评审意见填报导入模板.xlsx"; File newFile = new File(fileUrl); // 文件存在则删除,保证文件的初始值
java jxls 科学计数_3、进阶之Jxls2的公式使用
weixin_29147589的博客
02-13 970
http://www.chendd.cn/information/viewInformation/other/226.a本章节将引用公式计算来实现计算逻辑,很多时候我们都有需要使用到公式去做计算,虽然在得出一些个结果时可以有别的实现方案,但是使用Excel自带公式计算无疑使最好的一种,生成的导出文件中计算单元格中有按照计算公式填充数据,同时也会有计算公式在里面,用户可以根据需要手工调整相关的参数...
java中sproingboot导出模板导出excel,以及设置每一个单元格的方式导出导出工单,周日历。
zka_yyds的博客
01-10 2836
springboot使用poi技术 导出工单和周日历的方式,本人也是查阅很多网址资料才实现成功,本文仅供参考,为自己做一个记录
java jxls 变量,11、进阶之Jxls2的自定义函数
weixin_33226816的博客
03-13 737
http://www.chendd.cn/information/viewInformation/other/234.a本章节将在导出逻辑中演示使用Jxls2时在模板中使用自定义的函数来处理相关逻辑。自定义函数的功能是我认为这是Jxls2的最出色的亮点了,当然了有些人不知道它能替我们做什么,比如我们可以将后台返回的数据进行格式化,常常是将日期类型、金额类型格式化;将一些格子按其值的大小显示不同的背...
jxls根据复杂模板导出excel
04-02
2. 在Java代码中使用jxls API读取Excel模板文件,并将要填充Excel文件中的数据传递给jxls。 3. 在Excel模板文件中,使用jxls提供的标记语言标记待填充的单元格或区域。 4. 使用jxls API将填充数据Excel文件...

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • case when then else end 以及 if 用法 5155
  • NVM安装(管理Node.js版本) 4928
  • JavaWeb基础分页(一看就会) 4790
  • JS实现小球移动(点击移动,点击停止) 3454
  • xxl-job使用详解(包含部分踩坑信息) 3066

分类专栏

  • Java导出 4篇
  • Java 7篇
  • Linux安装部署 4篇
  • 数据库 2篇
  • mysql 3篇
  • vue 7篇

最新评论

  • JS实现小球移动(点击移动,点击停止)

    爱笑的草莓熊: 好心人

  • Spring Cloud项目如何防止重复提交(自定义注解)

    帆仔哟: 定义的一些基础的Redis枚举 需要的话可以贴出来

  • Spring Cloud项目如何防止重复提交(自定义注解)

    8080!: BaseEnumRedis 这个类没有贴出来,这是干嘛的呢?

  • Stream流的使用详解(持续更新)

    白话机器学习: 写的非常详细,是一篇优质博客,干货满满,让我有了全新的认识,感谢博主分享,让我学到了很多,支持支持。

  • Stream流的使用详解(持续更新)

    白话机器学习: 内容丰富图文并茂,认真看完收获很大。思路清晰细节满满,支持大佬优质好文。

最新文章

  • 超简单的Excel导入
  • Linux一键式安装JDK、Mysql、Redis、Nginx(附带安装包,无需手动配置密码等)
  • Linux下Docker部署中间件(Mysql、Redis、Nginx等)
2024年12篇
2023年22篇
2022年13篇
2021年15篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网起名打分网范姓怎么起名字一个木起名大全处女座运势亚马逊网址宫斗小说推荐和女婿关系几年了怎么办艺术学校起什么名字大全起名雨禾win7图标男孩起名的字有哪些烁字起名含义是什么猫咪 起名时尚饭店起名友谊地久天长英文粤菜馆起名重生铸梦欧阳起名男孩昵称大全网名起名大全免费取名恋爱研究所opcctv电视直播豫剧经典唱段100首空间起名ck电影网站恨君不似江楼月是耽改剧吗元月驰宏锌锗股票五虎将后传3.04下载起名奶茶店铺天珠店铺起名淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化