Java Excel导入导出

本文介绍如何使用 Java POI 框架实现数据库数据与 Excel 文档之间的导入导出功能。通过封装工具类简化操作流程,前端上传文件至后台,解析并保存至数据库;导出时,从数据库读取数据生成 Excel 供下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目要求,把数据库中的数据进行导入导出成Excel文档,利用Java POI框架来进行操作

导入POI的依赖包:

<dependency>

    <groupId>org.apache.poi</groupId>

    <artifactId>poi</artifactId>

    <version>3.17</version>

</dependency>

<dependency>

    <groupId>org.apache.poi</groupId>

    <artifactId>poi-ooxml</artifactId>

    <version>3.17</version>

</dependency>

 

由于工具类封装的代码太多,就不在文章中写中,可以去本人的github或者gitee上下载源码,readme.MD中有说明如何操作封装的源码;

github地址:https://github.com/Chenbin1996/excel.git

gitee地址:https://gitee.com/ruxuanwo/excel.git

接着就可以在业务逻辑层中进行操作,导入的话,需要前端传入一个流,后台根据这个流进行工具类的操作,再将数据插入到数据库中,还有要注意的是,实体类中的注解一定要和传入的内容相对应,String类型可以为空,其他类型不可以,不然导入失败,你想要导入什么内容,就在实体类属性上加上注解。

 

public Result excelImport(MultipartFile file) {

InputStream stream =null;

try{

stream = file.getInputStream();

}catch (IOException e) {

e.printStackTrace();

}

List<Object> list = ExcelImportUtil.importExcel(PmProject.class,stream);

for(Object o : list) {

PmProject pmProject = (PmProject) o;

pmProjectService.save(pmProject);

}

if(list != null|| list.size() != 0){

returnResponseMsgUtil.success(null);

}else{

returnResponseMsgUtil.failure();

}

}

 

 

 

 

导出的话看你想要导出什么字段内容给客户,如果客户是要这张表的所有内容,那就查出所有内容,利用工具类操作,将查到的所有内容生成文档供客户下载,下载的话只需要更改一下前端的请求数据表头即可;若只要几个字段的内容,那就需要另做查询,将需要的几个字段查出导出

 

public Result excelExport(HttpServletResponse response) {

List<PmProject> list =pmProjectService.findAll(); //这里我是查询出所有

Workbook sheets = ExcelExportUtil.exportWorkbook(list);

try{

response.setContentType("application/vnd.ms-excel;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

response.addHeader("Content-Disposition","attachment;filename=" + new String(Constant.EXPORT_NAME.getBytes(),"ISO-8859-1") + ".xls");

OutputStream stream = response.getOutputStream();

sheets.write(stream);

stream.flush();

stream.close();

}catch(IOException e){

e.printStackTrace();

returnResponseMsgUtil.failure();

}

return ResponseMsgUtil.success(null);

}

new String(Constant.EXPORT_NAME.getBytes(),是用户下载之后文档的名称,这里是定义的一个常量类中的一个名称,什么表就什么名字导出

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值