把excel文件转成json格式

有的时候发来数据的文件是excel格式的,而又需要把它们转成json格式传递给服务端

主要分为:1.获取excel文件   2.获取文件的工作表sheet  3.获取指定单元格的数据 (该版本属于逻辑简单好理解的)4.获取的值转成json

主要使用的jar包的坐标:(我创建的是maven项目),而解析json的包就是 org.json

把excel文件转成json格式_第1张图片

分步骤来是依次封装的几个方法:

第一步:获取excel文件和工作表sheet ,默认获取第一个sheet,也可以根据工作需要修改参数获取其他的sheet

    /*
	 * 该方法用于获取指定excel文件的工作表
	 */
	private static Sheet getSheet(String path) {
		File file = new File("Excel文件所在的位置");
		Workbook workbook = null;
		try {
			workbook = WorkbookFactory.create(file);
		} catch (Exception e) {
			e.printStackTrace();
		}
		Sheet sheet = workbook.getSheetAt(0);
		return sheet;
	}

第二步:获取指定单元格的数据,该方法中两个getRow()是因为我需要一次性获取同一列两个单元格的值,循环是为了可以一次性获取若干个列

    /*
	 * 该方法用于获取工作表中一定范围单元格的值
	 * 参数 start表示起始单元格所在位置,end表示结束单元格所在位置
	 */
	private static Map getValue(int start,int end) {
		Sheet sheet = getSheet("");
		Map map = new HashMap<>();
		for(int i=start;i<=end;i++){
			//获取标题最底行
			String a = sheet.getRow(3).getCell(i-1).getStringCellValue();
			//获取材料所在行
			String b = sheet.getRow(5).getCell(i-1).getStringCellValue();
			map.put(a,b);
		}
		return map;
	}
返回值格式是map格式,因为后续的转json操作是直接把map转成json格式

第三步:先创建一个空的json,按照业务需求依次put进相应的节点,因为是直接操作json数据,所以需要一个方法:

    /*
	 * 该方法用于把map数据转为json格式
	 */
	private static JSONObject MapToJson(Map map) {
		JSONObject jsonObject = new JSONObject(map);
		return jsonObject;
	}

新建和put节点可以这样:

把excel文件转成json格式_第2张图片

在不同的节点put值时,我是这样做的,好理解。调用了上面提到的方法


最后可以打印下 j ,把结果放到json在线检测上看一下是不是正确


注意的点:

这是我设计的比较简单的,其中不包括 如:

合并单元格验证-------我是直接按照行列坐标读取值,比较死板

数据先装进Map再转成json--------我是一节一节的先转成json,再拼接组装,比较重复

……



LG

你可能感兴趣的:(小功能)