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

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);
}
}
}