JSD-8649 开源任务材料
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.
 
 

45 lines
2.4 KiB

package com.fr.plugin.excel.bi;
import com.finebi.dashboard.api.service.export.ExportContext;
import com.finebi.dashboard.api.service.export.provider.WorkbookRowCreator;
import com.finebi.provider.api.export.AbstractExcelRowCreatorProvider;
import com.fr.decision.webservice.bean.security.WatermarkBean;
import com.fr.decision.webservice.v10.security.SecurityService;
import com.fr.log.FineLoggerFactory;
import com.fr.third.springframework.web.context.request.RequestContextHolder;
import com.fr.third.springframework.web.context.request.ServletRequestAttributes;
import com.fr.third.v2.org.apache.poi.ss.usermodel.Workbook;
import com.fr.third.v2.org.apache.poi.xssf.streaming.SXSSFWorkbook;
import com.fr.third.v2.org.apache.poi.xssf.usermodel.XSSFWorkbook;
import javax.servlet.http.HttpServletRequest;
public class NewWorkBookRowCreator extends AbstractExcelRowCreatorProvider {
@Override
public WorkbookRowCreator getRowCreator(Workbook workbook, String s, ExportContext exportContext) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder
.getRequestAttributes()).getRequest();
if (request != null) {
try {
WatermarkBean parsedWatermarkBean = SecurityService.getInstance().getParsedWatermarkBean(request);
//如果是SXSSFWorkbook 就手动获取getXSSFWorkbook
FineLoggerFactory.getLogger().error("水印导出开始");
if (workbook instanceof SXSSFWorkbook) {
FineLoggerFactory.getLogger().error("水印导出开始---SXSSFWorkbook 模式");
return new NewExcelWorkbookRowCreator(parsedWatermarkBean, (SXSSFWorkbook) workbook, s);
} else if (workbook instanceof XSSFWorkbook) { //如果本身就是XSSFWorkbook 就直接用
FineLoggerFactory.getLogger().error("水印导出开始+++XSSFWorkbook 模式");
return new NewExcelWorkbookRowCreator(parsedWatermarkBean, (XSSFWorkbook) workbook, s);
}
} catch (Exception e) {
FineLoggerFactory.getLogger().error("创建水印导出失败");
}
}
FineLoggerFactory.getLogger().error("未能获取到请求 使用默认导出程序处理-----");
//解析异常的拿不到请求的用默认处理器
return new MyExcelWorkbookRowCreator(workbook, s);
}
}