excel表格如何变成Map集合

需求

excel表格=>List<Map<K,V>>的形式

技术需要:

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();
            }

<wornning>不要用下面这种构造方法去构造XSSFWorkbook对象,不然会破坏你的Excel

//如果Excel仅仅是作为模板来使用,不希望得到变更,不要用这种构造方式,会造成原Excel变更!!!
XSSFWorkbook workbook = new XSSFWorkbook(“Excel绝对路径”);// 创建excel模板workbook,

❤️ 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;
        }

按说到这,我们要求的excel变Map集合就实现了,但是!我还不满意,我还需要将这个excel表格里的东西读出来然后存到数据库里,那咋办呢?我们试着操作一手…下篇见=>客户都excel表格最终进入服务器数据库

喜欢的朋友点个赞吧,一起交流进步,纯原创

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

商朝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值