0
点赞
收藏
分享

微信扫一扫

java使用poi读取excel文件

12a597c01003 2022-04-08 阅读 82

1.引入maven依赖

 <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.1.1</version>
        </dependency>

2.读取demo代码如下

1.excel文件

 2.LocalStorage.java

@Getter
@Setter
@NoArgsConstructor
public class LocalStorage {
   /** 真实文件名 */
    private String realName;

    /**文件名 */
    private String name;

    /**后缀 */
    private String suffix;

    /** 路径 */
    private String path;

    /** 类型 */
    private String type;
}

3.读取excel代码示例


import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

public class MoveFile {

      public static void readExcel(List<LocalStorage> localStorages)throws Exception{
        //用流的方式先读取到你想要的excel的文件 这里直接读取本地路径文件
        FileInputStream fis=new FileInputStream("D:/file/demo.xls");
        //解析excel
        POIFSFileSystem poifsFileSystem=new POIFSFileSystem(fis);
        //获取整个excel
        HSSFWorkbook hb=new HSSFWorkbook(poifsFileSystem);
        //获取第一个表单sheet
        HSSFSheet sheet = hb.getSheetAt(0);
        //获取第一行
        int firstrow = sheet.getFirstRowNum();
        //获取最后一行
        int lastrow = sheet.getLastRowNum();

        //循环行数依次获取列数
        for (int i = firstrow; i < lastrow+1; i++) {
            //获取哪一行i
            Row row=sheet.getRow(i);
            if (row!=null) {
                //获取这一行的第一列
                int firstCellNum = row.getFirstCellNum();
                //获取这一行的最后一列
                int lastCellNum = row.getLastCellNum();
                //创建一个集合,用处将每一行的每一列数据都存入集合中
                List<String> list=new ArrayList<>();
                for (int j = firstCellNum; j <lastCellNum; j++) {
                    //获取第j列
                    Cell cell=row.getCell(j);
                    if (cell!=null) {
                        list.add(cell.toString());
                    }
                }
                LocalStorage localStorage=new LocalStorage();
               //如果列数较多可以使用循环进行取值
                if (list.size()>0) {
                    localStorage.setRealName(list.get(0));
                    localStorage.setSuffix(list.get(1));
                    localStorage.setType(list.get(2));
                    localStorages.add(localStorage);
                }

            }
        }
        fis.close();
}

}
举报

相关推荐

0 条评论