sprongboot java使用poi解析excel文件,

sprongboot java使用poi解析excel文件

说明:excel文件有两种后缀名,分别是 .xls 和 .xlsx两种,
.xls格式的excel文件使用的是HSSF
.xlsx根式的使用XSSf

首先在pom文件中导入依赖
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.17</version>
</dependency>
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-api</artifactId>
    <scope>test</scope>
</dependency>
前台使用form表格传递文件(我这里使用了thymeleaf标签)
<form method="post" th:action="@{/exam/upload}" enctype="multipart/form-data">
    <input type="hidden" th:value="${paper.paperId}" name="paperId" th:if="${not #strings.isEmpty(paper)}">
    <div class="form-group">
        <input type="file" name="file" class="form-control col-md-5">
    </div>
    <button class="btn btn-outline-primary" type="submit"
            style="margin-left: 450px;">上传
    </button>
</form>

注意:form标签中的enctype="multipart/form-data"

还有anction,因为我在controller上加了一个@RequestMapping("/exam/")

后台controller
@Controller
@RequestMapping("/exam/")
public class UploadController {
@PostMapping("/testupload")
    public String testexcel(@RequestParam("file") MultipartFile file) {
         System.out.println("testupload");
        //Excel文件--得到Excel工作簿对象
        XSSFWorkbook wb = null;
        try {
            wb = new XSSFWorkbook(file.getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
        /*Excel工作表--得到Excel工作表对象
          excel文件左下方的标识
         */
        XSSFSheet sheet = wb.getSheetAt(0);

        int rowNum = sheet.getLastRowNum();//总行数
        System.out.println("总行数(因为是从0开始的,所以输出会比实际上少1):" + rowNum);
       
        //获得某一行的对象
        XSSFRow row = null;
        for (int i = 0; i <= rowNum; i++) {
            row = sheet.getRow(i);//获取第i行
            String st1 = row.getCell(0).toString();//获取第i行的第0列
            String st2 = row.getCell(1).toString();//获取第i行的第1列
            System.out.println(st1 + " " + st2);
        }
        System.out.println("解析成功");
        return "exam/uploadPage";
    }
}

这是我解析的excel文件
在这里插入图片描述

下面是我控制台的输入语句
在这里插入图片描述

最后解释一条语句

/*Excel工作表–得到Excel工作表对象
​ excel文件左下方的标识 */
​ XSSFSheet sheet = wb.getSheetAt(0);

这个数字 0指的是(都是从0开始的)
在这里插入图片描述

XSSFSheet sheet = wb.getSheetAt(1);
吧0改为1可以继续测试一下
在这里插入图片描述
在这里插入图片描述

ok,得到数据之后,包装对象,塞数据库里,这不一气呵成吗

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值