JAVA 的 EXCEL 数据导入导出—EasyExcel 的方法的实现(实例)
参考链接 :https://www.yuque.com/easyexcel/doc/easyexcel
第一步在pom.xml中导入EasyExcel依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.4</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.2</version>
</dependency>
第二步实体类中添加注解
@Data
public class ProductOutboundDetail implements Serializable {
private static final long serialVersionUID = 1L;
@ExcelProperty("序号")
private Integer num;
@ExcelProperty("品名")
private String productName;
@ExcelProperty("规格")
private String productGrades;
@ExcelProperty("单位")
private String drugUnit;
@ExcelProperty("生产批次")
private String batchNum;
@DateTimeFormat("yyyy-MM-dd")
private Date bestBefore;
@ExcelProperty("单价(元)")
private BigDecimal sellPrice;
@ExcelProperty("数量")
private Integer outboundNum;
@ExcelProperty("金额(元)")
private BigDecimal outmoney;
第三步 制定导出excel模版
- { } 表示表中主体部分的变量
- { . } list集合数据 的时候要注意模板中{.} 多了个点 表示list
在web项目的webapp下新建一个文件夹template用来存放excel模版,导出的时候要引入这个模版。
excel模版制定为
id改为num
注意:
- 表格中品名、规格…字段名需要跟实体类中的名称保持一致
- { } 变量名可以自己定义,也可以跟数据库保持一致
- excel后缀名为.xlsx
第四步 Mapper.xml中写查询sql
<select id="findExcelDataInMasterId" resultType="com.dyt.entity.ProductOutboundDetail">
select product_name,product_grades,drug_unit,outbound_num,sell_price,
outbound_num*sell_price as outmoney,batch_num,best_before
from product_outbound_detail
where master_id = #{
master_id}
</select>
第五步 dao层—impl层—interface接口—Controller层
第一步:List<ProductOutboundDetail> findExcelDataInMasterId (Integer masterId);
第二步:
/**
* 导出excel数据
*/
@Override
public List<ProductOutboundDetail> findExcelDataInMasterId(Integer masterId) {
List<ProductOutboundDetail> excelDataInMasterId = productOutboundDetailDao.findExcelDataInMasterId(masterId);
return excelDataInMasterId;
}
第三步:
List<ProductOutboundDetail> findExcelDataInMasterId (Integer masterId);
BigDecimalUtil ChineseYuanUtil 在分类常用工具中可以找到
第四步:
@ApiOperation(value = "导出出库数据")
@ApiResponses(value = {
@ApiResponse(code = 200, message = "操作成功,返回成功状态码,保存在data集合元素中"),
@ApiResponse(code = 500, message = "内部错误,信息由msg字段返回")
})
@PostMapping("/EasyExcel")
@ResponseBody
public String printEasyExcelTemplate(HttpServletRequest req, HttpServletResponse resp, Integer masterId,String name) throws Exception {
//1.配置下载属性
resp.setContentType("application/x-msdownload");
resp.setCharacterEncoding("utf-8");
//2.设置文件名
String fileName ="大养堂出库表" + "-" + new SimpleDateFormat("yyyy-MM-dd").format(new Date()) + ".xlsx";
//3.查询获取数据列表
List<ProductOutboundDetail> list = productOutboundDetailService.fin