1. 程式人生 > >Excel檔案轉Json格式的Java原始碼

Excel檔案轉Json格式的Java原始碼

具體的業務需求是這樣的:同事在抓取一些網站時網站上有大量的附件下載下來後需要進行入庫操作,這時就需要將Excel格式的資料轉換成Json格式入到nosql資料庫中。剛接到這個任務時我查了一下office2016集成了Json轉Excel格式的外掛,使用此外掛還需要出20元購買,最後發現該外掛只能轉換正規的Excel格式當Excel有單元格合併的情況轉換會出錯。為了保證資料的準確性最後還是決定自己寫吧,白白浪費20大洋。

public class JsonUtil {
private static int rowNumber;
private static int cellNumber;
private static 
Logger logger = LoggerFactory.getLogger(JsonUtil.class); public static void createJson(){ FileInputStream inputStream = null; FileOutputStream output=null; try { inputStream = new FileInputStream(new File(FileUtil.ExcelPath)); Workbook workBook = new HSSFWorkbook(inputStream); //讀取工作簿 Sheet sheet = workBook.
getSheetAt(0); int n = sheet.getLastRowNum();List<String> list = new ArrayList<String>(); for(rowNumber=0; rowNumber<8;rowNumber++){ //尋找標題欄 Row row = sheet.getRow(rowNumber); list.clear(); for(int j=0; j< FileUtil.JsonKey.length; j++){ Cell cell = row.getCell(j); String value = cell.
getStringCellValue(); list.add(value); } String [] value = list.toArray(new String[list.size()]); System.out.println("value[0]為:"+value[0]); System.out.println("FileUtil.JsonKey[0]為:"+FileUtil.JsonKey[0]); if(value[0].equals(FileUtil.JsonKey[0])){ break; } } for(int rown = ++rowNumber; rown <=sheet.getLastRowNum();rown++){ //獲取標題欄以後的行 Row row1 = sheet.getRow(rown); Map<String,String> map = new HashMap<
String,String>(); for(cellNumber=0; cellNumber<</span>FileUtil.JsonKey.length; cellNumber++){//獲取每個單元格中的值 String valueone=null; switch (row1.getCell(cellNumber).getCellType()){ case HSSFCell.CELL_TYPE_STRING: valueone = row1.getCell(cellNumber).getStringCellValue(); break; case HSSFCell.CELL_TYPE_FORMULA: valueone = row1.getCell(cellNumber).getCellFormula(); break; case HSSFCell.CELL_TYPE_NUMERIC: HSSFDataFormatter dataFormatter = new HSSFDataFormatter(); valueone=dataFormatter.formatCellValue(row1.getCell(cellNumber)); break; } map.put(FileUtil.JsonKey[cellNumber],valueone); } String jsonObject = JSONObject.fromObject(map).toString(); output = new FileOutputStream(new File(FileUtil.JsonPath),true); output.write(jsonObject.getBytes()); output.write("\r\n".getBytes()); } } catch (FileNotFoundException e) { logger.info("=====沒有找到需要轉換的Excel檔案,請檢查路徑是否正確====="); e.printStackTrace(); }catch (IOException e) { e.printStackTrace(); }finally {
try {
if(output != null){
        output.close();
         inputStream.close()
       }
       logger.info("-----解析結束-----");
} catch (IOException e) {e.printStackTrace(); } }
    }
}