java中如何将json文件转换为excel文件

我遇到了将JSON文件转换为 Excel 文件的问题,简而言之,将JSON数据转换为 Excel 数据。尝试映射JSON键和值但无法做到。


尝试映射JSON键和值但无法做到。我已经使用过 apache POI api。


public class jsontoexcel {


    public static void main(String[] args) throws IOException,JSONException {

        jsontoexcel json4=new jsontoexcel();

        JSONObject json=json4.ReadJson();

        JSONArray array =new JSONArray();

        JSONObject rowjson=json.getJSONArray("rows").getJSONObject(0);


        XSSFWorkbook workbook=new XSSFWorkbook();

        XSSFSheet sheet=workbook.createSheet("Company Details");


        int len=rowjson.length();

        String[] RowArr=new String[len];

        Iterator<String> keys = rowjson.keys();

        int i=0;

        while(keys.hasNext())

        {

            RowArr[i]=keys.next();

            System.out.print("key:"+keys);

            i++;

        }

        List<String> slist= new ArrayList<String>();

        slist=json.get(rowjson.toString(keys));


         FileOutputStream out=new FileOutputStream(new File("C:\\code\\eclipse\\jsontoexcel\\src\\output.xlsx"));


         createHeaderRow(sheet, RowArr);

         workbook.write(out);

         out.close();




      //  Map<String,Object> map=new Map<String,Object>();      


    }


    public static void createHeaderRow(XSSFSheet sheet, String[] RowArr)

    {

        Row row=sheet.createRow(0);

        for(int i=0;i<RowArr.length-1;i++)

        {

            Cell cellTitle=row.createCell(i+1);

            String cellVal=RowArr[i];

            System.out.print("Cell data" + cellVal);

        }

    }

}

我希望输出存储在 Excel 文件中。正在打印标题,但不打印值。


ABOUTYOU
浏览 194回答 1
1回答

守着一只汪

Excel除非确实需要,否则不要生成文件。如果您想生成没有任何特定格式、图表、宏等的数据,只需生成CSV包含纯数据的文件即可。要读取JSON和生成,CSV您可以使用支持这两种数据格式的Jackson库。假设你的JSON样子如下:{  "rows": [    {      "id": 1,      "name": "Vika",      "age": 27    },    {      "id": 2,      "name": "Mike",      "age": 28    }  ]}您需要创建POJO适合该结构的模型,反序列化为JSON对象并将对象序列化以进行CSV格式化。示例解决方案如下所示:import com.fasterxml.jackson.annotation.JsonPropertyOrder;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.SequenceWriter;import com.fasterxml.jackson.dataformat.csv.CsvMapper;import com.fasterxml.jackson.dataformat.csv.CsvSchema;import java.io.File;import java.util.List;public class JsonApp {    public static void main(String[] args) throws Exception {        File jsonFile = new File("./resource/test.json").getAbsoluteFile();        ObjectMapper jsonMapper = new ObjectMapper();        Response response = jsonMapper.readValue(jsonFile, Response.class);        CsvMapper csvMapper = new CsvMapper();        CsvSchema schema = csvMapper.schemaFor(Item.class).withHeader();        SequenceWriter sequenceWriter = csvMapper.writer(schema).writeValues(System.out);        sequenceWriter.writeAll(response.getRows());    }}class Response {    private List<Item> rows;    // getters, setters}@JsonPropertyOrder({"id", "name", "age"})class Item {    private int id;    private String name;    private int age;    // getters, setters}上面的代码打印:id,name,age1,Vika,272,Mike,28
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java