在工作中,经常会遇见json格式的数据,因为json格式比xml格式更加简单方便,所以json格式越来越为大众所接受。这篇文章主要结合自己工作的经验,为各位同学分享一下json格式数据转化为excel表格中数据的办法,仅供大家参考学习。
一、前提知识
1、XML
以下是百度到的一个XML示例:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="osg.AndroidExample"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:targetSdkVersion="8" android:minSdkVersion="8"></uses-sdk>
<uses-feature android:glEsVersion="0x00020000"/> <!-- OpenGL min requierements (2.0) -->
<uses-permission android:name="android.permission.INTERNET"/>
<application android:label="@string/app_name" android:icon="@drawable/osg">
<activity android:name=".osgViewer"
android:label="@string/app_name" android:screenOrientation="landscape"> <!-- Force screen to landscape -->
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
可以从上面代码看出,XML格式的数据有大量繁琐的代码。上学时学习的XML及各种模式(修饰模式、工厂模式等)已经够折磨人的了,现在再来使用,仍然有心理阴影。工作之后,接触到了json格式,开始抵触(毕竟XML用习惯了,谁也不愿意随便改变习惯嘛),使用到后来,只能说“真香!”。
2、json
以下是百度的一个示例:
{
"people":[
{
"firstName": "Brett",
"lastName":"McLaughlin"
},
{
"firstName":"Jason",
"lastName":"Hunter"
}
]
}
对比上面的xml格式,是不是简便了许多?json格式主要就是一个个键值对。
二、json转化为excel表格数据
json格式确实直观,但是有时候我们需要对数据进行处理,此时,我们常用的就是excel表格。
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
public class Test {
public static void main(String[] args) {
try{
String filePath="这里写导出excel文件的路径";
//读取excel文件
InputStream is = new FileInputStream(filePath);
//创建excel工作薄
XSSFWorkbook workbook = new XSSFWorkbook(is);
//创建一个工作表sheet
XSSFSheet sheet = workbook.getSheetAt(0);
//创建第一行表头数据
XSSFRow row1 = sheet.createRow(0);
XSSFCell cell_first1 = row1.createCell(0);
cell_first1.setCellValue("userName");
XSSFCell cell_second1 = row1.createCell(1);
cell_second1.setCellValue("displayName");
XSSFCell cell_third1 = row1.createCell(2);
cell_third1.setCellValue("roles__value");
XSSFCell cell_forth1 = row1.createCell(3);
cell_forth1.setCellValue("roles__displayName");//这一段主要是想要生成的表格的样式
//读取json数据并解析
JSONArray jsonData = getJsonData();
int colunm = 1;//行数计算器,从第二行开始写入
for(int i=0;i<jsonData.size();i++) {
JSONObject firstModularObject = jsonData.getJSONObject(i);
String username=firstModularObject.get("userName").toString();
try{
String displayname=firstModularObject.get("displayName").toString();
JSONArray secondModular=(JSONArray)firstModularObject.get("roles");
if(secondModular.size()>0){
//第二级目录
for(int l=0;l<secondModular.size();l++) {
JSONObject secondModularJSONObject = secondModular.getJSONObject(l);
String value=secondModularJSONObject.get("value").toString();
String displayName2=secondModularJSONObject.get("displayName").toString();
XSSFRow row = sheet.createRow(colunm);
XSSFCell cell_first = row.createCell(0);
cell_first.setCellValue(username);
XSSFCell cell_second = row.createCell(1);
cell_second.setCellValue(displayname);
XSSFCell cell_third = row.createCell(2);
cell_third.setCellValue(value);
XSSFCell cell_forth = row.createCell(3);
cell_forth.setCellValue(displayName2);
colunm++;
}
}else{
XSSFRow row = sheet.createRow(colunm);
XSSFCell cell_first = row.createCell(0);
cell_first.setCellValue(username);
XSSFCell cell_second = row.createCell(1);
cell_second.setCellValue(displayname);
colunm++;
}
}catch (NullPointerException e1) {
System.out.println("发生异常的原因为 :"+e1.getMessage());
}
}//end for
//保存到excel
FileOutputStream outputStream = new FileOutputStream(filePath);
workbook.write(outputStream);
System.out.println("写入成功");
outputStream.close();
}catch (Exception e) {
e.printStackTrace();
}
}
/** * 读取json数据并解析 * @return * @throws IOException */
public static JSONArray getJsonData() throws IOException {
String filePath="这里写导入json文件的路径";
File file = new File(filePath);
JSONArray jsonArray = null;
try {
String input = FileUtils.readFileToString(file, "UTF-8");
JSONObject jsonObject = JSONObject.fromObject(input);
if (jsonObject != null) {
jsonArray = jsonObject.getJSONArray("Resources");
}
} catch (Exception e) {
e.printStackTrace();
jsonArray = null;
}
return jsonArray;
}
}
这篇文章讲述的转化是很基础的部分,希望对大家有所帮助,如果文章有错误希望大家能为我指正。