/** * 出力対象のシートか判定する * * @param sheet テンプレートシート * @param reportBook 帳票ワークブック情報 * @return */ private boolean isOutputSheet(Sheet sheet, ReportBook reportBook) { for (ReportSheet reportSheet : reportBook.getReportSheets()) { if (reportSheet != null && sheet.getSheetName().equals(reportSheet.getSheetName())) { return true; } } return false; }
/** * テンプレートワークブックのシートを、帳票出力単位に変換する。 * * @param workbook テンプレートワークブック * @param reportBook 帳票ワークブック情報 * @return 削除が必要なテンプレートシートインデックス */ private Set<Integer> expandTemplate(Workbook workbook, ReportBook reportBook) { Set<Integer> delTemplateIndexs = new TreeSet<Integer>(Collections.reverseOrder()); Set<Integer> useTemplateIndexs = new HashSet<Integer>(); // 出力シート単位にコピーする for (ReportSheet reportSheet : reportBook.getReportSheets()) { if (reportSheet != null) { if (reportSheet.getSheetName().equals(reportSheet.getTemplateName())) { // テンプレート名=出力シート名 int lastSheetIndex = workbook.getNumberOfSheets() - 1; workbook.setSheetOrder(reportSheet.getSheetName(), lastSheetIndex); useTemplateIndexs.add(lastSheetIndex); } else { int tempIdx = workbook.getSheetIndex(reportSheet.getTemplateName()); Sheet sheet = workbook.cloneSheet(tempIdx); workbook.setSheetName(workbook.getSheetIndex(sheet), reportSheet.getSheetName()); delTemplateIndexs.add(tempIdx); } } } // 出力対象外シートを削除インデックスに追加 for (int i = 0; i < workbook.getNumberOfSheets(); i++) { Sheet sheet = workbook.getSheetAt(i); if (!isOutputSheet(sheet, reportBook)) { delTemplateIndexs.add(workbook.getSheetIndex(sheet)); } } delTemplateIndexs.removeAll(useTemplateIndexs); return delTemplateIndexs; }