利用Poi结合Java实现一键批量导入excel
发布日期:2022-02-17 04:52:14 浏览次数:11 分类:技术文章

本文共 2841 字,大约阅读时间需要 9 分钟。

poi是Apache提供可以操作ms office格式文档的api,本文主要介绍利用Poi结合Java代码实现一键批量导入excel,可以操作的后缀两种格式的excel。

首先 导入jar包

Maven方式

org.apache.poi
poi
3.17
org.apache.poi
poi-ooxml
3.17

这里主要针对四级题库excel文件进行导入

excel:
在这里插入图片描述
sql:

insert into wordmp.word_record(name,soundmark,explainword,rank) values
(#{word.name},#{word.soundmark},#{word.explainword},4)

Dao:

@Repositorypublic interface TestDao {
void exportWordList(@RequestParam List
wordRecords);}

实现 对文件处理读取后进行excel读取ExcelUtils.readExcel

@ApiOperation(value = "导入题库测试",notes = "导入题库测试")    @PostMapping("/exportWord")    public Response
exportWord(@RequestParam MultipartFile upfile){
try {
InputStream inputStream = upfile.getInputStream(); String filename = upfile.getOriginalFilename(); if (filename == ""|| filename == null){
throw new BaseException("请选择文件"); } if (!filename.matches("^.+\\.(?i)(xlsx|xls)$")){
return Response.failure("文件格式不对"); } List
> list = ExcelUtils.readExcel(filename, inputStream); ObjectMapper objectMapper = new ObjectMapper(); String jsonStr = objectMapper.writeValueAsString(list); List
wordRecordList = objectMapper.readValue(jsonStr, new TypeReference
>() {
}); //将读取后并转化了的数据批量导入 testService.exportWordList(wordRecordList); return Response.success("导入成功"); } catch (IOException e) {
return Response.error(e); } }

ExcelUtils.代码有详细注释

/** * @progarm: Poiexport * @author: Leox * @create: 2020-1-14 10:46 * @description: */public class ExcelUtils {
public static List
> readExcel(String fileName, InputStream inputStream) throws IOException {
List
> list = new ArrayList<>(); // 判断文件名是否合法 boolean ret = isXls(fileName); //1.读取工作簿 Workbook workbook = null; // 两种结构 HSSF 与 XSSF 选择 if (ret == true) {
workbook = new HSSFWorkbook(inputStream); } else {
workbook = new XSSFWorkbook(inputStream); } //得到工作表 Sheet sheet = workbook.getSheetAt(0); //得到行,0表示第一行 Row row = sheet.getRow(0); // 获取row里面最后一个单元格编号 short lastCellNum = row.getLastCellNum(); // 获取最后一行的行号 int lastRowNum = sheet.getLastRowNum(); for (int i = 1; i <= lastRowNum; i++) {
Map
map = new HashMap<>(); Row row1 = sheet.getRow(i); for (int j= 0;j

执行

在这里插入图片描述
最后导入成功:
在这里插入图片描述

转载地址:https://blog.csdn.net/qq_41426763/article/details/103969288 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Docker简单介绍,容器
下一篇:学习Java-stream用法(一)

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月09日 00时06分00秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章