Browse Source

因demo场景要支持分页分sheet会使demo过于复杂不利于学习,所以在分页分sheet导出是,单独用不支持的日志指代接口执行了

10.0
hugh 3 years ago
parent
commit
45a7017cde
  1. 2
      README.md
  2. 66
      src/main/java/com/tptj/demo/hg/comment/excel/processor/Demo.java

2
README.md

@ -2,4 +2,4 @@
导出excel单sheet处理(批注处理)接口demo\
demo生效后,填报模式访问附件模板导出excel。导出的excel文件对应的单元格支持下拉框选择\
注:只支持excel 2007版本(03版本接口不支持)
注:只支持excel 2007版本(03版本接口不支持),demo实现不支持分页分sheet导出(后台会输出不支持的提示,但不影响正常导出)\

66
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 {

Loading…
Cancel
Save