json格式数据转化为excel表格中数据

在工作中,经常会遇见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;
    }

}


这篇文章讲述的转化是很基础的部分,希望对大家有所帮助,如果文章有错误希望大家能为我指正。

    原文作者:迷&城
    原文地址: https://blog.csdn.net/qq_40985401/article/details/101536847
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞