Java之poi导入excel数据

  使用开源poi框架进行导入数据,废话不多说,直接上代码。
1.pom依赖:
<!-- excel工具 -->
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
</dependency>
2.Controller代码  
   
public AjaxResult importData(MultipartFile file) throws Exception {
        List<Student> studentList = new ArrayList<>();
        //根据路径获取这个操作excel表格
        XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());
        //根据页面index 获取sheet页
        XSSFSheet sheet = wb.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i <= lastRowNum; i++) {
            XSSFRow row = sheet.getRow(i);
            if (row!= null) {
                List<String> list = new ArrayList<>();
                for (Cell cell : row) {
                    if (cell!=null){
                        cell.setCellType(CellType.STRING);
                        String value = cell.getStringCellValue();
                        if (value!=null && !"".equals(value))
                            list.add(value);
                    }
                }
                if (list.size()>0){
                    Student student = new Student();
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setSex(row.getCell(0).getStringCellValue());
                    student.setAge(Integer.valueOf((int)row.getCell(2).getNumericCellValue()));
                    student.setAddress(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    studentList.add(student);
//                    System.out.println(studentList);
                }
            }
        }
        //调取实体对应的service层新增方法
        studentService.importByExcel(studentList);
        return AjaxResult.success();
    }

以上是后缀为xlsx,将以下代码替换即是后缀为xls的excel

//根据路径获取这个操作excel(后缀为.xls) 

HSSFWorkbook hb = new HSSFWorkbook(file.getInputStream())

//.xls格式 

HSSFSheet sheet = hb.getSheetAt(0);

XSSFRow row = sheet.getRow(i);

嫌麻烦?直接两个都判断的代码 

public AjaxResult importData(MultipartFile file) throws Exception {
        List<Student> studentList = new ArrayList<>();
        String fileName = file.getOriginalFilename();
        String name = fileName.substring(0, fileName.indexOf("."));
        String hzm =fileName.substring(name.length()+1);
        if (StringUtils.equals(hzm,"xlsx")) {
        //根据路径获取这个操作excel表格
        XSSFWorkbook wb = new XSSFWorkbook(file.getInputStream());
        //根据页面index 获取sheet页
        XSSFSheet sheet = wb.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i <= lastRowNum; i++) {
            XSSFRow row = sheet.getRow(i);
            if (row!= null) {
                List<String> list = new ArrayList<>();
                for (Cell cell : row) {
                    if (cell!=null){
                        cell.setCellType(CellType.STRING);
                        String value = cell.getStringCellValue();
                        if (value!=null && !"".equals(value))
                            list.add(value);
                    }
                }
                if (list.size()>0){
                    Student student = new Student();
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setSex(row.getCell(0).getStringCellValue());
                    student.setAge(Integer.valueOf((int)row.getCell(2).getNumericCellValue()));
                    student.setAddress(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    studentList.add(student);
//                    System.out.println(studentList);
                }
            }
        }
    } else if (StringUtils.equals(hzm,"xls")) {
        //根据路径获取这个操作excel表格
        HSSFWorkbook wb = new HSSFWorkbook(file.getInputStream());
        //根据页面index 获取sheet页
        HSSFSheet sheet = wb.getSheetAt(0);
        int lastRowNum = sheet.getLastRowNum();
        for (int i = 1; i <= lastRowNum; i++) {
            HSSFRow row = sheet.getRow(i);
            if (row!= null) {
                List<String> list = new ArrayList<>();
                for (Cell cell : row) {
                    if (cell!=null){
                        cell.setCellType(CellType.STRING);
                        String value = cell.getStringCellValue();
                        if (value!=null && !"".equals(value))
                            list.add(value);
                    }
                }
                if (list.size()>0){
                    Student student = new Student();
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setSex(row.getCell(0).getStringCellValue());
                    student.setAge(Integer.valueOf((int)row.getCell(2).getNumericCellValue()));
                    student.setAddress(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    student.setName(row.getCell(0).getStringCellValue());
                    studentList.add(student);
//                    System.out.println(studentList);
                }
            }
        }
    }
        //调取实体对应的service层新增方法
        studentService.importByExcel(studentList);
        return AjaxResult.success();
    }

 以上就是导入功能,看完理解理解发现也不难!

POI(Apache POI)是一个开源库,用于在Java应用程序中处理Microsoft Office格式(如Excel .xls和.xlsx文件)。它提供了一组API,使得开发者能够读取、创建、修改和保存Excel工作簿及单元格数据。 使用POI导入Excel文件的步骤大致如下: 1. **添加依赖**:首先需要将Apache POI库添加到你的项目中,如果你使用Maven,可以在pom.xml文件中添加如下依赖: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>最新版本号</version> </dependency> ``` 如果只处理.xls文件,可以使用`poi`而不是`poi-ooxml`。 2. **创建Workbook对象**:通过`FileInputStream`或`InputStream`从Excel文件加载数据,创建`XSSFWorkbook`(处理xlsx文件)或`HSSFWorkbook`(处理xls文件)。 ```java FileInputStream inputStream = new FileInputStream("path_to_your_excel_file.xlsx"); Workbook workbook = new XSSFWorkbook(inputStream); // 或 HSSFWorkbook for xls ``` 3. **访问Sheet和Row**:使用`workbook.getSheetAt(index)`获取工作表,然后遍历行和列来读取或操作数据。 ```java Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rowIterator = sheet.iterator(); while (rowIterator.hasNext()) { Row row = rowIterator.next(); Iterator<Cell> cellIterator = row.cellIterator(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); String value = cell.getStringCellValue(); // 获取字符串值 // ... 进行其他处理 } } ``` 4. **关闭资源**:记得在完成操作后关闭流和工作簿,释放内存。 ```java workbook.close(); inputStream.close(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值