You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.4 KiB
117 lines
4.4 KiB
3 years ago
|
/*
|
||
|
* Copyright (C), 2018-2021
|
||
|
* Project: starter
|
||
|
* FileName: StreamExcel2007Exporter4Layer
|
||
|
* Author: xxx
|
||
|
* Date: 2021/12/3 9:28
|
||
|
*/
|
||
|
package com.fr.plugin.ifhd.excel.exporter;
|
||
|
|
||
|
import com.fr.general.FRLogger;
|
||
|
import com.fr.general.Inter;
|
||
|
import com.fr.io.core.LargeDataExcelExporterReport;
|
||
|
import com.fr.io.exporter.excel.stream.StreamExcel2007Exporter;
|
||
|
import com.fr.io.exporter.poi.wrapper.POIWorkbookAction;
|
||
|
import com.fr.io.exporter.poi.wrapper.XssfCellWrapper;
|
||
|
import com.fr.io.exporter.poi.wrapper.XssfWorkbookWrapper;
|
||
|
import com.fr.main.workbook.PageRWorkBook;
|
||
|
import com.fr.main.workbook.ResultWorkBook;
|
||
|
import com.fr.page.PageSetProvider;
|
||
|
import com.fr.page.PaperSettingProvider;
|
||
|
import com.fr.report.report.Report;
|
||
|
import com.fr.report.report.ResultECReport;
|
||
|
import com.fr.report.stable.ReportSettings;
|
||
|
import com.fr.stable.ExportConstants;
|
||
|
import com.fr.stable.FT;
|
||
|
import com.fr.third.v2.org.apache.poi.ss.usermodel.Cell;
|
||
|
import com.fr.third.v2.org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
||
|
|
||
|
import java.io.OutputStream;
|
||
|
import java.util.ArrayList;
|
||
|
import java.util.List;
|
||
|
|
||
|
/**
|
||
|
* <Function Description><br>
|
||
|
* <StreamExcel2007Exporter4Layer>
|
||
|
*
|
||
|
* @author xxx
|
||
|
* @since 1.0.0
|
||
|
*/
|
||
|
public class StreamExcel2007Exporter4Layer<T> extends StreamExcel2007Exporter<T> {
|
||
|
private boolean isPage = false;
|
||
|
|
||
|
public StreamExcel2007Exporter4Layer(List<PaperSettingProvider> var1, boolean var2) {
|
||
|
super(var1);
|
||
|
this.isPage = var2;
|
||
|
}
|
||
|
|
||
|
public void export(OutputStream var1, ResultWorkBook var2, boolean var3) throws Exception {
|
||
|
this.defaultXSSFCellStyle = null;
|
||
|
this.hssfFontHash.clear();
|
||
|
this.hssfCellStyleHash.clear();
|
||
|
this.format = null;
|
||
|
SXSSFWorkbook var4 = new SXSSFWorkbook(10000);
|
||
|
ArrayList var5 = new ArrayList();
|
||
|
ArrayList var6 = new ArrayList();
|
||
|
XssfWorkbookWrapper var7 = new XssfWorkbookWrapper(var4);
|
||
|
this.setDefaultFont(var7);
|
||
|
|
||
|
for (int var8 = 0; var8 < var2.getReportCount(); ++var8) {
|
||
|
ResultECReport var9 = (ResultECReport) var2.getResultReport(var8);
|
||
|
if (var9 != null) {
|
||
|
if (var9.getReportSettings() == null) {
|
||
|
var9.setReportSettings(new ReportSettings());
|
||
|
}
|
||
|
|
||
|
var9.getReportSettings().setPageOrder(1);
|
||
|
PaperSettingProvider var10 = this.paperSettingList == null ? null : (PaperSettingProvider) this.paperSettingList.get(var8);
|
||
|
PageSetProvider var11 = var9.generateReportPageSet(var10);
|
||
|
var11 = this.isPage ? var11.traverse4Export() : var11.traverse4SimpleExport();
|
||
|
FT var12 = new FT(0, 0);
|
||
|
|
||
|
while (var12.to != -1) {
|
||
|
var12.from = var12.to;
|
||
|
PageRWorkBook var13 = new PageRWorkBook();
|
||
|
String var14 = var2.getReportName(var8);
|
||
|
var13.addReport(var14, new LargeDataExcelExporterReport(var9, var11, var12, false, ExportConstants.MAX_ROWS_2007));
|
||
|
this.exportBook(var13, var7, var5, var6, new ArrayList(), var3);
|
||
|
FRLogger.getLogger().info(var14 + Inter.getLocText("Plugin-ifhd_Engine_Finish_Export"));
|
||
|
}
|
||
|
|
||
|
if (!var3 && !var11.isPageCached()) {
|
||
|
var11.release();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.dealWithFormula(var5, var6);
|
||
|
var4.write(var1);
|
||
|
var1.flush();
|
||
|
var4.dispose();
|
||
|
}
|
||
|
|
||
|
private void dealWithFormula(List<Cell> var1, List<String> var2) {
|
||
|
int var3 = 0;
|
||
|
|
||
|
for (int var4 = var1.size(); var3 < var4; ++var3) {
|
||
|
Cell var5 = (Cell) var1.get(var3);
|
||
|
this.dealWithFormula(new XssfCellWrapper(var5), (String) var2.get(var3));
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
protected void exportBook(ResultWorkBook var1, POIWorkbookAction var2, List var3, List<String> var4, List<Report> var5, boolean var6) throws Exception {
|
||
|
int var7;
|
||
|
Report var8;
|
||
|
for (var7 = 0; var7 < var1.getReportCount(); ++var7) {
|
||
|
var8 = var1.getReport(var7);
|
||
|
var5.add(var8);
|
||
|
}
|
||
|
|
||
|
for (var7 = 0; var7 < var1.getReportCount(); ++var7) {
|
||
|
var8 = (Report) var5.get(var7);
|
||
|
this.innerExportReport(var8, var1.getReportExportAttr(), var1.getReportName(var7), (SXSSFWorkbook) var2.getWorkbook(), var3, var4, var7);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|