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();
}
}