资讯专栏INFORMATION COLUMN

POI实现将导入Excel文件

cheng10 / 2761人阅读

摘要:获取表格数据获取表格中的数据分为以下几步获取表格获取某一行获取这一行中的某个单元格代码实现获取第一个张表获取每行中的字段获取行获取单元格中的值持久化获取出单元格中的数据后,最后就是用数据建立对象了。获取行获取单元格中的值持久化相关参考

问题描述

现需要批量导入数据,数据以Excel形式导入。

POI介绍

我选择使用的是apache POI。这是有Apache软件基金会开放的函数库,他会提供API给java,使其可以对office文件进行读写。

我这里只需要使用其中的Excel部分。

实现

首先,Excel有两种格式,一种是.xls(03版),另一种是.xlsx(07版)。针对两种不同的表格格式,POI对应提供了两种接口。HSSFWorkbookXSSFWorkbook

导入依赖

    org.apache.poi
    poi
    RELEASE


    org.apache.poi
    poi-ooxml
    RELEASE
处理版本
Workbook workbook = null;
try {
    if (file.getPath().endsWith("xls")) {
        System.out.println("这是2003版本");
        workbook = new XSSFWorkbook(new FileInputStream(file));
    } else if (file.getPath().endsWith("xlsx")){
        workbook = new HSSFWorkbook(new FileInputStream(file));
        System.out.println("这是2007版本");
    }
            
} catch (IOException e) {
    e.printStackTrace();
}

这里需要判断一下Excel的版本,根据扩展名,用不同的类来处理文件。

获取表格数据

获取表格中的数据分为以下几步:

1.获取表格
2.获取某一行
3.获取这一行中的某个单元格

代码实现:

// 获取第一个张表
Sheet sheet = workbook.getSheetAt(0);
      
// 获取每行中的字段
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);    // 获取行

    // 获取单元格中的值
    String studentNum = row.getCell(0).getStringCellValue();   
    String name = row.getCell(1).getStringCellValue();
    String phone = row.getCell(2).getStringCellValue();
}
持久化

获取出单元格中的数据后,最后就是用数据建立对象了。

List studentList = new ArrayList<>();

for (int i = 0; i <= sheet.getLastRowNum(); i++) {
    Row row = sheet.getRow(i);    // 获取行

    // 获取单元格中的值
    String studentNum = row.getCell(0).getStringCellValue();   
    String name = row.getCell(1).getStringCellValue();
    String phone = row.getCell(2).getStringCellValue();
    
    Student student = new Student();
    student.setStudentNumber(studentNum);
    student.setName(name);
    student.setPhoneNumber(phone);
    
    studentList.add(student);
}

// 持久化
studentRepository.saveAll(studentList);

相关参考:
https://poi.apache.org/compon...
https://blog.csdn.net/daihuim...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73413.html

相关文章

  • 慕课网_《解密JAVA实现Excel导入导出》学习总结

    时间:2017年07月06日星期四说明:本文部分内容均来自慕课网。@慕课网:http://www.imooc.com教学源码:无学习源码:https://github.com/zccodere/s... 第一章:课程介绍 1-1 预备知识 基础知识 struts2框架(上传下载功能) xml解析技术(导入模板) JQuery EasyUI(前台美观) 课程目录 实现方式 定制导入模版 导入文件 导...

    enrecul101 评论0 收藏0
  • Java实现excel导入导出学习笔记1 - 实现方式

    摘要:需要的技术框架利用其上传下载功能解析技术定制导入模板制作前台与格式对应,版本低,兼容性好与格式对应组成的几个概念工作薄工作表行记录单元格创建中的的详见如创建创建工作簿创建工作表创建第一行创建一个文件存盘名字性別男解析文件创建,读取文件 需要的技术 1、strut2框架 利用其上传下载功能2、xml解析技术 定制导入模板3、jquery UI 制作前台 4、showImg(/i...

    wean 评论0 收藏0
  • Java Excel导入导出,基于XML和Easy-excel使用

    摘要:我想能不能像配置文件一样可配置的导入导出,那样使用起来就方便许多。配置和使用下面是员工信息模型。支持多种映射,使用英文逗号进行分割。导入时它会以分割前面的作为导入时使用的值,后面的作为导出时使用的值后面值进行逆推导出时同理。 1.前言 在工作时,遇到过这样的需求,需要灵活的对工单进行导入或导出,以前自己也做过,但使用不灵活繁琐。我想能不能像配置文件一样可配置的导入导出,那样使用起来就方...

    13651657101 评论0 收藏0
  • poi导出excel

    摘要:积分消费明细对账单其中,有四个参数,分别是,,,。导出读取数据库的信息,转成。 public void detailExport() { String sourceSystem = getPara(source_system); String dataDate = getPara(data_date); Integer pointsType = get...

    RayKr 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<