diff --git a/README.md b/README.md index 243da34..3af0ab3 100644 --- a/README.md +++ b/README.md @@ -2,4 +2,4 @@ 导出excel单sheet处理(批注处理)接口demo\ demo生效后,填报模式访问附件模板导出excel。导出的excel文件对应的单元格支持下拉框选择\ -注:只支持excel 2007版本(03版本接口不支持) \ No newline at end of file +注:只支持excel 2007版本(03版本接口不支持),demo实现不支持分页分sheet导出(后台会输出不支持的提示,但不影响正常导出)\ \ No newline at end of file diff --git a/src/main/java/com/tptj/demo/hg/comment/excel/processor/Demo.java b/src/main/java/com/tptj/demo/hg/comment/excel/processor/Demo.java index d2dc26d..7f0ebf5 100644 --- a/src/main/java/com/tptj/demo/hg/comment/excel/processor/Demo.java +++ b/src/main/java/com/tptj/demo/hg/comment/excel/processor/Demo.java @@ -43,40 +43,46 @@ public class Demo extends AbstractCommentExcelProcessor { public void addCellComment( Sheet sheet, ElementCase report, Drawing drawing ) { //先获取结果报表,只有填报允许导出下拉框数据字典选项 Workbook workbook = sheet.getWorkbook(); - ResultReport result = null; - //匹配不预览导出的场景 - if( report instanceof PageExcelExporterReport ){ - result = Reflect.on(report).get("sourceReport"); - }else{ - result = ((PackedReport) report).getPackee(); - } - ResultWorkBook resultWorkBook = result.getResultWorkBook(); - if( !(resultWorkBook instanceof WriteRWorkBook) ){ - return; - } - //遍历单元格,对所有下拉框数据字典进行相同合并操作 - Iterator iterator = report.cellIterator(); ExcelDictionaryBuilder builder = new ExcelDictionaryBuilder(); - while(iterator.hasNext()){ - Object cell = iterator.next(); - if( cell instanceof DefaultPageCellElement ){ - continue; - } - CellElement oldCell = ((PageExportCellElement) cell).getOldCell(); - Widget wgt = ((AbstractWidgetCellElement)oldCell).getWidget(); - if( null == wgt ){ - //适应混淆的代码 - TemplateCellElement tcell = Reflect.on(oldCell).call("getBeFrom").call("get_ce_from").get(); - wgt = tcell.getWidget(); + ResultReport result = null; + try{ + //匹配不预览导出的场景 + if( report instanceof PageExcelExporterReport ){ + result = Reflect.on(report).get("sourceReport"); + }else{ + result = ((PackedReport) report).getPackee(); } - if( null == wgt ){ - continue; + ResultWorkBook resultWorkBook = result.getResultWorkBook(); + if( !(resultWorkBook instanceof WriteRWorkBook) ){ + return; } - if( !(wgt instanceof ComboBox) ){ - continue; + //遍历单元格,对所有下拉框数据字典进行相同合并操作 + Iterator iterator = report.cellIterator(); + + while(iterator.hasNext()){ + Object cell = iterator.next(); + if( cell instanceof DefaultPageCellElement ){ + continue; + } + CellElement oldCell = ((PageExportCellElement) cell).getOldCell(); + Widget wgt = ((AbstractWidgetCellElement)oldCell).getWidget(); + if( null == wgt ){ + //适应混淆的代码 + TemplateCellElement tcell = Reflect.on(oldCell).call("getBeFrom").call("get_ce_from").get(); + wgt = tcell.getWidget(); + } + if( null == wgt ){ + continue; + } + if( !(wgt instanceof ComboBox) ){ + continue; + } + builder.add(new ExcelDictionary((CalculatableResWorkSheet)result, + (DictContainedCustomWriteAbleEditor)wgt),(ResultCellElement)cell); } - builder.add(new ExcelDictionary((CalculatableResWorkSheet)result, - (DictContainedCustomWriteAbleEditor)wgt),(ResultCellElement)cell); + }catch(Exception e){ + LogKit.error("不支持分页分sheet导出!"); + return; } //在excel中生成具体的选项数据 try {