Java 使用hutool工具进行导出导入excel表格(代码很简单)

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.导出效果

4.Excel 表格导入 实现

    @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;
    }

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要在使用Java Hutool工具导出Excel时设置字体颜色,可以使用FontStyle类来完成。FontStyle类中定义了多个方法,其中有一个可以设置字体颜色的方法setBold()。 首先,需要使用ExcelWriter类创建Excel表格,并添加相应的数据。然后,使用CellStyle类对需要设置颜色的单元格进行设置,调用FontStyle类中的setBold()方法设置字体颜色,最后将CellStyle类对象设置到单元格中即可。 以下是示例代码: ``` // 创建ExcelWriter对象 ExcelWriter writer = ExcelUtil.getWriter("test.xlsx"); // 添加表头数据 List<String> header = new ArrayList<>(); header.add("姓名"); header.add("年龄"); header.add("性别"); writer.writeHeadRow(header); // 添加表格数据 List<List<Object>> rows = new ArrayList<>(); for (int i = 1; i <= 5; i++) { List<Object> row = new ArrayList<>(); row.add("张三" + i); row.add(20 + i); row.add("男"); rows.add(row); } writer.write(rows); // 设置字体颜色 CellStyle style = writer.getStyleSet().getCellStyle(); FontStyle fontStyle = style.createFontStyle(); fontStyle.setColor(IndexedColors.RED); style.setFont(fontStyle); // 设置单元格样式 Cell cell = writer.getCell(2, 2); // 获取需要设置颜色的单元格 cell.setCellStyle(style); // 输出Excel writer.flush(); writer.close(); ``` 以上代码中,我们首先创建ExcelWriter对象,并添加表头和表格数据。然后,获取CellStyle类对象,并使用createFontStyle()方法创建FontStyle类对象。调用setColor()方法设置字体颜色,并将FontStyle类对象设置到CellStyle类对象中。最后,获取需要设置字体颜色的单元格对象,调用setCellStyle()方法设置CellStyle类对象即可。 需要注意的是,以上示例中设置的是单个单元格的字体颜色。如果需要设置多个单元格的字体颜色,可以使用for循环遍历需要设置颜色的单元格对象,并按照以上方式进行设置即可。 ### 回答2: Java语言中常用的工具之一是HutoolHutool是一个Java开发工具包,它提供了许多实用的功能,如字符串处理、日期时间处理、加密与解密、文件IO、网络与Http、XML、JSON等等。它还提供了一套简洁易用的导出Excel的API,可以方便地创建和导出Excel表格。 在使用Hutool工具导出Excel表格时,有时需要设置Excel单元格的字体颜色,以便更好地区分不同的内容。下面介绍一种简单的方法来设置Excel单元格的字体颜色。 首先,需要构建ExcelWriter对象来设置要导出Excel表格,可以使用如下方式: ExcelWriter writer = ExcelUtil.getWriter("D:/test.xlsx"); 然后,可以使用writeCellValue方法来填充Excel单元格,如下所示: writer.writeCellValue(0, 0, "This is a test message!"); 接下来,需要使用getStyle方法获取单元格样式对象,并设置字体颜色,代码如下所示: // 获取单元格样式对象 CellStyle style = writer.getStyleSet().getCellStyle(); // 设置字体颜色 Font font = style.getFont(); font.setColor(Font.COLOR_RED); 最后,使用setStyle方法将样式应用到单元格中,代码如下所示: writer.setStyle(0, 0, style); 这样,Excel表格中第一行第一列的单元格就设置了红色字体颜色。类似地,可以设置其他单元格的字体颜色,根据需要调整样式和颜色即可。 总之,Hutool工具包提供了一套简单易用的导出Excel的API,并且支持设置单元格的字体颜色等样式,可以方便地构建符合需求的Excel表格。希望这篇回答对您有所帮助。 ### 回答3: Hutool是一款Java工具包,它包含了许多常用的工具类,大大简化了Java开发中的很多操作。其中HutoolExcel工具类可以方便地对Excel文件进行读写和处理。 在使用Hutool导出Excel时,实现设置单元格字体颜色的方法如下: 1. 创建Workbook对象 在使用Hutool导出Excel之前,需要先创建一个Workbook对象。Workbook对象是Excel文件的容器,可以包含多个Sheet。 2. 创建CellStyle对象 CellStyle对象是用于设置单元格样式的对象,通过创建CellStyle对象并设置样式属性,可以实现设置单元格字体颜色的效果。 3. 设置字体颜色 通过CellStyle对象的setFont方法可以设置字体,通过设置字体的颜色属性可以实现设置字体颜色的效果。 下面是一个示例代码,演示了如何使用Hutool导出Excel并设置单元格字体颜色: ``` import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelWriter; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Font; import org.apache.poi.ss.usermodel.IndexedColors; import org.apache.poi.ss.usermodel.Workbook; public class ExportExcelDemo { public static void main(String[] args) { // 创建Workbook对象 Workbook workbook = ExcelUtil.createWorkbook(); // 创建CellStyle对象,并设置字体颜色 CellStyle style = workbook.createCellStyle(); Font font = workbook.createFont(); font.setColor(IndexedColors.RED.getIndex()); style.setFont(font); // 创建ExcelWriter对象,设置单元格样式 ExcelWriter writer = ExcelUtil.getWriter(workbook); writer.getStyleSet().setFont(style); // 写入数据 writer.writeCellValue(0, 0, "Hello Hutool"); // 输出Excel文件 writer.flush(); writer.close(); } } ``` 在上面的代码中,我们首先创建了一个Workbook对象,然后创建了一个CellStyle对象,并设置了字体的颜色为红色。接着,我们创建了一个ExcelWriter对象,并设置了单元格样式,将数据写入Excel文件中。最后,将Excel文件输出。 值得注意的是,HutoolExcel工具类还支持其他单元格样式设置,例如设置单元格背景色、设置单元格边框等等。如果需要了解更多关于HutoolExcel工具类的使用方法,请参考Hutool的官方文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值