SpringBoot中EasyExcel相关使用

EasyExcel相关使用

项目基于springBoot、MybatisPlus上开发

导入相关依赖,创建DictEeVo和Dict实体类

DictEeVo对应excel表格中的字段
Dict对应数据库中的字段

		<dependency>
             <groupId>com.aliyun</groupId>
             <artifactId>aliyun-java-sdk-core</artifactId>
            <version>2.1.1</version>
        </dependency>

在controller类中,编写相关方法
ApiOperation为Swagger2中的注解

    @Autowired
    private IDictService dictService;

    //数据字典 导出
    @ApiOperation(value="导出")
    @GetMapping("exportData")
    public void exportData(HttpServletResponse response) throws UnsupportedEncodingException {
            dictService.exportData(response);
    }

    //数据字典 导入
    @ApiOperation(value="导入")
    @PostMapping("importData")
    public void importData(MultipartFile file){
        dictService.importData(file);
    }

使用导出功能,需要创建一个监听器,在invok中定义要输出要执行的方法

public class DictListener extends AnalysisEventListener<DictEeVo> {

    private DictMapper dictMapper;
    //使用构造器,调用dictMapper
    public DictListener(DictMapper dictMapper) {
        this.dictMapper = dictMapper;
    }

    //一行一行读取
    @Override
    public void invoke(DictEeVo dictEeVo, AnalysisContext context) {
        Dict dict = new Dict();
        BeanUtils.copyProperties(dictEeVo,dict);
        dictMapper.insert(dict);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {

    }
}

在Iservice中定义方法接口

public interface IDictService extends IService<Dict> {

    //导出数据字典
    void exportData(HttpServletResponse response) throws UnsupportedEncodingException;

    //导入数字字典
    void importData(MultipartFile file);
}

创建一个实现类,实现接口

@Service
public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements IDictService {

    @Autowired
    private DictMapper dictMapper;

    //导出数据字典
    @Override
    public void exportData(HttpServletResponse response) throws UnsupportedEncodingException {
        //获取文件上传流
        // setContentType:设置发送到客户端的响应的内容类型,此时响应还没有提交。给出的内容类型可以包括字符编码说明,报文头
        response.setContentType("application/vnd.ms-excel");
        response.setCharacterEncoding("utf-8");
        String fileName = URLEncoder.encode("数据字典", "UTF-8");
        /**
         *  setHeader:用给定的名称和值设置响应头,要求客户端进行认证的方式,请求的资源已移动到新地址
         * Content-disposition: 会激活文件下载对话框,它的文件名框自动填充了头中指定的文件名
         * */
        response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
        //查询数据字典信息
        List<Dict> dictsList = dictMapper.selectList(null);
        //导出excel对应字段实体类
        List<DictEeVo> dictEeVos = new ArrayList<>();
        //将dict --> dictEeVo
        for (Dict dict : dictsList) {
            DictEeVo dictEeVo = new DictEeVo();
            BeanUtils.copyProperties(dict,dictEeVo);
            dictEeVos.add(dictEeVo);
        }
        //调用easyExcel导出excel文件,write(流方式,字段表类)
        try {
            EasyExcel.write(response.getOutputStream(),DictEeVo.class).sheet().doWrite(dictEeVos);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //导入数据字典
    @Override
    public void importData(MultipartFile file) {
        try {
            //调用easyExcel导入excel文件,插入到数据库中
            EasyExcel.read(file.getInputStream(),DictEeVo.class,new DictListener(dictMapper)).sheet().doRead();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //判断节点是否含有子节点,设置hasChildren属性
    private boolean isChildren(Long id) {
        QueryWrapper<Dict> wrapper = new QueryWrapper();
        wrapper.eq("parent_id", id);
        Integer count = dictMapper.selectCount(wrapper);
        return count > 0;
    }
}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,关于springboot集成easyexcel的详细使用步骤,我可以给您提供以下代备注: 1. 引入EasyExcel依赖 在项目的pom.xml文件,添加EasyExcel的依赖: ``` <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version> </dependency> ``` 2. 创建Excel对应的实体类 根据您要读取或者生成的Excel文件内容,创建对应的Java实体类,并添加注解。 例如,如果要读取一个包含姓名、年龄、性别信息的Excel文件,可以创建一个如下的实体类: ```java public class User { @ExcelProperty("姓名") private String name; @ExcelProperty("年龄") private Integer age; @ExcelProperty("性别") private String gender; // Getter and Setter } ``` 3. 创建Excel读取或导出的工具类 在springboot项目,可以通过注入类来让Spring容器管理EasyExcel的读取或导出工具类。 例如,在Service类注入EasyExcelService读取或导出Excel文件: ```java @Service public class EasyExcelService { /** * 读取Excel文件 * @param path 文件路径 * @return Excel的数据列表 */ public List<User> readExcel(String path) { List<User> userList = new ArrayList<>(); ExcelReader excelReader = null; try(InputStream inputStream = new FileInputStream(path)) { excelReader = EasyExcel.read(inputStream, User.class, new UserListener(userList)).build(); ReadSheet readSheet = EasyExcel.readSheet(0).build(); excelReader.read(readSheet); } catch (Exception e) { e.printStackTrace(); } finally { if (excelReader != null) { excelReader.finish(); } } return userList; } /** * 导出Excel文件 * @param userList 数据列表 * @param path 文件路径 */ public void writeExcel(List<User> userList, String path) { ExcelWriter excelWriter = null; try { excelWriter = EasyExcel.write(path).head(User.class).build(); WriteSheet writeSheet = EasyExcel.writerSheet(0).build(); excelWriter.write(userList, writeSheet); } catch (Exception e) { e.printStackTrace(); } finally { if (excelWriter != null) { excelWriter.finish(); } } } } ``` 注意,读取Excel文件需要提供一个数据监听器(UserListener),用于获取读取到的数据列表。 4. 调用Excel工具类 在需要使用Excel读取或导出的地方,调用对应的工具类方法即可。 例如,在Controller调用EasyExcelService读取Excel文件,并返回读取结果: ```java @RestController @RequestMapping("/api") public class UserController { @Autowired private EasyExcelService easyExcelService; @GetMapping("/users") public List<User> getUsers(@RequestParam String path) { return easyExcelService.readExcel(path); } } ``` 5. 测试 到这儿,您的springboot项目已经集成了EasyExcel,并可以实现Excel文件的读取或导出了。可以选择一些Excel文件,进行测试验证。 以上就是关于springboot集成easyexcel的详细使用步骤的代备注。请注意,本代备注不代表CSDN或本人对您的使用负责,仅提供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值