excel文件中的数据转化为json格式并输出json文件

2023-02-18 00:00:00 文件 输出 转化为

1:需求:
将excel中的数据获取出来,转化为json格式,之后输出到.json文件中。

2:步骤:
(1): 将excel中的数据获取出来,使用jsonObject转化为json格式字符串
(2):使用输出流将json字符串输出到json文件中

3:需要的依赖:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10-FINAL</version>
</dependency>

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10-FINAL</version>
</dependency>

<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<classifier>jdk15</classifier>
<version>2.2.3</version>
</dependency>

4:代码

public class ExcelTojson { 
	//json的key
	private static String[] titleArray = {  "userName", "phoneNum"};
	public static void main(String[] args) { 
		InputStream is = null;
		String excelToJson = excelToJson(is);
		try { 
			createJsonFile(excelToJson);
		} catch (IOException e) { 
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static String excelToJson(InputStream is) { 
		JSONObject jsonRow = new JSONObject();
		try { 
			// 获取文件
			is = new FileInputStream("C:\\Users\\Administrator\\Desktop\\新 建 XLSX 工作表.xlsx");
			// 创建excel工作空间
			Workbook workbook = WorkbookFactory.create(is);
			// 获取sheet页的数量
			int sheetCount = workbook.getNumberOfSheets();
			// 遍历每个sheet页
			for (int i = 0; i < sheetCount; i++) { 
				// 获取每个sheet页
				Sheet sheet = workbook.getSheetAt(i);
				// 获取sheet页的总行数
				int rowCount = sheet.getPhysicalNumberOfRows();
				// 遍历每一行
				for (int j = 0; j < rowCount; j++) { 
					//记录每一行的一个唯一标识作为json的key
					String key="";
					// 获取列对象
					Row row = sheet.getRow(j);
					// 获取总列数
					int cellCount = row.getPhysicalNumberOfCells();
					Map<String, String> map = new HashMap<String, String>();
					//除去第一行的标题
					if (j > 0) { 
						// 遍历所有数据
						for (int n = 0; n < cellCount; n++) { 
							// 获取每一个单元格
							Cell cell = row.getCell(n);
							// 在读取单元格内容前,设置所有单元格中内容都是字符串类型
							cell.setCellType(Cell.CELL_TYPE_STRING);
							// 按照字符串类型读取单元格内数据
							String cellValue = cell.getStringCellValue();
							if(n==1) { 
								key=cellValue;
							}
							map.put(titleArray[n], cellValue);
						}
					} 
					if (map.size() != 0) { 
						jsonRow.put(key,map);
					}
				}
			}
			System.out.println(jsonRow.toString());
		} catch (Exception e) { 
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return jsonRow.toString(); 
	}

	public static void createJsonFile(String jsonData) throws IOException { 
		File file = new File("C:\\Users\\Administrator\\Desktop\\用户.json");
		//连接流
		FileOutputStream fos=null;
		//链接流
		BufferedOutputStream bos =null;
		try { 
			fos = new FileOutputStream(file);
			bos = new BufferedOutputStream(fos);
			bos.write(jsonData.getBytes());;
			bos.flush();
		} catch (FileNotFoundException e) { 
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally { 
			if(null!=bos) { 
				bos.close();
			}
			if(null!=fos) { 
				fos.close();
			}
		}
	}
}

4:效果

excel文件数据:
《excel文件中的数据转化为json格式并输出json文件》
 json文件

{“20161031993”:{“phoneNum”:“20161031993”,“userName”:“小明”},“20161031974”:{“phoneNum”:“20161031974”,“userName”:“小红”},“20161031847”:{“phoneNum”:“20161031847”,“userName”:“小张”},“20161031893”:{“phoneNum”:“20161031893”,“userName”:“小李”},“20161032008”:{“phoneNum”:“20161032008”,“userName”:“小王”},“20161031811”:{“phoneNum”:“20161031811”,“userName”:“小牛”},“20161032052”:{“phoneNum”:“20161032052”,“userName”:“小宋”},“20161032042”:{“phoneNum”:“20161032042”,“userName”:“小金”}}

5:改进

可以查找java代码,将输出的json格式化,使其更加美观。

    原文作者:陈皮糖chen
    原文地址: https://blog.csdn.net/weixin_45659376/article/details/109290266
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章