把excel文件轉成json格式

有的時候發來數據的文件是excel格式的,而又需要把它們轉成json格式傳遞給服務端

主要分爲:1.獲取excel文件   2.獲取文件的工作表sheet  3.獲取指定單元格的數據 (該版本屬於邏輯簡單好理解的)4.獲取的值轉成json

主要使用的jar包的座標:(我創建的是maven項目),而解析json的包就是 org.json


分步驟來是依次封裝的幾個方法:

第一步:獲取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節點可以這樣:


在不同的節點put值時,我是這樣做的,好理解。調用了上面提到的方法


最後可以打印下 j ,把結果放到json在線檢測上看一下是不是正確


注意的點:

這是我設計的比較簡單的,其中不包括 如:

合併單元格驗證-------我是直接按照行列座標讀取值,比較死板

數據先裝進Map再轉成json--------我是一節一節的先轉成json,再拼接組裝,比較重複

……



LG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章