日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

【Java】JSON转EXCEL,支持多个数组生成多个sheet、附表头替换

發(fā)布時(shí)間:2023/12/20 javascript 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Java】JSON转EXCEL,支持多个数组生成多个sheet、附表头替换 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

JSON轉(zhuǎn)EXCEL

2022/4/22 周五

參考博客 JAVA-JSON文件轉(zhuǎn)excel文件 ,使用的是HSSFWorkbook。

我修改后添加了可生成多個(gè)sheet,sheet頁名為JSON參數(shù)數(shù)組的節(jié)點(diǎn)名稱,可替換節(jié)點(diǎn)名稱,以及把參數(shù)的英文字段名替換為中文表頭。

0積分下載demo:JSON轉(zhuǎn)EXCEL


先貼json轉(zhuǎn)excel方法,參數(shù)為要生成的文件名路徑、要轉(zhuǎn)換的json串、json數(shù)組的節(jié)點(diǎn)名稱(作為生成的sheet頁名):

public static void jsonToExcel(String fileName, JSONObject jsonObject, String[] ArrayKeys) throws Exception {// 創(chuàng)建HSSFWorkbook對象HSSFWorkbook wb = new HSSFWorkbook();// 多個(gè)數(shù)組的建成多個(gè)sheetfor (String arrayKey : ArrayKeys) {// 創(chuàng)建HSSFSheet對象HSSFSheet sheet = wb.createSheet(ArrayKeys.length > 1 ? arrayKey : "sheet"); // 因?yàn)閼械枚嘞朊?#xff0c;如果只有一個(gè)sheet頁我就不設(shè)置名稱了Set keys = null;int rowNo = 0;HSSFRow row = sheet.createRow(0);JSONArray jsonArray = jsonObject.getJSONArray(arrayKey);//獲取標(biāo)題for (int i = 0; i < jsonArray.size(); i++) {if (keys == null) {JSONObject item = jsonArray.getJSONObject(i);keys = item.keySet();for (Object s : keys) {HSSFCell cell = row.createCell(rowNo++);cell.setCellValue(s.toString());}} else {break;}}// 獲取數(shù)據(jù)一次循環(huán)一行for (int i = 0; i < jsonArray.size(); i++) {rowNo = 0;JSONObject item = jsonArray.getJSONObject(i);row = sheet.createRow(i + 1);keys = item.keySet();for (Object s : keys) {HSSFCell cell = row.createCell(rowNo++);cell.setCellValue(item.getString(s.toString()));}}}// 創(chuàng)建Excel文件File file = new File(fileName);file.createNewFile();// 輸出到Excel文件FileOutputStream output = new FileOutputStream(fileName);wb.write(output);wb.close();output.flush();output.close();}

再給一個(gè)調(diào)用示例,包括把從數(shù)據(jù)庫查出的英文的字段名替換為中文表頭(注意名稱不要有重復(fù),否則重復(fù)的列就會(huì)少,因?yàn)楸桓采w了):

public static void main(String[] args) throws Exception {// TODO:從接口獲取數(shù)據(jù) // String ret = HttpUtils.sendPost("url","param");String ret = "這里是JSON串";System.out.println("接口返回參數(shù):" + ret);// 替換表頭String replace = ret.replaceAll("BY_MONTH_INC", "當(dāng)月同比").replaceAll("BY_YEAR_INC", "當(dāng)年同比").replaceAll("BY_DATE", "當(dāng)日(萬元)").replaceAll("BY_MONTH", "當(dāng)月(萬元)").replaceAll("BY_YEAR", "當(dāng)年(萬元)")// 也可以把JSON數(shù)組的節(jié)點(diǎn)名稱替換掉,這樣sheet頁的名稱也替換成了想要的文字.replaceAll("DATA1", "數(shù)據(jù)一").replaceAll("DATA2", "數(shù)據(jù)二");JSONObject jsonObject = JSONObject.parseObject(replace, Feature.OrderedField);// 設(shè)置數(shù)組的節(jié)點(diǎn)名稱 // String[]ArrayKeys = new String[]{"DATA1","DATA2"};String[]ArrayKeys = new String[]{"數(shù)據(jù)一","數(shù)據(jù)二"};// 設(shè)置生成的文件名及路徑String fileName = "C:/User/Desktop/test.xlsx";// 調(diào)用轉(zhuǎn)換方法jsonToExcel(fileName, jsonObject, ArrayKeys);System.out.println("生成文件成功:"+fileName);}

測試JSON串如下:

{"DATA1":[{"BY_DATE":"263.38","BY_MONTH":"4391.58","BY_MONTH_INC":"-27.79%","BY_YEAR":"20356.44","BY_YEAR_INC":"-14.87%"},{"BY_DATE":"91.81","BY_MONTH":"1087.39","BY_MONTH_INC":"-27.00%","BY_YEAR":"5879.43","BY_YEAR_INC":"-12.10%"},{"BY_DATE":"40.29","BY_MONTH":"533.51","BY_MONTH_INC":"-30.89%","BY_YEAR":"2937.50","BY_YEAR_INC":"-27.67%"}],"DATA2":[{"BY_DATE":"123.38","BY_MONTH":"123.58","BY_MONTH_INC":"-12.79%","BY_YEAR":"12345.44","BY_YEAR_INC":"-12.87%"},{"BY_DATE":"12.81","BY_MONTH":"1234.39","BY_MONTH_INC":"-12.00%","BY_YEAR":"1234.43","BY_YEAR_INC":"-12.10%"},{"BY_DATE":"98.29","BY_MONTH":"987.51","BY_MONTH_INC":"-98.89%","BY_YEAR":"9876.50","BY_YEAR_INC":"-89.67%"}] }

生成的excel:

總結(jié)

以上是生活随笔為你收集整理的【Java】JSON转EXCEL,支持多个数组生成多个sheet、附表头替换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。