Hutool导出excel

Hutool导出excel

1.使用实体类的方式导出excel

2.设置了标题

3.设置了标题的样式

4.设置了普通单元格的样式(字体,自动换行等)

坐标

 		<!-- https://mvnrepository.com/artifact/cn.hutool/hutool-all -->
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>4.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.apache.poi/poi-ooxml -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
        <dependency>
            <groupId>xerces</groupId>
            <artifactId>xercesImpl</artifactId>
            <version>2.11.0</version>
        </dependency>

实体类

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class ZhwdModel {

    private String questionId;

    private String question;

    private String fromUsername;

    private String fromOrgPath;

    private String questionCreateTime;

    private String answerId;

    private String answer;

    private String answerUsername;

    private String answerCreateTime;
}

Demo

import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.io.FileUtil;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import org.apache.log4j.Logger;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Font;
import tools.entity.ZhwdModel;

import java.io.FileInputStream;
import java.util.List;
import java.util.Properties;

public class HutoolExcelUtils {
    private static org.apache.log4j.Logger logger = Logger.getLogger(HutoolExcelUtils.class);

    private static String questionAndAnswerPath;

    static {
        try (FileInputStream inputStream = new FileInputStream("servicesetting.properties")) {
            Properties properties = new Properties();
            properties.load(inputStream);
            questionAndAnswerPath = properties.getProperty("excel.answer.path");
        } catch (Exception e) {
            logger.error("加载配置异常:", e);
        }
    }

    public static void main(String[] args) {
        //文件存在时删除
        if (FileUtil.exist(questionAndAnswerPath)) {
            System.out.println("[INFO] RobotDeptReport File Exist.Starting Delete!");
            FileUtil.del(questionAndAnswerPath);
            System.out.println("[INFO] RobotDeptReport File Has Delete Finish!");
        }

        ExcelWriter writer = ExcelUtil.getWriter(questionAndAnswerPath);

        //自定义标题别名
        writer.addHeaderAlias("questionId", "问题ID");
        writer.addHeaderAlias("question", "问题");
        writer.addHeaderAlias("fromUsername", "提问人");
        writer.addHeaderAlias("fromOrgPath", "提问人组织机构");
        writer.addHeaderAlias("questionCreateTime", "提问时间");
        writer.addHeaderAlias("answerId", "回答ID");
        writer.addHeaderAlias("answer", "回答");
        writer.addHeaderAlias("answerUsername", "回复人");
        writer.addHeaderAlias("answerCreateTime", "回复时间");

        writer.setRowHeight(0, 50);
        //设置标题样式
        CellStyle headCellStyle = writer.getHeadCellStyle();
        Font font = writer.createFont();
        font.setBold(true);
        font.setColor(Font.COLOR_NORMAL);
        font.setItalic(false);
        font.setFontHeight((short) 300);
        font.setFontName("新宋体");
        headCellStyle.setFont(font);
        //普通的单元格设置样式
        CellStyle cellStyle = writer.getCellStyle();
        //设置字体
        Font cellFont = writer.createFont();
        cellFont.setColor(Font.ANSI_CHARSET);
        cellFont.setFontHeight((short) 250);
        cellStyle.setFont(cellFont);
        //设置普通单元格自动换行
        cellStyle.setWrapText(true);

        writer.setColumnWidth(0, 30);
        writer.setColumnWidth(1, 40);
        writer.setColumnWidth(2, 15);
        writer.setColumnWidth(3, 35);
        writer.setColumnWidth(4, 25);
        writer.setColumnWidth(5, 35);
        writer.setColumnWidth(6, 40);
        writer.setColumnWidth(7, 15);
        writer.setColumnWidth(8, 25);

        ZhwdModel zhwdModel = new ZhwdModel()
                .setQuestionId("5QeBr3gBeqKG4pccyEJp")
                .setQuestion("你好!")
                .setFromUsername("黄浦肥鸟")
                .setFromOrgPath("总行/信息技术部/招银网络科技/基础设施研发中心/协同办公开发团队/协同办公管理设计室")
                .setQuestionCreateTime("2021-03-06 12:26:59")
                .setAnswerId("11L21ncB6o9rl3yPot6V:ALL")
                .setAnswer("我非常好的!")
                .setAnswerUsername("李四刚")
                .setAnswerCreateTime("2021-12-23 12:55:55");
        ZhwdModel zhwdModel2 = new ZhwdModel()
                .setQuestionId(null)
                .setQuestion("你怎么样?")
                .setAnswerId("11L21ncB6o9rl3yPot6A:ALL")
                .setAnswer("我非常好的!")
                .setAnswerUsername("王五")
                .setAnswerCreateTime("2021-12-23 12:55:55");

        ZhwdModel zhwdModel3 = new ZhwdModel()
                .setAnswerId("11L21ncB6o9rl3yPot6A:ALL")
                .setAnswer("我太好了!")
                .setAnswerUsername("赵六")
                .setAnswerCreateTime("2021-12-23 12:55:55");

        List<ZhwdModel> rows = CollUtil.newArrayList(zhwdModel, zhwdModel2, zhwdModel3);
        // 一次性写出内容,使用默认样式
        writer.write(rows);
        // 关闭writer,释放内存
        writer.close();
    }

}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Hutool导出Excel表格的格式可以通过设置样式实现。下面是一个示例代码: ```java // 创建工作簿 Workbook workbook = ExcelUtil.createWorkbook(); // 创建工作表 Sheet sheet = workbook.createSheet("Sheet1"); // 创建表头 Row headerRow = sheet.createRow(0); // 创建表头单元格并设置样式 CellStyle headerStyle = workbook.createCellStyle(); headerStyle.setAlignment(HorizontalAlignment.CENTER); headerStyle.setVerticalAlignment(VerticalAlignment.CENTER); headerStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex()); headerStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND); headerStyle.setBorderTop(BorderStyle.THIN); headerStyle.setBorderBottom(BorderStyle.THIN); headerStyle.setBorderLeft(BorderStyle.THIN); headerStyle.setBorderRight(BorderStyle.THIN); headerStyle.setWrapText(true); // 设置表头单元格的值和样式 Cell cell1 = headerRow.createCell(0); cell1.setCellValue("姓名"); cell1.setCellStyle(headerStyle); Cell cell2 = headerRow.createCell(1); cell2.setCellValue("年龄"); cell2.setCellStyle(headerStyle); // 创建数据并设置样式 CellStyle dataStyle = workbook.createCellStyle(); dataStyle.setAlignment(HorizontalAlignment.CENTER); dataStyle.setVerticalAlignment(VerticalAlignment.CENTER); dataStyle.setBorderTop(BorderStyle.THIN); dataStyle.setBorderBottom(BorderStyle.THIN); dataStyle.setBorderLeft(BorderStyle.THIN); dataStyle.setBorderRight(BorderStyle.THIN); dataStyle.setWrapText(true); // 设置数据单元格的值和样式 Row dataRow = sheet.createRow(1); Cell cell3 = dataRow.createCell(0); cell3.setCellValue("张三"); cell3.setCellStyle(dataStyle); Cell cell4 = dataRow.createCell(1); cell4.setCellValue(20); cell4.setCellStyle(dataStyle); // 导出Excel表格 ExcelUtil.writeToFile(workbook, "test.xlsx"); ``` 上述代码中,通过创建CellStyle对象并设置其属性来定义表头和数据的样式,例如设置对齐方式、边框、背景颜色等。然后将样式应用到对应的单元格中即可。最后,通过ExcelUtil工具类的writeToFile方法将工作簿导出Excel文件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值