如何在java中将json文件转换为excel文件
一、 我遇到了将如何在java中将json文件转换为excel文件,java,json,excel,Java,Json,Excel,一、 我遇到了将JSON文件转换为excel文件的问题,简而言之,就是将JSON数据转换为excel数据的问题。尝试映射JSON键和值,但无法映射 尝试映射JSON键和值,但无法映射。我已经使用了ApachePOIAPI public class jsontoexcel { public static void main(String[] args) throws IOException,JSONException { jsontoexcel json4=new jso
JSON
文件转换为excel文件的问题,简而言之,就是将JSON
数据转换为excel数据的问题。尝试映射JSON
键和值,但无法映射
尝试映射JSON
键和值,但无法映射。我已经使用了ApachePOIAPI
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);
}
}
}
公共类jsontoexcel{
公共静态void main(字符串[]args)抛出IOException、JSONException{
jsontoexcel json4=新的jsontoexcel();
JSONObject json=json4.ReadJson();
JSONArray数组=新的JSONArray();
JSONObject rowjson=json.getJSONArray(“行”).getJSONObject(0);
XSSFWorkbook工作簿=新XSSFWorkbook();
XSSFSheet sheet=workbook.createSheet(“公司详细信息”);
int len=rowjson.length();
String[]RowArr=新字符串[len];
迭代器keys=rowjson.keys();
int i=0;
while(keys.hasNext())
{
RowArr[i]=keys.next();
系统输出打印(“键:+键);
i++;
}
List slist=new ArrayList();
slist=json.get(rowjson.toString(keys));
FileOutputStream out=新的FileOutputStream(新文件(“C:\\code\\eclipse\\jsontoexcel\\src\\output.xlsx”);
createHeaderRow(表,行);
练习册。写(出);
out.close();
//Map Map=newmap();
}
公共静态void createHeaderRow(XSSFSheet sheet,字符串[]RowArr)
{
Row Row=sheet.createRow(0);
对于(int i=0;i除非您确实需要,否则不要生成Excel
文件。如果您想生成没有任何特定格式、图表、宏等的数据,只需使用纯数据生成CSV
文件。要读取JSON
并生成CSV
,您可以使用支持这两种数据格式的库。只需假设y我们的JSON
如下所示:
{
"rows": [
{
"id": 1,
"name": "Vika",
"age": 27
},
{
"id": 2,
"name": "Mike",
"age": 28
}
]
}
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
}
您需要创建适合该结构的POJO
模型,将JSON
反序列化为对象,并将对象序列化为CSV
格式。示例解决方案如下所示:
{
"rows": [
{
"id": 1,
"name": "Vika",
"age": 27
},
{
"id": 2,
"name": "Mike",
"age": 28
}
]
}
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
}
另见:
我想你的问题已经有答案了