有的時候發來數據的文件是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格式
*/
private static JSONObject MapToJson(Map map) {
JSONObject jsonObject = new JSONObject(map);
return jsonObject;
}
在不同的節點put值時,我是這樣做的,好理解。調用了上面提到的方法
最後可以打印下 j ,把結果放到json在線檢測上看一下是不是正確
注意的點:
這是我設計的比較簡單的,其中不包括 如:
合併單元格驗證-------我是直接按照行列座標讀取值,比較死板
數據先裝進Map再轉成json--------我是一節一節的先轉成json,再拼接組裝,比較重複
……
LG