1.导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
<!--EasyExcel-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.2.0</version>
</dependency>
注意: 这里不需要导入poi依赖,easyexcel里已经存在了,如果导入poi,可能会发生版本冲突
2.封装相应对象
@Data
public class ExcelToWordData {
private Integer id;
private String problem;
private String answer;
private String type;
private String optionA;
private String optionB;
private String optionC;
private String optionD;
}
3.将Excel表中数据写入到word文件中
package com.funian.utils;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.funian.domain.ExcelToWordData;
import org.apache.poi.xwpf.usermodel.*;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @program: SpringBoot_EasyExcel
* @description:
* @author: 伏念
* @create: 2023-07-10 14:11
**/
public class ExcelToWord {
public static void main(String[] args) {
String excelFilePath = "C:\\Users\\Administrator\\Desktop\\考试题库\\考试题库\\springboot.xls"; // 替换为你的 Excel 文件路径
String wordFilePath = "C:\\Users\\Administrator\\Desktop\\考试题库\\考试题库\\springboot.doc"; // 替换为你的 Word 文件路径
// 读取 Excel 数据
List<ExcelToWordData> excelList = readExcel(excelFilePath);
// 写入 Word 文档
writeWord(excelList, wordFilePath);
}
// 读取 Excel 数据
private static List<ExcelToWordData> readExcel(String excelFilePath) {
List<ExcelToWordData> excelList = new ArrayList<>();
EasyExcel.read(excelFilePath, ExcelToWordData.class, new UserDataListener(excelList)).sheet().doRead();
return excelList;
}
// 写入 Word 文档
private static void writeWord(List<ExcelToWordData> excelList, String wordFilePath) {
XWPFDocument document = new XWPFDocument();
XWPFParagraph paragraph = document.createParagraph();
XWPFRun run = paragraph.createRun();
//内容可根据需要修改
run.setText("用户列表");
run.setBold(true);
run.setFontSize(16);
Integer i = 1;
for (ExcelToWordData user : excelList) {
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText(i+"."+ user.getProblem());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText("答案:" + user.getAnswer());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText("选项A:" + user.getOptionA());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText("选项B:" + user.getOptionB());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText("选项C:" + user.getOptionC());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.setText("选项D:" + user.getOptionD());
paragraph = document.createParagraph();
run = paragraph.createRun();
run.addBreak();
i++;
}
try (FileOutputStream out = new FileOutputStream(wordFilePath)) {
document.write(out);
System.out.println("数据写入成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
// Excel 监听器
public static class UserDataListener extends AnalysisEventListener<ExcelToWordData> {
private List<ExcelToWordData> excelList;
public UserDataListener(List<ExcelToWordData> excelList) {
this.excelList = excelList;
}
@Override
public void invoke(ExcelToWordData user, AnalysisContext context) {
excelList.add(user);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 数据解析完成后的操作(这里不需要)
}
}
}
Excel:
Word: