hutool工具编写导出Excel的使用

这篇博客介绍了如何利用Hutool工具库简化Excel的生成过程,特别是处理动态表头和复杂数据填充的情况。通过创建ExcelWriter,设置合并单元格,然后将数据存储到List集合并写入,可以高效地生成所需的Excel文件。此外,还展示了如何进行文件保存和导出操作。
摘要由CSDN通过智能技术生成

最近写了一个要导出excel的,要是比较简单一些就使用原始的方式了,遍历循环rows,并且遍历循环单元格填充值,就OK了,但是我的表头不是固定的,还需要一个行里填充4个单元格,有点像合并单元格之类的,填充数据呢,也是稍微复杂点,如果用原生的一是时间长,二是也比较困难,通过一些方式找到了hutool工具的ExcelWriter方式。

这个导出的好处就是你就关注数据本身,专注于数据本身能够怎么存储到List集合里,再把集合传给writer方法里就好了,就直接可以是一个想要的excel,咱们先来说一下使用示例

1.万物的开始需要先创建writer

1,1 创建一个起我自己需要的sheet页的一个excel

// 通过工具类创建write
// 此种方式最后会通过response设置导出
ExcelWriter writer = ExcelUtil.getWriterWithSheet("sheet页名称");

1.2 创建一个带默认sheet页的一个excel

// 此种方式最后会通过response设置导出
ExcelWriter writer = ExcelUtil.getWriter();

1.3 创建一个直接放入磁盘的一个excel

// 写入磁盘下
ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx");
// 写入磁盘下并设置当前sheet页名称
ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx", "sheet页名称");

 

2.合并使用

我要设置上图的第一行的标题需要合并单元格,才能实现1月填报数据和填报状态及数量和未填报市级在一个格子里。所以用以下方式.

 合并方法:writer.merge() 

 第一个参数是firstRow是要合并的开始行,坐标从0开始也就是要合并第一行,

 第二个参数是lastRow是要合并的最后行,这里1就代表合并第二行,第一个和第二个参数意思就   是合并第一行第二行,

 第三个参数是firstColumn是要合并的开始列,坐标为0代表第一列

 第四个参数是lastColumn是要合并的最后列,此为0为第一列,第三个和第四个的意思为此次不合   并列,

 第五个参数是content,是内容,就是当前单元格里的内容

 第6个参数isSetHeaderStyle,是否设置头格式,其实就是当前单元格内容背景为灰色

 这样就把前两个标题设置完成

  // 合并单元格
  // 合并第一行和第二行单元格,不合并第一列,第一行第一列是序号
  writer.merge(0, 1, 0, 0, "序号", false);
  // 合并第一行和第二行,不合并第二列,第二列是省份名称
  writer.merge(0, 1, 1, 1, "省份名称", false);

  设置第三列,根据上面展示图片就知道,需要合并第三列和第五列,名称是1月填报数据

  writer.merge(0, 0, 2, 4, "1月填报数据", false);

  在设置填报状态、未填报数量、未填报市级,放入list集合里,

List<List<String>> rows = new ArrayList<>();
List<String> row = new ArrayList<>();
row.add("");
row.add("");
row.add("填报状态");
row.add("未填报数量");
row.add("未填报市级"); 
rows.add(row);

  填充数据,最后将数据存储到rows集合里,就可以了

// 需要先设置跳过当前行
writer.passCurrentRow();

 int index = 0;
 for (int i = 0; i < 3; i++) {
     List<String> rowData = new ArrayList<>();
     index = i + 1;
     rowData.add(index + "");
     rowData.add("名称");
     rowData.add("完成了");
     rowData.add("20");
     rowData.add("无");
     rows.add(rowData);
  }

  将数据写到writer.write里就ok了,但不要忘记关闭资源

 writer.write(rows, true);
 // 关闭writer,释放内存
 writer.close();

  总体代码测试,运行一下看下结果

public static void main(String[] args) {
        ExcelWriter writer = ExcelUtil.getWriter("d:/writeBeanTest.xlsx", "sheet页名称");
        // 设置合并项
        writer.merge(0, 1, 0, 0, "序号", false);
        writer.merge(0, 1, 1, 1, "省份名称", false);

        writer.merge(0, 0, 2, 4, "1月填报数据", false);

        // 跳过当前行,否则设置合并会出问题
        writer.passCurrentRow();

        // 填充标题
        List<List<String>> rows = new ArrayList<>();
        List<String> row = new ArrayList<>();
        row.add("");
        row.add("");
        row.add("填报状态");
        row.add("未填报数量");
        row.add("未填报市级");
        rows.add(row);

        // 填充内容
        int index = 0;
        for (int i = 0; i < 3; i++) {
            List<String> rowData = new ArrayList<>();
            index = i + 1;
            rowData.add(index + "");
            rowData.add("名称");
            rowData.add("完成了");
            rowData.add("20");
            rowData.add("无");
            rows.add(rowData);
        }
        writer.write(rows, true);
        // 关闭writer,释放内存
        writer.close();
    }

完美~~ 

 当然也可以导出,导出其他代码都一样就需要这样的Write,只要不带路径,就不会下载而变为导出

writer = ExcelUtil.getWriterWithSheet("shhet"); 或
ExcelUtil.getWriter();

还要设置导出的名称,格式xsl等就可以了

response.setContentType("application/vnd.ms-excel");
response.addHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.addHeader("charset", "utf-8");
response.addHeader("Pragma", "no-cache");
encodeName = URLEncoder.encode("导出名称-" + DateUtil.today() + ".xls", StandardCharsets.UTF_8.toString());
response.setHeader("Content-Disposition", "attachment; filename=\"" + encodeName + "\"; filename*=utf-8''" + encodeName);
ServletOutputStream out = response.getOutputStream();
writer.flush(out);
writer.close();
IoUtil.close(out);

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答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的官方文档。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值