excel表格如何变成Map集合

需求

excel表格=>List>的形式

技术需要:

io流,poi,List和Map集合基本用法

流程

new File 指向xhl表格
io:FileInputStream File传入
poi:New XSSFWorkbook 输入流传入
生成sheet
生成Rows
遍历每一个Cell getCellValue
list .add

一步一步来
❤️ 组装io流:

InputStream is =new FileInputStream(new File(path))//path:xhl路径

❤️ poi WorkBook一本书

 XSSFWorkbook xssfWorkbook = null;
            try {
     
                xssfWorkbook = new XSSFWorkbook(is);
            } catch (Exception e) {
     
                e.printStackTrace();
            }

❤️ poi Sheet一本书的每一页

XSSFSheet xssfSheet=null;
            xssfSheet = xssfWorkbook.getSheetAt(0);//我的xhl只有一页
            List<Map<String, String>> list = new ArrayList<Map<String, String>>();//一会用这个集合存我们需要的数据

❤️ poi Rows 标题行

XSSFRow titleRow = xssfSheet.getRow(0);//标题行 XSSRow也是个集合

❤️ poi 循环遍历每一行 以及每一个单元格 双层嵌套

  for (int rowIndex = 1; rowIndex < xssfSheet.getPhysicalNumberOfRows(); rowIndex++) {
     
                XSSFRow xssfRow = xssfSheet.getRow(rowIndex);
                //空值判断
                if (xssfRow == null) {
     
                    continue;
                }
                Map<String, String> map = new LinkedHashMap<String, String>();
                //循环取每个单元格(cell)的数据
                for (int cellIndex = 0; cellIndex < xssfRow.getPhysicalNumberOfCells(); cellIndex++) {
     
                    XSSFCell titleCell = titleRow.getCell(cellIndex);
                    XSSFCell xssfCell = xssfRow.getCell(cellIndex);
                    map.put(getString(titleCell),getString(xssfCell));
                }
                list.add(map);
            }

截至到这 我们需要的List集合就拿到了 可以进行你需要的操作了 我封装成方法了 着急干活的小伙伴可以直接c+v

public static List<Map<String,String>> getMapArr(InputStream is){
     
            XSSFWorkbook xssfWorkbook = null;
            try {
     
                xssfWorkbook = new XSSFWorkbook(is);
            } catch (Exception e) {
     
                e.printStackTrace();
            }
            //定义工作表
            XSSFSheet xssfSheet;
            xssfSheet = xssfWorkbook.getSheetAt(0);
            List<Map<String, String>> list = new ArrayList<Map<String, String>>();

            //定义行
            //默认第一行为标题行,index = 0
            XSSFRow titleRow = xssfSheet.getRow(0);

            //循环取每行的数据
            for (int rowIndex = 1; rowIndex < xssfSheet.getPhysicalNumberOfRows(); rowIndex++) {
     
                XSSFRow xssfRow = xssfSheet.getRow(rowIndex);
                if (xssfRow == null) {
     
                    continue;
                }

                Map<String, String> map = new LinkedHashMap<String, String>();
                //循环取每个单元格(cell)的数据
                for (int cellIndex = 0; cellIndex < xssfRow.getPhysicalNumberOfCells(); cellIndex++) {
     
                    XSSFCell titleCell = titleRow.getCell(cellIndex);
                    XSSFCell xssfCell = xssfRow.getCell(cellIndex);
                    map.put(getString(titleCell),getString(xssfCell));
                }
                list.add(map);
            }
            return list;
        }

按说到这,就没啥可继续往下说的了,但我不满意,我要将这个xhl表格里的东西,存到数据库里实现一个批量添加,说干就干走起 额 写不开了有点 下篇接上吧=>客户都excel表格最终进入服务器数据库

你可能感兴趣的:(后端,excel,java,poi)