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