首页 > 解决方案 > 在java中解析excel文件

问题描述

我有一个 excel 文件,其中包含 Map<Integer,String> 在我的 excel 中,例如:

运动的
名字1 姓氏1 [{1:"足球"},{2:"手球"}]
名字2 姓氏2 [{1:"曲棍球"},{2:"射箭"},{3:"空手道"}]
名字3 姓3 [{1:"空手道"},{2:"拳击"},{3:"棒球"},{4:"跑步"}]

我需要获取地图的值,例如第一个获取足球,手球作为列表,第二个获取相同的值,依此类推。请帮助我,我正在使用 Java8,我知道如何从单元格中获取 stringValues、numericValues、booleanValues,但是对此我有问题。

row.getCell(index).getStringCellValue();
row.getCell(index).getNumericCellValue();

标签: javaexceljava-8hashmap

解决方案


您需要编写几行代码来将第 3 列转换为您想要的格式。

您必须将第 3 列设为String.,例如String mapColumn=row.getCell(index).getStringCellValue();

然后你必须将字符串迭代为 JSONArray(来自 org.json)。我写了一个存根。这可能会给你一个想法。

import org.json.JSONArray;
public static void main(String args[]) throws IOException {
        
        String s="[{1:\"Football\"},{2:\"Handball\"}]";// Your 3rd Column Value
        JSONArray js=new JSONArray(s);              // Converting the String to JSONArray
        List<String> list=new ArrayList<String>();  //Creating a list
        for(int i=0;i<js.length();i++) {
            list.add(js.getJSONObject(i).getString(String.valueOf(i+1)));  //adding values to list
        }
        
        System.out.println(list.toString());   // Gives your desired output
    }

样本输出: [Football, Handball]


推荐阅读