将Json数组导出到Excel文件

如需转载分享,请标明出处,且不用于盈利为目的,谢谢合作!

将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里的数据
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值