public class FileTest { public static void jsonToExcel(String fileName, JSONObject jsonObject, String[] ArrayKeys) throws Exception { // 创建HSSFWorkbook对象 HSSFWorkbook wb = new HSSFWorkbook(); // 多个数组的建成多个sheet for (String arrayKey : ArrayKeys) { // 创建HSSFSheet对象 HSSFSheet sheet = wb.createSheet(ArrayKeys.length > 1 ? arrayKey : "sheet"); Set keys = null; int rowNo = 0; HSSFRow row = sheet.createRow(0); JSONArray jsonArray = jsonObject.getJSONArray(arrayKey); //如果为空不加这个if会报空指针,这样为空的话会自动跳过数据为空的sheet表 if (jsonArray !=null ) { //获取标题 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; } } // 获取数据一次循环一行 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())); } } } } // 创建Excel文件 File file = new File(fileName); file.createNewFile(); // 输出到Excel文件 FileOutputStream output = new FileOutputStream(fileName); wb.write(output); wb.close(); output.flush(); output.close(); } public static void main(String[] args) throws Exception { String ret = ""; //读取本地json文件 String filePath = ""; // 创建一个文件对象 File file = new File(filePath); try { // 创建一个FileReader对象 FileReader fileReader = new FileReader(file); if (file.exists()) { // 创建一个BufferedReader对象 BufferedReader reader = new BufferedReader(fileReader); // 创建一个字符串变量用于存储文件内容 String line; StringBuilder content = new StringBuilder(); // 逐行读取文件内容 while ((line = reader.readLine()) != null) { content.append(line).append("\n"); } ret = content.toString(); } else { System.out.println("文件不存在"); } // 关闭文件 fileReader.close(); } catch (IOException e) { e.printStackTrace(); } // 替换表头 String replace = ret.replaceAll("nsrsbh", "nsrsbh") //可以设置所有sheet中的表头名(不要重复,重复可能会导致数据错误) .replaceAll("ssqjz", "ssqjz") .replaceAll("wfss", "wfss") .replaceAll("clcfsj", "clcfsj") // 也可以把JSON数组的节点名称替换掉,这样sheet页的名称也替换成了想要的文字(第一个参数为json字段名,第二个为sheet表名) .replaceAll("qyxxList", "sheet1") .replaceAll("qyxxList", "sheet2"); ; JSONObject jsonObject = JSONObject.parseObject(replace, Feature.OrderedField); // 设置数组的节点名称 String[]ArrayKeys = new String[]{"sheet1","sheet2"};//可设多个 // 设置生成的文件名及路径 String fileName = "生成文件名及地址(需要提前创建好)"; // 调用转换方法 jsonToExcel(fileName, jsonObject, ArrayKeys); System.out.println("生成文件成功:"+fileName); } }
07-22
6425
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
04-28
3606
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
06-28
1991
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-13
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交