使用java导入导出Excel文件(easyPoi的使用)

使用easyPoi导入导出excel表格

easypoi详细使用文档点这里>>>easypoi官网教程文档地址
转载请声明出处,谢谢合作哦

1.老规矩,一般使用人家的技术,肯定先导人家的jar包

//这是官网推荐的jar,如果使用过程中有冲突,报乌七八糟错误😎, jar包建议更换到4.0以上

	   <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-base</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-web</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>cn.afterturn</groupId>
            <artifactId>easypoi-annotation</artifactId>
            <version>3.2.0</version>
        </dependency>

2.将需要导出的数据的实体类配置以下注解

		//此处省略getter,setter
		@ExcelTarget(value = "pitcher")
        public class Pitcher implements Serializable {
        
            @Excel(name = "编号")
            private String id;

            @Excel(name = "标题")
            private String name;

            @Excel(name = "图片",type = 2,width = 40 , height = 40,savePath = "上传图片的路经配置,建议使用绝对路径")
            private String path;

            @Excel(name = "状态")
            private String status;

            @JsonFormat(pattern = "yyyy-MM-dd")
            @Excel(name = "创建时间",format = "yyyy-MM-dd",importFormat = "yyyy-MM-dd")
            private Date createTime;

            @JsonFormat(pattern = "yyyy-MM-dd")
            @Excel(name = "修改时间",format = "yyyy-MM-dd",importFormat = "yyyy-MM-dd")
            private Date updateTime;
        }
注意:需要导出图片的话,在图片的属性上额外配置!!!(宽高自行调整):
@Excel(name = "图片",type = 2,width = 40 , height = 40")
private String path;
注意:需要导入图片的话,要想更改图片的保存位置,在图片的属性上配置:
@Excel(name = "图片"savePath = "要保存的位置的相对路径")
 private String path;
注解及其作用:

@ExcelTarget(value = " "):用在实体类上,相当于表的唯一标识
@Excel(name = " ") :用在属性上,name值相当于你要导出的表格的表头。

3.导出表格的代码:(前台ajax无法实现导出功能,也或许是我的有问题,有待有缘人尝试)

前台页面代码:

	<li role="presentation"><a href="javaScript:void(0)" id="out">导出轮播图</a></li>
	//单击事件
  	$("#out").click(function () {
            location.href = "**${path}/pitcher/outExcel**";
   });

controller层代码:

	 /**
     * ---导出
     * @param response 设置响应格式
     */
    @RequestMapping("/**outExcel**")
    @ResponseBody
    public void outExcel(HttpServletResponse response){
		//调用业务层处理导出功能
        **pitcherService.outExcel(response);**
    }

//控制层代码

//导出轮播图(注意:要想导出图片,导出的时候必须将图片的路径设置为绝对路径)
    @Override
    public void **outExcel**(HttpServletResponse response) {

        **List<Pitcher> list = pitcherDao.selectAll();**
        List<Pitcher> **list2** = new ArrayList<>();
        for (Pitcher pitcher : list) {
        	//设置绝对路径
           pitcher.setPath(session.getServletContext().getRealPath("/img")+"/"+pitcher.getPath());
           list2.add(pitcher);
        }

        Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams("持明法州轮播图信息","轮播图"),
                Pitcher.class, **list2**);


        //设置浏览器响应格式
        try {
	        String encode = URLEncoder.encode("pitcher.xls");
	        response.setHeader("content-disposition","attachment;filename="+encode);
	        response.setContentType("application/vnd.ms-excel");
	        workbook.write(response.getOutputStream());
	        workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

3.导入功能(将表格导入到数据库中)
注意:需要导入图片的话,要想更改图片的保存位置,在图片的属性上配置:(默认保存路径:自己项目盘下的\excel\upload\img\Pitcher)
@Excel(name = "图片"savePath = "要保存的位置的相对路径")
 private String path;
注意:导入功能,第一行表头名字必须和自己实体类上属性设置的name值相对应

//前台的代码(这里我使用的是submit事件,ajax序列化获取表单也可以做)

<input type="file" name="file" id="in">
<button type="submit" class="btn btn-primary">导入</button>

//后台:controller层

	 /**
     * ---轮播图的导入
     * @param file excel文件
     */
    @RequestMapping("/inputExcel")
 	 public String inputExcel(MultipartFile file){
        **pitcherService.inputPitcherExcle(file);**
        return "redirect:/index.jsp";
    }

//业务层处理导出功能代码

	//excel上传
    @Override
    public void inputPitcherExcle(MultipartFile file) {

        ImportParams params = new ImportParams();

        params.setTitleRows(1);
        params.setHeadRows(1);
        params.setNeedSave(true);
        List<Pitcher> list = null;
        try {
            list = ExcelImportUtil.importExcel(file.getInputStream(), Pitcher.class, params);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //List<Pitcher> list2 = new ArrayList<>();
        for (Pitcher pitcher : list) {
        	//由于从excel文件中上传的图片路径是默认格式(upload/excelUpload\1.png),需要自己将路径修改为所需格式,使用String的分割
            String[] split = pitcher.getPath().toString().split("\\\\");
            //将最后的图片名字保存到数据库
            pitcher.setPath(split[split.length-1]);
            pitcherDao.insert(pitcher);
        }
    }

效果图:

在这里插入图片描述

~~~~~博客中哪里有写错的或者哪里有问题,希望不吝赐教哦。哪里不懂的可以留言一起讨论学习,大家一起努力,哈哈哈😜👀
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

橡皮擦不去的争执

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值
>