Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ApachePOI格式化对象中的输出_Java_Json_Excel_Object_Apache Poi - Fatal编程技术网

Java 使用ApachePOI格式化对象中的输出

Java 使用ApachePOI格式化对象中的输出,java,json,excel,object,apache-poi,Java,Json,Excel,Object,Apache Poi,您好,ppl我使用以下代码阅读excel工作表。您能否帮助我格式化对象中的输出数据,使我在使用一些api将对象转换为json时能够获得下面提到的json结构?我还附上了excel表格img供参考,即输出结构应类似于Map(列表(Map(Map)),也请参考json public class readingexcel { public void readXLSXFile(String fileName) { InputStream XlsxFileToRead = nul

您好,ppl我使用以下代码阅读excel工作表。您能否帮助我格式化对象中的输出数据,使我在使用一些api将对象转换为json时能够获得下面提到的json结构?我还附上了excel表格img供参考,即输出结构应类似于Map(列表(Map(Map)),也请参考json

public class readingexcel {

    public void readXLSXFile(String fileName) {
        InputStream XlsxFileToRead = null;
        XSSFWorkbook workbook = null;
        try {
            XlsxFileToRead = new FileInputStream(fileName);

            //Getting the workbook instance for xlsx file
            workbook = new XSSFWorkbook(XlsxFileToRead);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        //getting the first sheet from the workbook using sheet name. 
        // We can also pass the index of the sheet which starts from '0'.
        XSSFSheet sheet = workbook.getSheet("Sheet1");
        XSSFRow row;
        XSSFCell cell;

        //Iterating all the rows in the sheet
        Iterator rows = sheet.rowIterator();

        while (rows.hasNext()) {
            row = (XSSFRow) rows.next();

            //Iterating all the cells of the current row
            Iterator cells = row.cellIterator();

            while (cells.hasNext()) {
                cell = (XSSFCell) cells.next();

                if (cell.getCellType() == XSSFCell.CELL_TYPE_STRING) {
                    System.out.print(cell.getStringCellValue() + " ");
                } else if (cell.getCellType() == XSSFCell.CELL_TYPE_NUMERIC) {
                    System.out.print(cell.getNumericCellValue() + " ");
                } else if (cell.getCellType() == XSSFCell.CELL_TYPE_BOOLEAN) {
                    System.out.print(cell.getBooleanCellValue() + " ");

                } else { // //Here if require, we can also add below methods to
                            // read the cell content
                            // XSSFCell.CELL_TYPE_BLANK
                            // XSSFCell.CELL_TYPE_FORMULA
                            // XSSFCell.CELL_TYPE_ERROR
                }
            }
            System.out.println();
            try {
                XlsxFileToRead.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        readingexcel readXlsx = new readingexcel();
        readXlsx.readXLSXFile("stack.xlsx");    
    }

}

这是json结构(请忽略语法)


下面是根据需要将文件解析为
映射的完整代码(请参阅最后的建议改进)

  • 这可以解析XLS文件中的所有工作表,只要它们都具有相同的常规表结构

  • 将自动找到表位置(因为它们的名称位于左上角),您只需向
    extractTable()
    方法提供表的名称即可

代码

public class ExcelReader {

  public static void main(String[] args) {
    String jsonString = new ExcelReader().fileToJson("stack.xlsx");
    System.out.print(jsonString);
  }

  // Parses the file into a JSON string
  private String fileToJson(String filename) {
    List<XSSFSheet> sheets = getSheets(filename);
    Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> workbookMap = parseSheets(sheets);
    return toJsonString(workbookMap);
  }

  // Make a list of XSSFSheets out of the file
  private List<XSSFSheet> getSheets(String fileName) {
    List<XSSFSheet> sheets = new ArrayList<>();
    try(InputStream XlsxFileToRead = new FileInputStream(fileName)) {
      //Getting the workbook instance for xlsx file
      XSSFWorkbook workbook = new XSSFWorkbook(XlsxFileToRead);

      //Getting all the sheets
      for (int i=0; i<workbook.getNumberOfSheets(); i++) {
        sheets.add(workbook.getSheetAt(i));
      }

    } catch (IOException e) {
      e.printStackTrace();
    }
    return sheets;
  }

  // Parse a list of sheets into the desired structure
  private Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> parseSheets(List<XSSFSheet> xsshSheets) {
    Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> workbookMap = new HashMap<>();
    for(XSSFSheet xssfSheet : xsshSheets) {
      String name = xssfSheet.getSheetName();
      Map<String, List<Map<String, Map<String, Integer>>>> sheetMap = parseSheet(xssfSheet);
      workbookMap.put(name, sheetMap);
    }
    return workbookMap;
  }


  // Parses a sheet into the desired structure
  private Map<String, List<Map<String, Map<String, Integer>>>> parseSheet(XSSFSheet xsshSheet) {
    List<Map<String, Map<String, Integer>>> months = extractTable(xsshSheet, "Month");
    List<Map<String, Map<String, Integer>>> weeks = extractTable(xsshSheet, "Week");
    List<Map<String, Map<String, Integer>>> days = extractTable(xsshSheet, "Daily");

    Map<String, List<Map<String, Map<String, Integer>>>> sheet = new HashMap<>();
    sheet.put("MONTH", months);
    sheet.put("WEEK", weeks);
    sheet.put("DAILY", days);
    return sheet;
  }

  // Extracts a table
  private List<Map<String, Map<String, Integer>>> extractTable(XSSFSheet sheet, String tableName) {
    Cell tablePosition = findTablePosition(sheet, tableName);
    if(tablePosition!=null)
      return extractTable(sheet, tablePosition);
    else return null;
  }

  // Finds the position of the cell with the given text
  private Cell findTablePosition(XSSFSheet sheet, String tableName) {
    for (Row row : sheet) {
      for (Cell cell : row) {
        if(cell.getCellTypeEnum() == CellType.STRING && tableName.equals(cell.getStringCellValue())) {
          return cell;
        }
      }
    }
    return null;
  }

  // Extract a table
  private List<Map<String, Map<String, Integer>>> extractTable(XSSFSheet sheet, Cell tablePosition) {
    List<Map<String, Map<String, Integer>>> table = new ArrayList<>();

    int headerRow = tablePosition.getRowIndex();
    int valuesHeaderColumn = tablePosition.getColumnIndex();

    // read all columns and rows until finding an empty one
    int row = headerRow + 1;
    int col = valuesHeaderColumn + 1;

    // read all columns starting at col
    while(true) {
      Map<String, Map<String, Integer>> tableColumn = new HashMap<>();
      Cell headerCell = sheet.getRow(headerRow).getCell(col);
      if(headerCell == null)
        break;
      String columnName = headerCell.getStringCellValue().toUpperCase();
      if("".equals(columnName))
        break;

      // read all rows starting at row
      Map<String, Integer> values = new HashMap<>();
      while(true) {
        Row valueHeaderRow = sheet.getRow(row);
        if(valueHeaderRow == null)
          break;
        Cell valueHeaderCell = valueHeaderRow.getCell(valuesHeaderColumn);
        String valueHeader = valueHeaderCell.getStringCellValue();
        if("".equals(valueHeader))
          break;
        Cell valueCell = sheet.getRow(row).getCell(col);
        Integer value = (int)valueCell.getNumericCellValue();
        values.put(valueHeader, value);
        row++;
      }

      tableColumn.put(columnName, values);
      // Add the columns map to the list
      table.add(tableColumn);
      col++;
      row = headerRow + 1;
    }
    return table;
  }

  // Create the JSON string using Jackson ObjectMapper
  private String toJsonString(Object o) {
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonString = null;
    try {
      jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(o);
    } catch(JsonProcessingException e) {
      e.printStackTrace();
    }
    return jsonString;
  }
}
建议的改进


你要求所有的结构都是地图和列表,但是我认为最好有POJO用于
工作簿
工作表
表格
。它将大大简化符号,并可以使用
ObjectMapper

以相同的方式写入JSON。您可以参考本文,请提供下载xls文件的链接,无法处理图像。您计划如何导出JSON?@Bentaye请检查我已附加excel文件,谢谢advance@GalAbracan还没有计划,我听说很少有api将数组转换成json,如果您有任何想法,请提出建议。非常感谢您的回答,请您帮助对多张具有相同格式的工作表执行相同的操作。以及处理动态更改的代码,即添加标题(即月、周),将来我们可能还会有每日和每小时的内容。@rahuluday欢迎!我可以快速尝试一下,如果我的答案对你有帮助的话,请向上投票并接受我的答案。@rahuluday在这里,修改了代码以处理多个页面,如果你需要的话,可以很容易地添加更多的表。请投票并接受答案!干杯是的,当然会这样做,很抱歉再次打扰您,代码必须以这样的方式,它必须动态地从配置文件中获取头,即月、周等,并且代码必须能够从配置文件中读取新头,例如每天、每小时。在extractTable方法中,您能帮我更改while(true)吗为每个循环创建循环还是为每个循环创建循环@本塔伊
public class ExcelReader {

  public static void main(String[] args) {
    String jsonString = new ExcelReader().fileToJson("stack.xlsx");
    System.out.print(jsonString);
  }

  // Parses the file into a JSON string
  private String fileToJson(String filename) {
    List<XSSFSheet> sheets = getSheets(filename);
    Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> workbookMap = parseSheets(sheets);
    return toJsonString(workbookMap);
  }

  // Make a list of XSSFSheets out of the file
  private List<XSSFSheet> getSheets(String fileName) {
    List<XSSFSheet> sheets = new ArrayList<>();
    try(InputStream XlsxFileToRead = new FileInputStream(fileName)) {
      //Getting the workbook instance for xlsx file
      XSSFWorkbook workbook = new XSSFWorkbook(XlsxFileToRead);

      //Getting all the sheets
      for (int i=0; i<workbook.getNumberOfSheets(); i++) {
        sheets.add(workbook.getSheetAt(i));
      }

    } catch (IOException e) {
      e.printStackTrace();
    }
    return sheets;
  }

  // Parse a list of sheets into the desired structure
  private Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> parseSheets(List<XSSFSheet> xsshSheets) {
    Map<String, Map<String, List<Map<String, Map<String, Integer>>>>> workbookMap = new HashMap<>();
    for(XSSFSheet xssfSheet : xsshSheets) {
      String name = xssfSheet.getSheetName();
      Map<String, List<Map<String, Map<String, Integer>>>> sheetMap = parseSheet(xssfSheet);
      workbookMap.put(name, sheetMap);
    }
    return workbookMap;
  }


  // Parses a sheet into the desired structure
  private Map<String, List<Map<String, Map<String, Integer>>>> parseSheet(XSSFSheet xsshSheet) {
    List<Map<String, Map<String, Integer>>> months = extractTable(xsshSheet, "Month");
    List<Map<String, Map<String, Integer>>> weeks = extractTable(xsshSheet, "Week");
    List<Map<String, Map<String, Integer>>> days = extractTable(xsshSheet, "Daily");

    Map<String, List<Map<String, Map<String, Integer>>>> sheet = new HashMap<>();
    sheet.put("MONTH", months);
    sheet.put("WEEK", weeks);
    sheet.put("DAILY", days);
    return sheet;
  }

  // Extracts a table
  private List<Map<String, Map<String, Integer>>> extractTable(XSSFSheet sheet, String tableName) {
    Cell tablePosition = findTablePosition(sheet, tableName);
    if(tablePosition!=null)
      return extractTable(sheet, tablePosition);
    else return null;
  }

  // Finds the position of the cell with the given text
  private Cell findTablePosition(XSSFSheet sheet, String tableName) {
    for (Row row : sheet) {
      for (Cell cell : row) {
        if(cell.getCellTypeEnum() == CellType.STRING && tableName.equals(cell.getStringCellValue())) {
          return cell;
        }
      }
    }
    return null;
  }

  // Extract a table
  private List<Map<String, Map<String, Integer>>> extractTable(XSSFSheet sheet, Cell tablePosition) {
    List<Map<String, Map<String, Integer>>> table = new ArrayList<>();

    int headerRow = tablePosition.getRowIndex();
    int valuesHeaderColumn = tablePosition.getColumnIndex();

    // read all columns and rows until finding an empty one
    int row = headerRow + 1;
    int col = valuesHeaderColumn + 1;

    // read all columns starting at col
    while(true) {
      Map<String, Map<String, Integer>> tableColumn = new HashMap<>();
      Cell headerCell = sheet.getRow(headerRow).getCell(col);
      if(headerCell == null)
        break;
      String columnName = headerCell.getStringCellValue().toUpperCase();
      if("".equals(columnName))
        break;

      // read all rows starting at row
      Map<String, Integer> values = new HashMap<>();
      while(true) {
        Row valueHeaderRow = sheet.getRow(row);
        if(valueHeaderRow == null)
          break;
        Cell valueHeaderCell = valueHeaderRow.getCell(valuesHeaderColumn);
        String valueHeader = valueHeaderCell.getStringCellValue();
        if("".equals(valueHeader))
          break;
        Cell valueCell = sheet.getRow(row).getCell(col);
        Integer value = (int)valueCell.getNumericCellValue();
        values.put(valueHeader, value);
        row++;
      }

      tableColumn.put(columnName, values);
      // Add the columns map to the list
      table.add(tableColumn);
      col++;
      row = headerRow + 1;
    }
    return table;
  }

  // Create the JSON string using Jackson ObjectMapper
  private String toJsonString(Object o) {
    ObjectMapper objectMapper = new ObjectMapper();
    String jsonString = null;
    try {
      jsonString = objectMapper.writerWithDefaultPrettyPrinter().writeValueAsString(o);
    } catch(JsonProcessingException e) {
      e.printStackTrace();
    }
    return jsonString;
  }
}
{
  "Sheet2" : {
    "MONTH" : [ {
      "BL" : {
        "A" : 42,
        "B" : 19,
        "C" : 20,
        "D" : 11,
        "E" : 22,
        "F" : 44,
        "G" : 76,
        "H" : 12
      }
    }, {
      "JAN" : {
        "A" : 4,
        "B" : 4,
        "C" : 2,
        "D" : 1,
        "E" : 8,
        "F" : 7,
        "G" : 2,
        "H" : 5
      }
    }, {
      "FEB" : {
        "A" : 5,
        "B" : 6,
        "C" : 8,
        "D" : 9,
        "E" : 7,
        "F" : 6,
        "G" : 4,
        "H" : 2
      }
    }, {
      "MAR" : {
        "A" : 4,
        "B" : 2,
        "C" : 1,
        "D" : 9,
        "E" : 8,
        "F" : 7,
        "G" : 4,
        "H" : 3
      }
    }, {
      "APR" : {
        "A" : 5,
        "B" : 6,
        "C" : 6,
        "D" : 4,
        "E" : 3,
        "F" : 2,
        "G" : 1,
        "H" : 3
      }
    }, {
      "MAY" : {
        "A" : 5,
        "B" : 3,
        "C" : 2,
        "D" : 1,
        "E" : 6,
        "F" : 7,
        "G" : 6,
        "H" : 5
      }
    }, {
      "JUN" : {
        "A" : 6,
        "B" : 7,
        "C" : 8,
        "D" : 6,
        "E" : 4,
        "F" : 3,
        "G" : 2,
        "H" : 1
      }
    }, {
      "JUL" : {
        "A" : 4,
        "B" : 6,
        "C" : 3,
        "D" : 4,
        "E" : 5,
        "F" : 7,
        "G" : 9,
        "H" : 8
      }
    }, {
      "AUG" : {
        "A" : 1,
        "B" : 5,
        "C" : 3,
        "D" : 6,
        "E" : 7,
        "F" : 8,
        "G" : 1,
        "H" : 2
      }
    }, {
      "SEP" : {
        "A" : 4,
        "B" : 5,
        "C" : 4,
        "D" : 3,
        "E" : 5,
        "F" : 2,
        "G" : 4,
        "H" : 3
      }
    }, {
      "OCT" : {
        "A" : 1,
        "B" : 2,
        "C" : 4,
        "D" : 5,
        "E" : 7,
        "F" : 9,
        "G" : 8,
        "H" : 7
      }
    }, {
      "NOV" : {
        "A" : 5,
        "B" : 6,
        "C" : 8,
        "D" : 9,
        "E" : 7,
        "F" : 6,
        "G" : 4,
        "H" : 2
      }
    }, {
      "DEC" : {
        "A" : 4,
        "B" : 2,
        "C" : 1,
        "D" : 9,
        "E" : 8,
        "F" : 7,
        "G" : 4,
        "H" : 3
      }
    } ],
    "DAILY" : [ {
      "BL" : {
        "L" : 42,
        "M" : 19,
        "N" : 20
      }
    }, {
      "D-01" : {
        "L" : 6,
        "M" : 4,
        "N" : 2
      }
    }, {
      "D-02" : {
        "L" : 5,
        "M" : 6,
        "N" : 8
      }
    }, {
      "D-03" : {
        "L" : 4,
        "M" : 2,
        "N" : 1
      }
    }, {
      "D-04" : {
        "L" : 5,
        "M" : 6,
        "N" : 6
      }
    }, {
      "D-05" : {
        "L" : 5,
        "M" : 3,
        "N" : 2
      }
    }, {
      "D-06" : {
        "L" : 6,
        "M" : 7,
        "N" : 8
      }
    }, {
      "D-07" : {
        "L" : 4,
        "M" : 6,
        "N" : 3
      }
    } ],
    "WEEK" : [ {
      "BL" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-01" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-02" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-03" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-04" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-05" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-06" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-07" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-08" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-09" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-10" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-11" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-12" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-13" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-14" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-15" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-16" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-17" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-18" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-19" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-20" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-21" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-22" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-23" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-24" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-25" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-26" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-27" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-28" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-29" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-30" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-31" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-32" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-33" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-34" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-35" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-36" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-37" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-38" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-39" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-40" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-41" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-42" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-43" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-44" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-45" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-46" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-47" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-48" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-49" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-50" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-51" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-52" : {
        "I" : 1,
        "J" : 4,
        "K" : 6
      }
    } ]
  },
  "Sheet1" : {
    "MONTH" : [ {
      "BL" : {
        "A" : 42,
        "B" : 19,
        "C" : 20,
        "D" : 11,
        "E" : 22,
        "F" : 44,
        "G" : 76,
        "H" : 12
      }
    }, {
      "JAN" : {
        "A" : 4,
        "B" : 4,
        "C" : 2,
        "D" : 1,
        "E" : 8,
        "F" : 7,
        "G" : 2,
        "H" : 5
      }
    }, {
      "FEB" : {
        "A" : 5,
        "B" : 6,
        "C" : 8,
        "D" : 9,
        "E" : 7,
        "F" : 6,
        "G" : 4,
        "H" : 2
      }
    }, {
      "MAR" : {
        "A" : 4,
        "B" : 2,
        "C" : 1,
        "D" : 9,
        "E" : 8,
        "F" : 7,
        "G" : 4,
        "H" : 3
      }
    }, {
      "APR" : {
        "A" : 5,
        "B" : 6,
        "C" : 6,
        "D" : 4,
        "E" : 3,
        "F" : 2,
        "G" : 1,
        "H" : 3
      }
    }, {
      "MAY" : {
        "A" : 5,
        "B" : 3,
        "C" : 2,
        "D" : 1,
        "E" : 6,
        "F" : 7,
        "G" : 6,
        "H" : 5
      }
    }, {
      "JUN" : {
        "A" : 6,
        "B" : 7,
        "C" : 8,
        "D" : 6,
        "E" : 4,
        "F" : 3,
        "G" : 2,
        "H" : 1
      }
    }, {
      "JUL" : {
        "A" : 4,
        "B" : 6,
        "C" : 3,
        "D" : 4,
        "E" : 5,
        "F" : 7,
        "G" : 9,
        "H" : 8
      }
    }, {
      "AUG" : {
        "A" : 1,
        "B" : 5,
        "C" : 3,
        "D" : 6,
        "E" : 7,
        "F" : 8,
        "G" : 1,
        "H" : 2
      }
    }, {
      "SEP" : {
        "A" : 4,
        "B" : 5,
        "C" : 4,
        "D" : 3,
        "E" : 5,
        "F" : 2,
        "G" : 4,
        "H" : 3
      }
    }, {
      "OCT" : {
        "A" : 1,
        "B" : 2,
        "C" : 4,
        "D" : 5,
        "E" : 7,
        "F" : 9,
        "G" : 8,
        "H" : 7
      }
    }, {
      "NOV" : {
        "A" : 5,
        "B" : 6,
        "C" : 8,
        "D" : 9,
        "E" : 7,
        "F" : 6,
        "G" : 4,
        "H" : 2
      }
    }, {
      "DEC" : {
        "A" : 4,
        "B" : 2,
        "C" : 1,
        "D" : 9,
        "E" : 8,
        "F" : 7,
        "G" : 4,
        "H" : 3
      }
    } ],
    "DAILY" : null,
    "WEEK" : [ {
      "BL" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-01" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-02" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-03" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-04" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-05" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-06" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-07" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-08" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-09" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-10" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-11" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-12" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-13" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-14" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-15" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-16" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-17" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-18" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-19" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-20" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-21" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-22" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-23" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-24" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-25" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-26" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-27" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-28" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-29" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-30" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-31" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-32" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-33" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-34" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-35" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-36" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-37" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-38" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-39" : {
        "I" : 42,
        "J" : 19,
        "K" : 20
      }
    }, {
      "WK-40" : {
        "I" : 6,
        "J" : 4,
        "K" : 2
      }
    }, {
      "WK-41" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-42" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-43" : {
        "I" : 5,
        "J" : 6,
        "K" : 6
      }
    }, {
      "WK-44" : {
        "I" : 5,
        "J" : 3,
        "K" : 2
      }
    }, {
      "WK-45" : {
        "I" : 6,
        "J" : 7,
        "K" : 8
      }
    }, {
      "WK-46" : {
        "I" : 4,
        "J" : 6,
        "K" : 3
      }
    }, {
      "WK-47" : {
        "I" : 1,
        "J" : 5,
        "K" : 3
      }
    }, {
      "WK-48" : {
        "I" : 4,
        "J" : 5,
        "K" : 4
      }
    }, {
      "WK-49" : {
        "I" : 1,
        "J" : 2,
        "K" : 4
      }
    }, {
      "WK-50" : {
        "I" : 5,
        "J" : 6,
        "K" : 8
      }
    }, {
      "WK-51" : {
        "I" : 4,
        "J" : 2,
        "K" : 1
      }
    }, {
      "WK-52" : {
        "I" : 1,
        "J" : 4,
        "K" : 6
      }
    } ]
  }
}