亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java中如何將json文件轉換為excel文件

java中如何將json文件轉換為excel文件

ABOUTYOU 2023-08-04 19:09:52
我遇到了將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 文件中。正在打印標題,但不打印值。
查看完整描述

1 回答

?
守著一只汪

TA貢獻1872條經驗 獲得超4個贊

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,age

1,Vika,27

2,Mike,28


查看完整回答
反對 回復 2023-08-04
  • 1 回答
  • 0 關注
  • 244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號