1.先引入hutool的相关依赖
<!--hutool-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.4</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>4.1.2</version>
</dependency>
2.导出
创建一个Controller进行测试
@GetMapping(path = "/export")
public void export(HttpServletResponse response,OrderPageRequest orderPageRequest)throws IOException { {
// 查询导出订单数据
List<OrdereExportView> ordereList = getOrdereList(orderPageRequest);
if (CollectionUtils.isEmpty(ordereList)) {
throw new BusinessException("暂无数据!");
}
//在内存操作,写到浏览器
ExcelWriter writer = ExcelUtil.getWriter(true);
//自定义标题别名
writer.addHeaderAlias("orderCode", "订单编码");
writer.addHeaderAlias("addressName", "送达方名称");
writer.addHeaderAlias("amount", "订单金额");
writer.addHeaderAlias("orderStatusDesc", "订单状态");
writer.addHeaderAlias("createTime", "创建时间");
writer.addHeaderAlias("submitTime", "提交时间");
writer.addHeaderAlias("createTime", "创建时间");
//只保留别名的数据
writer.setOnlyAlias(true);
// 默认配置
writer.write(ordereList, true);
// 设置单元格样式
StyleSet style = writer.getStyleSet();
CellStyle numberStyle = style.getCellStyleForNumber();
DataFormat dataFormat = writer.getWorkbook().createDataFormat();
// 保留3位小数
numberStyle.setDataFormat(dataFormat.getFormat("0.000"));
for (int i = 0; i < ordereList.size() + 1; i++) {
writer.setStyle(numberStyle, 3, i);
}
// 设置content—type
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset:utf-8");
// 设置标题
String fileName = URLEncoder.encode("订单导出", "UTF-8");
//Content-disposition是MIME协议的扩展,MIME协议指示MIME用户代理如何显示附加的文件。
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
ServletOutputStream outputStream = response.getOutputStream();
//将Writer刷新到OutPut
writer.flush(outputStream, true);
outputStream.close();
writer.close();
}
3.导出效果
文章来源:https://www.toymoban.com/news/detail-729816.html
4.Excel 表格导入 实现
文章来源地址https://www.toymoban.com/news/detail-729816.html
@PostMapping(path="/import")
public List<OrderItemResponse> importData(@RequestParam("file") MultipartFile file) throws IOException {
//字节输入流
InputStream inputStream = file.getInputStream();
//通过输入流创建ExcelReader 对象
ExcelReader reader = ExcelUtil.getReader(inputStream);
// 获取模板第一行第一列判断模板是否正确
if (!"*客户物料号".equals(reader.getOrCreateRow(0).getCell(0).toString())) {
throw new BusinessException("请按正确的模板导入!");
}
// 导入模板的列名要跟这个一致 不然字段是映射不上
reader.addHeaderAlias("*客户物料号","customerSkuCode");
reader.addHeaderAlias("*物料号","skuCode");
reader.addHeaderAlias("*数量","quantity");
reader.addHeaderAlias("*单位","unitDesc");
List<OrderItemResponse> list = reader.readAll(OrderItemResponse.class);
for (int i = 0; i < list.size(); i++) {
OrderItemResponse item = list.get(i);
// 设置模板行号 用于错误提示
item .setImportNo(i+2);
String msg = "";
// 校验必填
if (CollectionUtils.isNull(item.getSkuCode()){
msg = "客户物料号不能为空;";
}
if (CollectionUtils.isNull(item.getUnitDesc())) {
msg = msg + "数量单位不能为空;";
}
item.setErrorMsg(msg);
}
// 保存
service.BatchAdd(list);
// 把集合返回 用于前端展示成功行/失败行
return list;
}
到了这里,关于Java 使用hutool工具进行导出导入excel表格(代码很简单)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!