package com.gzbugu.util;
import java.io.File;
import java.io.IOException;
import java.util.Set;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
public class CreateJsonToExcel {
public static void main(String[] args) throws BiffException, IOException, RowsExceededException, WriteException {
//json数据字符串
String str="["+
"{'name':1,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':2,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':3,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':4,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':5,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':1,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':2,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':3,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':4,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':5,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':2,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':3,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':4,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':5,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':2,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':3,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':4,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'},"+
"{'name':5,'firstname':'mo','lastname':'zeliang','age':10,'addr':'广州'}";
String filePath="c:\\json.xls";
createExcel(filePath,str);
}
/**
* 生成excel文件
* @param filePath 生成的文件路径
* @param jsonStr json数据字符串
* @throws IOException
* @throws RowsExceededException
* @throws WriteException
* @author mzl
*/
public static void createExcel(String filePath,String jsonStr) throws IOException, RowsExceededException, WriteException{
//兴建workbook
WritableWorkbook workbook= Workbook.createWorkbook(new File(filePath));
WritableSheet sheet=workbook.createSheet("json", 0);
int row=0;
//把字符串转为json数组
JSONArray array=JSONArray.fromObject(jsonStr);
//获取json的全部key
Object [] keys=array.getJSONObject(0).keySet().toArray();
//把json数据的key作为excel的表头
for(int i=0;i<keys.length;i++){
Label label=new Label(i,row,keys[i].toString());
sheet.addCell(label);
}
//插入内容
for(int i=0;i<array.size();i++){
row++;
JSONObject object=array.getJSONObject(i);
for(int j=0;j<keys.length;j++){
Label label=new Label(j,row,object.get(keys[j].toString()).toString());
sheet.addCell(label);
}
}
//输出文件
workbook.write(); // 写入文件
workbook.close();
}
}