JAVA中的Excel到Json转换器

我试图将excel数据转换为JSON格式。 我成功通过读取行​​和列来转换Excel数据并将数据设置为列表,然后将该List转换为JSON格式。

在此处输入图像描述

在此处输入图像描述

但是,我坚持下一级JSON,格式就像 在此处输入图像描述

这是我使用的代码,但尚未开始如何使像3列数据这样的嵌套数据应该像上面的图像一样放在一个数组中。

Pojo类

public class Products implements Serializable{ @Id @Column(name="ID") private String id; @Column(name="PRODUCTID") private String productId; @Column(name="NAMEID") private String nameId; @Column(name="NAME") private String name; @Column(name="P_DESC") private String desc; @Column(name="DIMENSION") private String dimension; @Column(name="CATEGORY") private String category; @Column(name="SUB_CATEGORY") private String subcategory; @Column(name="CATEGORYID") private String categoryId; @Column(name="SUBCATEGORYID") private String subcategoryId; @Column(name="TAGS") private String tags; @Column(name="DESIGNER") private String designer; @Column(name="CURR") private String curr; @Column(name="POPULARITY") private String popularity; @Column(name="RELEVANCE") private String relevance; @Column(name="SHORTLISTED") private String shortlisted; @Column(name="LIKES") private String likes; @Column(name="CREATE_String") private String createDt; @Column(name="PAGEID") private String pageId; @Column(name="STYLENAME") private String styleName; @Column(name="STYLEID") private String styleId; @Column(name="PRICERANGE") private String priceRange; @Column(name="PRICEID") private String priceId; @Column(name="DEFAULT_PRICE") private String defaultPrice; @Column(name="DEFAULT_MATERIAL") private String defaultMaterial; @Column(name="DEFAULT_FINISH") private String defaultFinish; /* setters and getters */ } 

ExceltoJsonConverter类

 public static void uploadXLS(MultipartFile file, Document doc) throws IOException { Products products = new Products(); List productsList = new ArrayList(); logger.info("uploadExcel method"); HSSFWorkbook wb = null; try { wb= new HSSFWorkbook(file.getInputStream()); System.out.println("workbook: "+wb); HSSFSheet sheet = wb.getSheetAt(0); System.out.println("worksheet: "+sheet); HSSFRow row; Iterator iterator = sheet.iterator(); while (iterator.hasNext()) { products = new Products(); Row nextRow = iterator.next(); Iterator cellIterator = nextRow.cellIterator(); Cell cell = cellIterator.next(); Iterator cells = nextRow.cellIterator(); cell=(HSSFCell) cells.next(); if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) { System.out.print(cell.getStringCellValue()+" "); } else if(cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) { System.out.print(cell.getNumericCellValue()+" "); } else if(HSSFDateUtil.isCellDateFormatted(cell)){ Date date = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()); } else { //U Can Handel Boolean, Formula, Errors } products.setId(new DataFormatter().formatCellValue(nextRow.getCell(0))); products.setProductId(new DataFormatter().formatCellValue(nextRow.getCell(1))); products.setNameId(new DataFormatter().formatCellValue(nextRow.getCell(2))); products.setName(new DataFormatter().formatCellValue(nextRow.getCell(3))); products.setDesc(new DataFormatter().formatCellValue(nextRow.getCell(4))); products.setDimension(new DataFormatter().formatCellValue(nextRow.getCell(5))); products.setCategory(new DataFormatter().formatCellValue(nextRow.getCell(6))); products.setSubcategory((new DataFormatter().formatCellValue(nextRow.getCell(7)))); products.setCategoryId(new DataFormatter().formatCellValue(nextRow.getCell(8))); products.setSubcategoryId((new DataFormatter().formatCellValue(nextRow.getCell(9)))); products.setTags((new DataFormatter().formatCellValue(nextRow.getCell(10)))); products.setDesigner((new DataFormatter().formatCellValue(nextRow.getCell(11)))); products.setCurr((new DataFormatter().formatCellValue(nextRow.getCell(12)))); products.setPopularity((new DataFormatter().formatCellValue(nextRow.getCell(13)))); products.setRelevance((new DataFormatter().formatCellValue(nextRow.getCell(14)))); products.setShortlisted((new DataFormatter().formatCellValue(nextRow.getCell(15)))); products.setLikes((new DataFormatter().formatCellValue(nextRow.getCell(16)))); products.setCreateDt((new DataFormatter().formatCellValue(nextRow.getCell(17)))); products.setPageId((new DataFormatter().formatCellValue(nextRow.getCell(18)))); products.setStyleName((new DataFormatter().formatCellValue(nextRow.getCell(19)))); products.setStyleId((new DataFormatter().formatCellValue(nextRow.getCell(20)))); products.setPriceRange((new DataFormatter().formatCellValue(nextRow.getCell(21)))); products.setPriceId((new DataFormatter().formatCellValue(nextRow.getCell(22)))); products.setDefaultPrice((new DataFormatter().formatCellValue(nextRow.getCell(23)))); products.setDefaultMaterial((new DataFormatter().formatCellValue(nextRow.getCell(24)))); products.setDefaultFinish((new DataFormatter().formatCellValue(nextRow.getCell(25)))); Map inputMap = new HashMap(); inputMap.put("name", "Java2Novice"); inputMap.put("site", "http://java2novice.com"); productsList.add(products); System.out.println(productsList); // JSON CONVERTER ObjectMapper mapper = new ObjectMapper(); System.out.println("productsList: "+products); DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); Date date = new Date(); String location = dateFormat.format(date); System.out.println("productsList final: "+products); // Convert object to JSON string and save into file directly mapper.writeValue(new File("D:\\"+location+"mygubbi.json"), productsList); // Convert object to JSON string and save into file directly mapper.writeValue(new File("D:\\products.json"), productsList); // Convert object to JSON string String jsonInString = mapper.writeValueAsString(productsList); System.out.println("JsonInString " +jsonInString); // Convert object to JSON string and pretty print jsonInString = mapper.writerWithDefaultPrettyPrinter() .writeValueAsString(products); System.out.println("Final Json" +mapper.writerWithDefaultPrettyPrinter() .writeValueAsString(products)); mapper.writeValue(new File("D:\\productsJson.json"), jsonInString); } } catch (JsonGenerationException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { } } 

请建议我如何获取Json格式的多列数据,如下所示 在此处输入图像描述

非常感谢您提前…希望任何人都可以今天做我的一天:)

我也遇到过这种情况。 您只需使用第二个工作表中的字段创建A类。 例如:

 public class Somename{ private String abc; private String xyz; // getters and setters } 

在你的pojo类中定义一个数组

 private Somename some[]; 

转到exceltoJson转换器类。尝试创建哈希映射并获取该表中需要的详细信息。 而已…

  public static Map getImgs(HSSFWorkbook wb) { Map hm1 = new HashMap>(); HSSFSheet sheet = wb.getSheetAt(2); Iterator iterator= sheet.iterator(); ArrayList al = new ArrayList(); while (iterator.hasNext()) { Row row = iterator.next(); String sno = new DataFormatter().formatCellValue(row.getCell(0)); if (hm1.get(sno) == null) { hm1.put(sno, new ArrayList()); } String some= new DataFormatter().formatCellValue(row .getCell(1)); Somename img1 = new Somename(some); System.out.println(img1); ArrayList r = (ArrayList) hm1.get(sno); r.add(img1); } return hm1; } 

然后添加这个uploadXLS,

  ArrayList al = (ArrayList) hm1.get(id_prod); Somename[] ar = new Images[al.size()]; products.setSome(al.toArray(imgfar)); 

可能这会对你有所帮助。