如需转载分享,请标明出处,且不用于盈利为目的,谢谢合作!
将Json数组导出到Excel文件
1.pom.xml中添加依赖
<!--alibaba fastjson-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.28</version>
</dependency>
<dependency>
<groupId>net.sourceforge.jexcelapi</groupId>
<artifactId>jxl</artifactId>
<version>2.6.10</version>
</dependency>
<!-- JSONObject对象依赖的jar包 -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>net.sf.ezmorph</groupId>
<artifactId>ezmorph</artifactId>
<version>1.0.6</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.2.3</version>
<classifier>jdk15</classifier><!-- 指定jdk版本 -->
</dependency>
2.新建类JsonToExcel.java
import jxl.Workbook;
import jxl.write.Label;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Iterator;
/**
* 将Json数组导出到Excel文件
*/
public class JsonToExcel {
/**
* src:定义下载的文件路径
*
* @param src
*/
public static void createExcel(String src, JSONArray json) {
try {
// 新建文件
File file = new File(src);
file.createNewFile();
// 创建工作薄
OutputStream outputStream = new FileOutputStream(file);
WritableWorkbook writableWorkbook = Workbook.createWorkbook(outputStream);
// 创建新的一页
WritableSheet sheet = writableWorkbook.createSheet("First sheet", 0);
JSONArray jsonArray = json;
// 单元格对象
Label label;
// 列数计数
int column = 0;
// 将第一行信息加到页中。如:姓名、年龄、性别
JSONObject first = jsonArray.getJSONObject(0);
// 得到第一项的key集合
Iterator<String> iterator = first.keys();
// 遍历key集合
while (iterator.hasNext()) {
// 得到key
String key = (String) iterator.next();
// 第一个参数是单元格所在列,第二个参数是单元格所在行,第三个参数是值
label = new Label(column++, 0, key);
// 将单元格加到页
sheet.addCell(label);
}
// 遍历jsonArray
for (int i = 0; i < jsonArray.size(); i++) {
// 得到数组的每项
JSONObject item = jsonArray.getJSONObject(i);
// 得到key集合
iterator = item.keys();
// 从第0列开始放
column = 0;
while (iterator.hasNext()) {
// 得到key
String key = iterator.next();
// 得到key对应的value
String value = item.getString(key);
// 第一个参数是单元格所在列,第二个参数是单元格所在行,第三个参数是值
label = new Label(column++, (i + 1), value);
// 将单元格加到页
sheet.addCell(label);
}
}
// 写入到excel文件中
writableWorkbook.write();
// 关闭文件,释放资源
writableWorkbook.close();
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
String str = "[\n" +
" {\n" +
" \"姓名\":\"张三\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"22\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"李四\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"23\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"王五\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"22\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"张三丰\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"100\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"楚雨荨\",\n" +
"\t \"性别\":\"女\",\n" +
"\t \"年龄\":\"22\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"张翰\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"23\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"张无忌\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"24\"\n" +
" },\n" +
"\t {\n" +
" \"姓名\":\"赵敏\",\n" +
"\t \"性别\":\"女\",\n" +
"\t \"年龄\":\"23\"\n" +
" }\n" +
" ]";
String str2 = "{\n" +
" \"data\": [\n" +
" {\n" +
" \"姓名\":\"张三\",\n" +
"\t \"性别\":\"男\",\n" +
"\t \"年龄\":\"22\"\n" +
" }\n" +
" ],\n" +
" \"message\": \"请求成功\",\n" +
" \"status\": 200\n" +
"}";
JSONObject jsonObject = JSONObject.fromObject(str2);
JSONArray data = jsonObject.getJSONArray("data");
createExcel("d:/wocaca1.xls", data);
JSONArray jsonArray = JSONArray.fromObject(str);
createExcel("d:/wocaca2.xls", jsonArray);
}
}
3.文件结果
文件wocaca1.xls里的数据
文件wocaca2.xls里的数据