package com.doumee.core.annotation.excel;
|
|
import com.doumee.core.constants.ResponseStatus;
|
import com.doumee.core.exception.BusinessException;
|
import com.doumee.core.utils.Constants;
|
import com.doumee.dao.business.model.ApplyChagneDetail;
|
import com.doumee.dao.business.model.ApplyChange;
|
import com.doumee.dao.business.model.ApplyDetail;
|
import com.doumee.dao.business.model.InsuranceApply;
|
import lombok.AllArgsConstructor;
|
import lombok.Data;
|
import org.apache.commons.lang3.StringUtils;
|
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
|
import org.apache.poi.ss.usermodel.*;
|
import org.apache.poi.ss.util.CellRangeAddress;
|
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
|
import org.springframework.core.annotation.AnnotationConfigurationException;
|
|
import javax.servlet.http.HttpServletResponse;
|
import javax.swing.*;
|
import java.io.*;
|
import java.lang.reflect.Field;
|
import java.lang.reflect.Method;
|
import java.net.URL;
|
import java.net.URLEncoder;
|
import java.nio.charset.Charset;
|
import java.text.SimpleDateFormat;
|
import java.util.*;
|
|
/**
|
* Excel导出实现
|
* @author Eva.Caesar Liu
|
* @date 2023/02/14 11:14
|
*/
|
@Data
|
public class ExcelExporter<T> {
|
|
private static final String DEFAULT_SHEET_NAME = "Sheet1";
|
|
private Class<T> modelClass;
|
|
private ExcelExporter(){}
|
|
/**
|
* 构造器
|
* @param modelClass 实体Class对象
|
*/
|
public static <T> ExcelExporter<T> build(Class<T> modelClass) {
|
ExcelExporter<T> excelExporter = new ExcelExporter<>();
|
excelExporter.setModelClass(modelClass);
|
return excelExporter;
|
}
|
/**
|
* 导出到指定输出流
|
* @param data 数据
|
* @param sheetName Sheet名称
|
*/
|
public void exportWithFirstAndEnd (List<T> data, String sheetName,String first,String end, OutputStream os) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
// 创建列头
|
sheet.createFreezePane(0, 2);
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,this.getColumns().size()-1));
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 1000);
|
Cell c = title.createCell(0);
|
c.setCellValue(first);
|
configFirstCell(sxssfWorkbook,c);
|
|
Row header = sheet.createRow(1);
|
header.setHeight((short)600);
|
List<ColumnInfo> columns = this.getColumns();
|
for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
|
ColumnInfo column = columns.get(columnIndex);
|
Cell cell = header.createCell(columnIndex);
|
cell.setCellValue(new HSSFRichTextString(column.columnConfig.name()));
|
// 列宽设置
|
if (column.columnConfig.width() == -1) {
|
sheet.setColumnWidth(columnIndex, column.columnConfig.name().length() * 2 * 256);
|
} else {
|
sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
|
}
|
// 设置列头单元格
|
configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
|
}
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
|
Row row = sheet.createRow(rowIndex + 2);
|
for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
|
ColumnInfo column = columns.get(columnIndex);
|
Cell cell = row.createCell(columnIndex);
|
cell.setCellValue(getCellData(column, data.get(rowIndex)));
|
// 设置数据单元格
|
configDataCell(sxssfWorkbook, cell, column.columnConfig);
|
}
|
}
|
if(StringUtils.isNotBlank(end)){
|
sheet.addMergedRegion(new CellRangeAddress(data.size()+2 ,data.size()+2,0,this.getColumns().size()-1));
|
Row endRow = sheet.createRow(data.size()+2);
|
// endRow.setHeight((short) 600);
|
Cell c1 = endRow.createCell(0);
|
c1.setCellValue(end);
|
configEndCell(sxssfWorkbook,c1);
|
}
|
sxssfWorkbook.write(os);
|
os.close();
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
/**
|
* 导出到指定输出流
|
* @param data 数据
|
* @param sheetName Sheet名称
|
* @param os 输出流
|
*/
|
public void export (List<T> data, String sheetName, OutputStream os) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
// 创建列头
|
sheet.createFreezePane(0, 1);
|
Row header = sheet.createRow(0);
|
List<ColumnInfo> columns = this.getColumns();
|
for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
|
ColumnInfo column = columns.get(columnIndex);
|
Cell cell = header.createCell(columnIndex);
|
cell.setCellValue(column.columnConfig.name());
|
// 列宽设置
|
if (column.columnConfig.width() == -1) {
|
sheet.setColumnWidth(columnIndex, column.columnConfig.name().length() * 2 * 256);
|
} else {
|
sheet.setColumnWidth(columnIndex, column.columnConfig.width() * 2 * 256);
|
}
|
// 设置列头单元格
|
configHeaderCell(sxssfWorkbook, cell, column.columnConfig);
|
}
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex < data.size(); rowIndex++) {
|
Row row = sheet.createRow(rowIndex + 1);
|
for (int columnIndex = 0; columnIndex < columns.size(); columnIndex++) {
|
ColumnInfo column = columns.get(columnIndex);
|
Cell cell = row.createCell(columnIndex);
|
cell.setCellValue(getCellData(column, data.get(rowIndex)));
|
|
// 设置数据单元格
|
configDataCell(sxssfWorkbook, cell, column.columnConfig);
|
|
}
|
}
|
sxssfWorkbook.write(os);
|
os.close();
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
/**
|
* 导出至响应流
|
* @param data 数据
|
* @param fileName Excel文件名
|
* @param sheetName Sheet名称
|
* @param response HttpServletResponse对象
|
*/
|
public void export (List<T> data, String fileName, String sheetName, HttpServletResponse response) {
|
try {
|
String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
|
response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
|
response.setContentType("application/octet-stream");
|
response.setHeader("eva-opera-type", "download");
|
response.setHeader("eva-download-filename", encodeFileName);
|
this.export(data, sheetName, response.getOutputStream());
|
} catch (IOException e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
}
|
/**
|
* 导出至响应流
|
* @param data 数据
|
* @param fileName Excel文件名
|
* @param sheetName Sheet名称
|
* @param response HttpServletResponse对象
|
*/
|
public void exportWithFirstAndEnd (List<T> data, String fileName, String sheetName, String first,String end ,HttpServletResponse response) {
|
try {
|
String encodeFileName = URLEncoder.encode(fileName, Charset.forName("UTF-8").toString()) + ".xlsx";
|
response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
|
response.setContentType("application/octet-stream");
|
response.setHeader("eva-opera-type", "download");
|
response.setHeader("eva-download-filename", encodeFileName);
|
this.exportWithFirstAndEnd(data, sheetName,first,end, response.getOutputStream());
|
} catch (IOException e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
}
|
|
/**
|
* 导出至响应流
|
* @param data 数据
|
* @param fileName Excel文件名
|
* @param response HttpServletResponse对象
|
*/
|
public void export (List<T> data, String fileName, HttpServletResponse response) {
|
this.export(data, fileName, DEFAULT_SHEET_NAME, response);
|
}
|
/**
|
* 导出至响应流
|
* @param data 数据
|
* @param fileName Excel文件名
|
* @param response HttpServletResponse对象
|
*/
|
public void exportWithFirstAndEnd (List<T> data, String fileName,String first,String end, HttpServletResponse response) {
|
this.exportWithFirstAndEnd(data, fileName, DEFAULT_SHEET_NAME, first,end,response);
|
}
|
|
/**O
|
* 获取列集合
|
*/
|
private List<ColumnInfo> getColumns () {
|
Map<Integer, ColumnInfo> sortedFields = new TreeMap<>();
|
Field[] fields = modelClass.getDeclaredFields();
|
int index = 0;
|
for (Field field : fields) {
|
ExcelColumn excelColumn = field.getAnnotation(ExcelColumn.class);
|
if (excelColumn == null) {
|
continue;
|
}
|
if (sortedFields.get(excelColumn.index()) != null) {
|
throw new AnnotationConfigurationException("Excel column contains the same index.");
|
}
|
sortedFields.put(excelColumn.index() == -1 ? index : excelColumn.index(), new ColumnInfo(excelColumn, field));
|
index++;
|
}
|
return new ArrayList<>(sortedFields.values());
|
}
|
/**
|
* 配置数据单元格
|
*/
|
private void configDataCell (SXSSFWorkbook workbook, Cell cell ) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(HorizontalAlignment.CENTER);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
// style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
style.setFont(font);
|
// 边框
|
configCellBorder(style);
|
style.setWrapText(true);
|
cell.setCellStyle(style);
|
}
|
/**
|
* 配置数据单元格
|
*/
|
private void configDataCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(columnConfig.align());
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
style.setFillForegroundColor(columnConfig.dataBackgroundColor().getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints(columnConfig.fontSize());
|
// 字体颜色
|
font.setColor(columnConfig.color().getIndex());
|
// 粗体
|
font.setBold(columnConfig.bold());
|
// 斜体
|
font.setItalic(columnConfig.italic());
|
style.setFont(font);
|
// 边框
|
configCellBorder(style);
|
style.setWrapText(true);
|
cell.setCellStyle(style);
|
}
|
|
/**
|
* 配置列头单元格
|
*/
|
private void configHeaderCell (SXSSFWorkbook workbook, Cell cell, ExcelColumn columnConfig) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(columnConfig.align());
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
// style.setFillForegroundColor(columnConfig.backgroundColor().getIndex());
|
style.setFillForegroundColor(IndexedColors.PALE_BLUE.getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints((short)11);
|
font.setColor(columnConfig.color().index);
|
font.setBold(true);
|
style.setFont(font);
|
// 设置边框
|
style.setWrapText(true);
|
configCellBorder(style);
|
cell.setCellStyle(style);
|
}
|
/**
|
* 配置列头单元格
|
*/
|
private void configFirstCell (SXSSFWorkbook workbook, Cell cell ) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(HorizontalAlignment.CENTER);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints((short)12);
|
font.setBold(true);
|
style.setFont(font);
|
// 设置边框
|
configCellBorder(style);
|
cell.setCellStyle(style);
|
}
|
private void configTitleCell (SXSSFWorkbook workbook, Cell cell ) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(HorizontalAlignment.CENTER);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints((short)12);
|
font.setBold(true);
|
style.setFont(font);
|
// 设置边框
|
configCellBorder(style);
|
// configCellBorder(style);
|
cell.setCellStyle(style);
|
}
|
/**
|
* 配置列头单元格
|
*/
|
private void configInfoCell (SXSSFWorkbook workbook, Cell cell,HorizontalAlignment p ) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(p);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
// style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints((short)12);
|
font.setBold(true);
|
style.setFont(font);
|
style.setWrapText(true);
|
// 设置边框
|
configCellBorder(style);
|
cell.setCellStyle(style);
|
}
|
/**
|
* 配置列头单元格
|
*/
|
private void configEndCell (SXSSFWorkbook workbook, Cell cell ) {
|
if(cell == null){
|
return;
|
}
|
CellStyle style = workbook.createCellStyle();
|
style.setAlignment(HorizontalAlignment.RIGHT);
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
// 设置背景
|
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
|
style.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
|
// 字体
|
Font font = workbook.createFont();
|
font.setFontHeightInPoints((short)14);
|
style.setFont(font);
|
// 设置边框
|
configCellBorder(style);
|
cell.setCellStyle(style);
|
}
|
|
/**
|
* 配置单元格边框
|
*/
|
private void configCellBorder (CellStyle style) {
|
style.setBorderTop(BorderStyle.THIN);
|
style.setBorderRight(BorderStyle.THIN);
|
style.setBorderBottom(BorderStyle.THIN);
|
style.setBorderLeft(BorderStyle.THIN);
|
style.setTopBorderColor(IndexedColors.BLACK.getIndex());
|
style.setRightBorderColor(IndexedColors.BLACK.getIndex());
|
style.setBottomBorderColor(IndexedColors.BLACK.getIndex());
|
style.setLeftBorderColor(IndexedColors.BLACK.getIndex());
|
}
|
|
/**
|
* 处理单元格数据
|
*/
|
private String getCellData (ColumnInfo columnInfo, T row) throws Exception {
|
columnInfo.field.setAccessible(Boolean.TRUE);
|
Object value = columnInfo.field.get(row);
|
columnInfo.field.setAccessible(Boolean.FALSE);
|
if (value == null) {
|
return "";
|
}
|
String stringValue = value.toString();
|
// 存在自定义数据处理器
|
if (!columnInfo.columnConfig.handler().equals(ExcelDataHandlerAdapter.class)) {
|
try {
|
Object instance = columnInfo.columnConfig.handler().newInstance();
|
Method formatMethod = columnInfo.columnConfig.handler().getMethod("format", Object[].class);
|
List<Object> args = new ArrayList<>();
|
args.add(value);
|
for (String arg : columnInfo.columnConfig.args()) {
|
args.add(arg);
|
}
|
value = formatMethod.invoke(instance, new Object[]{args.toArray()});
|
stringValue = value.toString();
|
} catch (Exception e) {
|
throw new IllegalStateException("Can not format data by " + columnInfo.columnConfig.handler(), e);
|
}
|
}
|
// 日期处理
|
if (!"".equals(columnInfo.columnConfig.dateFormat()) && value instanceof Date) {
|
SimpleDateFormat sdf = new SimpleDateFormat(columnInfo.columnConfig.dateFormat());
|
stringValue = sdf.format((Date) value);
|
}
|
// 值映射
|
if (!"".equals(columnInfo.columnConfig.valueMapping())) {
|
String[] segs = columnInfo.columnConfig.valueMapping().split(";");
|
for (String seg : segs) {
|
String[] mapping = seg.split("=");
|
if (value.toString().equals(mapping[0].trim())) {
|
stringValue = mapping[1].trim();
|
}
|
}
|
}
|
// 前缀处理
|
stringValue = columnInfo.columnConfig.prefix() + stringValue;
|
// 后缀处理
|
stringValue = stringValue + columnInfo.columnConfig.suffix();
|
return stringValue;
|
}
|
|
public void exportApplyDetail(InsuranceApply model, HttpServletResponse response) {
|
try {
|
String encodeFileName = URLEncoder.encode("投保详情单_"+model.getCompanyName()+"_"+model.getSolutionsName(), Charset.forName("UTF-8").toString()) + ".xlsx";
|
response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
|
response.setContentType("application/octet-stream");
|
response.setHeader("eva-opera-type", "download");
|
response.setHeader("eva-download-filename", encodeFileName);
|
this.exportApplyDetailDo(model,"投保申请表", response.getOutputStream());
|
} catch (IOException e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
}
|
|
/**
|
* 导出到指定输出流
|
* @param data 数据
|
* @param sheetName Sheet名称
|
* @param os 输出流
|
*/
|
public void exportApplyDetailDo (InsuranceApply data, String sheetName, OutputStream os) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
for (int i = 0; i < 6; i++) {
|
sheet.setColumnWidth(i, (i==5?20:15) * 2 * 256);
|
}
|
sheet.createFreezePane(0, 1);
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 800);
|
for (int i = 0; i < 6; i++) {
|
title.createCell(i).setCellValue(i==0?sheetName:"");
|
configTitleCell(sxssfWorkbook,title.getCell(i));
|
}
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,5));
|
Row header1 = sheet.createRow(1);
|
header1.setHeight((short) 500);
|
header1.createCell(0).setCellValue("投保企业");
|
header1.createCell(1).setCellValue("保险方案");
|
header1.createCell(2).setCellValue("保险生效起期");
|
header1.createCell(3).setCellValue("保险生效止期");
|
header1.createCell(4).setCellValue("投保人数");
|
header1.createCell(5).setCellValue("总费用(元)");
|
for (int i = 0; i < 6; i++) {
|
configFirstCell(sxssfWorkbook,header1.getCell(i));
|
}
|
Row header2 = sheet.createRow(2);
|
header2.createCell(0).setCellValue(data.getCompanyName());
|
header2.createCell(1).setCellValue(data.getSolutionsName());
|
header2.createCell(2).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
|
header2.createCell(3).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
|
header2.createCell(4).setCellValue(data.getInsureNum());
|
header2.createCell(5).setCellValue(Constants.formatBigdecimal2Float(data.getFee()).toString());
|
for (int i = 0; i < 6; i++) {
|
configDataCell(sxssfWorkbook, header2.getCell(i));
|
}
|
Row header4 = sheet.createRow(3);
|
header4.createCell(0).setCellValue("序号");
|
header4.createCell(1).setCellValue("员工姓名");
|
header4.createCell(2).setCellValue("性别");
|
header4.createCell(3).setCellValue("身份证号");
|
header4.createCell(4).setCellValue("派遣单位");
|
header4.createCell(5).setCellValue("所属工种");
|
header4.setHeight((short) 500);
|
for (int i = 0; i < 6; i++) {
|
configFirstCell(sxssfWorkbook,header4.getCell(i));
|
}
|
if(data.getApplyDetailList()!=null){
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex < data.getApplyDetailList().size(); rowIndex++) {
|
ApplyDetail d = data.getApplyDetailList().get(rowIndex);
|
Row header5 = sheet.createRow(rowIndex + 4);
|
// header5.setHeight((short) 300);
|
header5.createCell(0).setCellValue(rowIndex+1);
|
header5.createCell(1).setCellValue(StringUtils.defaultString(d.getMemberName(),""));
|
header5.createCell(2).setCellValue(Constants.equalsInteger(d.getSex(),0)?"男":(Constants.equalsInteger(d.getSex(),1)?"女":"-"));
|
header5.createCell(3).setCellValue(StringUtils.defaultString(d.getIdcardNo(),""));
|
header5.createCell(4).setCellValue(StringUtils.defaultString(d.getDuName(),""));
|
header5.createCell(5).setCellValue(StringUtils.defaultString(d.getWorkTypeName(),""));
|
// 设置数据单元格
|
for (int i = 0; i < 6; i++) {
|
configDataCell(sxssfWorkbook, header5.getCell(i));
|
}
|
}
|
}
|
sxssfWorkbook.write(os);
|
os.close();
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
/**
|
* 换厂申请表导出
|
* @param model
|
* @param response
|
*/
|
|
public void exportChangeUnitExcel(ApplyChange model, HttpServletResponse response) {
|
try {
|
String encodeFileName = URLEncoder.encode("换厂申请表_"+model.getCompanyName()+"_"+model.getSolutionsName(), Charset.forName("UTF-8").toString()) + ".xlsx";
|
response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
|
response.setContentType("application/octet-stream");
|
response.setHeader("eva-opera-type", "download");
|
response.setHeader("eva-download-filename", encodeFileName);
|
this.exportChangeUnitExcelDo(model,"换厂申请表", response.getOutputStream());
|
} catch (IOException e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
}
|
|
/**
|
* 加减申请表导出
|
* @param model
|
* @param response
|
*/
|
public void exportJiajianBaoExcel(ApplyChange model, HttpServletResponse response) {
|
try {
|
String encodeFileName = URLEncoder.encode("加减保申请表_"+model.getCompanyName()+"_"+model.getSolutionsName(), Charset.forName("UTF-8").toString()) + ".xlsx";
|
response.setHeader("Content-Disposition","attachment;filename=" + encodeFileName);
|
response.setContentType("application/octet-stream");
|
response.setHeader("eva-opera-type", "download");
|
response.setHeader("eva-download-filename", encodeFileName);
|
this.exportJiajianBaoExcelDo(model,"加减保申请表", response.getOutputStream());
|
} catch (IOException e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
}
|
|
/**
|
* 导出加减保申请详单
|
* @param data 数据
|
* @param sheetName Sheet名称
|
* @param os 输出流
|
*/
|
public void exportJiajianBaoExcelDo (ApplyChange data, String sheetName, OutputStream os) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
for (int i = 0; i < 12; i++) {
|
sheet.setColumnWidth(i, ((i==3|| i== 5 || i==9|| i==11)?16:8) * 2 * 256);
|
}
|
sheet.createFreezePane(0, 1);
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,11));
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 800);
|
Cell c = title.createCell(0);
|
c.setCellValue(sheetName);
|
for (int i = 0; i < 12; i++) {
|
// title.createCell(i).setCellValue(i==0?sheetName:"");
|
configTitleCell(sxssfWorkbook,title.getCell(i));
|
}
|
Row header1 = sheet.createRow(1);
|
header1.createCell(0).setCellValue("投保企业");
|
header1.createCell(3).setCellValue("保险方案");
|
header1.createCell(4).setCellValue("保单号");
|
header1.createCell(5).setCellValue("保险生效起期");
|
header1.createCell(6).setCellValue("保险生效止期");
|
header1.createCell(9).setCellValue("加保人数");
|
header1.createCell(10).setCellValue("减保人数");
|
header1.createCell(11).setCellValue("期望批单生效期");
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook,header1.getCell(i));
|
}
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,0,2));
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,6,8));
|
|
Row header2 = sheet.createRow(2);
|
header2.createCell(0).setCellValue(data.getCompanyName());
|
header2.createCell(3).setCellValue(data.getSolutionsName());
|
header2.createCell(4).setCellValue(data.getApplyCode());
|
header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
|
header2.createCell(6).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
|
header2.createCell(9).setCellValue(data.getAddNum());
|
header2.createCell(10).setCellValue(data.getDelNum());
|
header2.createCell(11).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getValidTime()));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,0,2));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,6,8));
|
for (int i = 0; i < 12; i++) {
|
configDataCell(sxssfWorkbook, header2.getCell(i));
|
}
|
Row header3 = sheet.createRow(3);
|
header3.createCell(0).setCellValue("加保人员");
|
header3.createCell(6).setCellValue("减保人员");
|
sheet.addMergedRegion(new CellRangeAddress(3 ,3,0,5));
|
sheet.addMergedRegion(new CellRangeAddress(3 ,3,6,11));
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook, header3.getCell(i));
|
}
|
Row header4 = sheet.createRow(4);
|
header4.createCell(0).setCellValue("序号");
|
header4.createCell(1).setCellValue("员工姓名");
|
header4.createCell(2).setCellValue("性别");
|
header4.createCell(3).setCellValue("身份证号");
|
header4.createCell(4).setCellValue("派遣单位");
|
header4.createCell(5).setCellValue("所属工种");
|
header4.createCell(6).setCellValue("序号");
|
header4.createCell(7).setCellValue("员工姓名");
|
header4.createCell(8).setCellValue("性别");
|
header4.createCell(9).setCellValue("身份证号");
|
header4.createCell(10).setCellValue("派遣单位");
|
header4.createCell(11).setCellValue("所属工种");
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook,header4.getCell(i));
|
}
|
int maxNum = data.getAddNum()>data.getDelNum()?data.getAddNum():data.getDelNum();
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex <maxNum; rowIndex++) {
|
ApplyChagneDetail addModel = data.getAddDetailList().size()> rowIndex?data.getAddDetailList().get(rowIndex):null;
|
ApplyChagneDetail delModel = data.getDelDetailList().size()> rowIndex?data.getDelDetailList().get(rowIndex):null;
|
Row header5 = sheet.createRow(rowIndex + 5);
|
if(addModel!=null){
|
header5.createCell(0).setCellValue(rowIndex+1);
|
header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
|
header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"男":(Constants.equalsInteger(addModel.getSex(),1)?"女":"-"));
|
header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getMemberIdcardNo(),""));
|
header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
|
header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
|
}else{
|
for (int i = 0; i < 6; i++) {
|
header5.createCell(i).setCellValue("");
|
}
|
}
|
if(delModel!=null){
|
header5.createCell(6).setCellValue(rowIndex+1);
|
header5.createCell(7).setCellValue(StringUtils.defaultString(delModel.getMemberName(),""));
|
header5.createCell(8).setCellValue(Constants.equalsInteger(delModel.getSex(),0)?"男":(Constants.equalsInteger(delModel.getSex(),1)?"女":"-"));
|
header5.createCell(9).setCellValue(StringUtils.defaultString(delModel.getMemberIdcardNo(),""));
|
header5.createCell(10).setCellValue(StringUtils.defaultString(delModel.getDuName(),""));
|
header5.createCell(11).setCellValue(StringUtils.defaultString(delModel.getWorkTypeName(),""));
|
}else{
|
for (int i =6; i < 12; i++) {
|
header5.createCell(i).setCellValue("");
|
}
|
}
|
for (int i = 0; i < 12; i++) {
|
configDataCell(sxssfWorkbook, header5.getCell(i));
|
}
|
}
|
sxssfWorkbook.write(os);
|
os.close();
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
|
/**
|
* 导出加减保申请详单
|
* @param data 数据
|
* @param sheetName Sheet名称
|
*/
|
public String exportJiajianBaoExcelToPdf (ApplyChange data, String sheetName) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
for (int i = 0; i < 12; i++) {
|
sheet.setColumnWidth(i, ((i==3|| i==4|| i== 5 || i==9||i==10|| i==11)?16:8) * 2 * 256);
|
}
|
sheet.createFreezePane(0, 1);
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,11));
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 2000);
|
for (int i = 0; i < 12; i++) {
|
title.createCell(i).setCellValue(i==0?sheetName:"");
|
configTitleCell(sxssfWorkbook,title.getCell(i));
|
}
|
Row header1 = sheet.createRow(1);
|
header1.createCell(0).setCellValue("投保企业");
|
header1.createCell(3).setCellValue("保险方案");
|
header1.createCell(4).setCellValue("保单号");
|
header1.createCell(5).setCellValue("保险生效起期");
|
header1.createCell(6).setCellValue("保险生效止期");
|
header1.createCell(9).setCellValue("加保人数");
|
header1.createCell(10).setCellValue("减保人数");
|
header1.createCell(11).setCellValue("期望批单生效期");
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook,header1.getCell(i));
|
}
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,0,2));
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,6,8));
|
|
Row header2 = sheet.createRow(2);
|
header2.createCell(0).setCellValue(data.getCompanyName());
|
header2.createCell(1).setCellValue("");
|
header2.createCell(2).setCellValue("");
|
header2.createCell(3).setCellValue(data.getSolutionsName());
|
header2.createCell(4).setCellValue(data.getApplyCode());
|
header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
|
header2.createCell(6).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
|
header2.createCell(7).setCellValue("");
|
header2.createCell(8).setCellValue("");
|
header2.createCell(9).setCellValue(data.getAddNum());
|
header2.createCell(10).setCellValue(data.getDelNum());
|
header2.createCell(11).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getValidTime()));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,0,2));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,6,8));
|
for (int i = 0; i < 12; i++) {
|
configDataCell(sxssfWorkbook, header2.getCell(i));
|
}
|
Row header3 = sheet.createRow(3);
|
header3.createCell(0).setCellValue("加保人员");
|
header3.createCell(6).setCellValue("减保人员");
|
sheet.addMergedRegion(new CellRangeAddress(3 ,3,0,5));
|
sheet.addMergedRegion(new CellRangeAddress(3 ,3,6,11));
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook, header3.getCell(i));
|
}
|
Row header4 = sheet.createRow(4);
|
header4.createCell(0).setCellValue("序号");
|
header4.createCell(1).setCellValue("员工姓名");
|
header4.createCell(2).setCellValue("性别");
|
header4.createCell(3).setCellValue("身份证号");
|
header4.createCell(4).setCellValue("派遣单位");
|
header4.createCell(5).setCellValue("所属工种");
|
header4.createCell(6).setCellValue("序号");
|
header4.createCell(7).setCellValue("员工姓名");
|
header4.createCell(8).setCellValue("性别");
|
header4.createCell(9).setCellValue("身份证号");
|
header4.createCell(10).setCellValue("派遣单位");
|
header4.createCell(11).setCellValue("所属工种");
|
for (int i = 0; i < 12; i++) {
|
configFirstCell(sxssfWorkbook,header4.getCell(i));
|
}
|
int maxNum = data.getAddNum()>data.getDelNum()?data.getAddNum():data.getDelNum();
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex <maxNum; rowIndex++) {
|
ApplyChagneDetail addModel = data.getAddDetailList().size()> rowIndex?data.getAddDetailList().get(rowIndex):null;
|
ApplyChagneDetail delModel = data.getDelDetailList().size()> rowIndex?data.getDelDetailList().get(rowIndex):null;
|
Row header5 = sheet.createRow(rowIndex + 5);
|
if(addModel!=null){
|
header5.createCell(0).setCellValue(rowIndex+1);
|
header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
|
header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"男":(Constants.equalsInteger(addModel.getSex(),1)?"女":"-"));
|
header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getMemberIdcardNo(),""));
|
header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
|
header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
|
}else{
|
for (int i = 0; i < 6; i++) {
|
header5.createCell(i).setCellValue("");
|
}
|
}
|
if(delModel!=null){
|
header5.createCell(6).setCellValue(rowIndex+1);
|
header5.createCell(7).setCellValue(StringUtils.defaultString(delModel.getMemberName(),""));
|
header5.createCell(8).setCellValue(Constants.equalsInteger(delModel.getSex(),0)?"男":(Constants.equalsInteger(delModel.getSex(),1)?"女":"-"));
|
header5.createCell(9).setCellValue(StringUtils.defaultString(delModel.getMemberIdcardNo(),""));
|
header5.createCell(10).setCellValue(StringUtils.defaultString(delModel.getDuName(),""));
|
header5.createCell(11).setCellValue(StringUtils.defaultString(delModel.getWorkTypeName(),""));
|
}else{
|
for (int i =6; i < 12; i++) {
|
header5.createCell(i).setCellValue("");
|
}
|
}
|
for (int i = 0; i < 12; i++) {
|
configDataCell(sxssfWorkbook, header5.getCell(i));
|
}
|
}
|
int rowIndex = 5+maxNum;
|
Row header6= sheet.createRow(rowIndex);
|
header6.createCell(0).setCellValue("投保企业申明:\n" +
|
"1、在申请书上填写的一切内容属实,否则本企业承担一切法律责任。\n" +
|
"2、由于变更受益人产生的法律纠纷本企业愿承担一切法律责任。\n" +
|
"3、本申请表的签章为本企业亲自签署,如由此产生的法律纠纷本企业愿承担一切法律责任。\n");
|
for (int i = 1; i < 12; i++) {
|
header6.createCell(i).setCellValue("");
|
}
|
for (int i =0; i < 12; i++) {
|
if(i>0){
|
header6.createCell(i).setCellValue("");
|
}
|
configInfoCell(sxssfWorkbook,header6.getCell(i),HorizontalAlignment.LEFT);
|
}
|
header6.setHeight((short) 2000);
|
sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,0,11));
|
Row header7= sheet.createRow(rowIndex+1);
|
header7.setHeight((short) 3000);
|
header7.createCell(0).setCellValue("投保企业签章 : \n \n \n" +"日期: 年 月 日 ");
|
for (int i =0; i < 12; i++) {
|
if(i>0){
|
header7.createCell(i).setCellValue("");
|
}
|
configInfoCell(sxssfWorkbook,header7.getCell(i),HorizontalAlignment.RIGHT);
|
}
|
sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,0,11));
|
|
//临时缓冲区
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
//创建临时文件
|
sxssfWorkbook.write(out);
|
byte [] bookByteAry = out.toByteArray();
|
InputStream in = new ByteArrayInputStream(bookByteAry);
|
String tempExcel = saveIsToFile(in);
|
String tempPdf =System.getProperty("java.io.tmpdir")+File.separator+UUID.randomUUID().toString()+".pdf";
|
// ExcelToPdfTool.excelToPdf(in,tempPdf);//转PDF
|
ExcelToPdfTool.excelToPdf(tempExcel,tempPdf);//转PDF
|
File f = new File(tempPdf);
|
if(f!=null && f.isFile() && f.length()>0){
|
return tempPdf;
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
// throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
return null;
|
}
|
/**
|
* 导出加减保申请详单
|
* @param data 数据
|
* @param sheetName Sheet名称
|
* @param os 输出流
|
*/
|
public void exportChangeUnitExcelDo (ApplyChange data, String sheetName, OutputStream os) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
for (int i = 0; i < 8; i++) {
|
sheet.setColumnWidth(i, ((i==3|| i== 5 || i==7)?16:8) * 2 * 256);
|
}
|
sheet.createFreezePane(0, 1);
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,7));
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 1000);
|
Cell c = title.createCell(0);
|
c.setCellValue(sheetName);
|
configFirstCell(sxssfWorkbook,c);
|
for (int i = 0; i < 8; i++) {
|
if(i>0){
|
title.createCell(i).setCellValue("");
|
}
|
configTitleCell(sxssfWorkbook,title.getCell(i));
|
}
|
Row header1 = sheet.createRow(1);
|
header1.createCell(0).setCellValue("投保企业");
|
header1.createCell(1).setCellValue("保险方案");
|
header1.createCell(2).setCellValue("");
|
header1.createCell(3).setCellValue("保单号");
|
header1.createCell(4).setCellValue("保险生效起期");
|
header1.createCell(5).setCellValue("保险生效止期");
|
header1.createCell(6).setCellValue("换厂人数");
|
header1.createCell(7).setCellValue("期望批单生效期");
|
for (int i = 0; i < 8; i++) {
|
configFirstCell(sxssfWorkbook,header1.getCell(i));
|
}
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,1,2));
|
|
Row header2 = sheet.createRow(2);
|
header2.createCell(0).setCellValue(data.getCompanyName());
|
header2.createCell(1).setCellValue(data.getSolutionsName());
|
header2.createCell(2).setCellValue("");
|
header2.createCell(3).setCellValue(data.getApplyCode());
|
header2.createCell(4).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
|
header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
|
header2.createCell(6).setCellValue(data.getChangeNum());
|
header2.createCell(7).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getApplyStartTime()));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,1,2));
|
for (int i = 0; i < 8; i++) {
|
configDataCell(sxssfWorkbook,header2.getCell(i));
|
}
|
Row header4 = sheet.createRow(3);
|
header4.createCell(0).setCellValue("序号");
|
header4.createCell(1).setCellValue("员工姓名");
|
header4.createCell(2).setCellValue("性别");
|
header4.createCell(3).setCellValue("身份证号");
|
header4.createCell(4).setCellValue("原派遣单位");
|
header4.createCell(5).setCellValue("原所所属工种");
|
header4.createCell(6).setCellValue("更改后派遣单位");
|
header4.createCell(7).setCellValue("更改后所属工种");
|
for (int i = 0; i < 8; i++) {
|
configFirstCell(sxssfWorkbook,header4.getCell(i));
|
}
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex <data.getChangeDetailList().size(); rowIndex++) {
|
ApplyChagneDetail addModel = data.getChangeDetailList().get(rowIndex);
|
Row header5 = sheet.createRow(rowIndex + 4);
|
header5.createCell(0).setCellValue(rowIndex+1);
|
header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
|
header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"男":(Constants.equalsInteger(addModel.getSex(),1)?"女":"-"));
|
header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getMemberIdcardNo(),""));
|
header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getOldDuName(),""));
|
header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getOldWorkTypeName(),""));
|
header5.createCell(6).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
|
header5.createCell(7).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
|
for (int i = 0; i < 8; i++) {
|
configDataCell(sxssfWorkbook,header5.getCell(i));
|
}
|
}
|
sxssfWorkbook.write(os);
|
os.close();
|
} catch (Exception e) {
|
throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
} finally {
|
if (os != null) {
|
try {
|
os.close();
|
} catch (IOException e) {
|
e.printStackTrace();
|
}
|
}
|
}
|
}
|
/**
|
* 导出加减保申请详单
|
* @param data 数据
|
* @param sheetName Sheet名称
|
*/
|
public String exportChangeUnitExcelToPdf (ApplyChange data, String sheetName) {
|
SXSSFWorkbook sxssfWorkbook;
|
try {
|
sxssfWorkbook = new SXSSFWorkbook();
|
Sheet sheet = sxssfWorkbook.createSheet(sheetName);
|
for (int i = 0; i < 8; i++) {
|
sheet.setColumnWidth(i, ((i==3|| i== 4|| i== 5 ||i== 6 || i==7)?16:8) * 2 * 256);
|
}
|
sheet.createFreezePane(0, 1);
|
sheet.addMergedRegion(new CellRangeAddress(0 ,0,0,7));
|
Row title = sheet.createRow(0);
|
title.setHeight((short) 2000);
|
Cell c = title.createCell(0);
|
c.setCellValue(sheetName);
|
configFirstCell(sxssfWorkbook,c);
|
for (int i = 0; i < 8; i++) {
|
if(i>0){
|
title.createCell(i).setCellValue("");
|
}
|
configTitleCell(sxssfWorkbook,title.getCell(i));
|
}
|
Row header1 = sheet.createRow(1);
|
header1.createCell(0).setCellValue("投保企业");
|
header1.createCell(1).setCellValue("保险方案");
|
header1.createCell(2).setCellValue("");
|
header1.createCell(3).setCellValue("保单号");
|
header1.createCell(4).setCellValue("保险生效起期");
|
header1.createCell(5).setCellValue("保险生效止期");
|
header1.createCell(6).setCellValue("换厂人数");
|
header1.createCell(7).setCellValue("期望批单生效期");
|
for (int i = 0; i < 8; i++) {
|
configFirstCell(sxssfWorkbook,header1.getCell(i));
|
}
|
sheet.addMergedRegion(new CellRangeAddress(1 ,1,1,2));
|
|
Row header2 = sheet.createRow(2);
|
header2.createCell(0).setCellValue(data.getCompanyName());
|
header2.createCell(1).setCellValue(data.getSolutionsName());
|
header2.createCell(2).setCellValue("");
|
header2.createCell(3).setCellValue(data.getApplyCode());
|
header2.createCell(4).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getStartTime()));
|
header2.createCell(5).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getEndTime()));
|
header2.createCell(6).setCellValue(data.getChangeNum());
|
header2.createCell(7).setCellValue(com.doumee.core.utils.DateUtil.getPlusTime2(data.getApplyStartTime()));
|
sheet.addMergedRegion(new CellRangeAddress(2 ,2,1,2));
|
for (int i = 0; i < 8; i++) {
|
configDataCell(sxssfWorkbook,header2.getCell(i));
|
}
|
Row header4 = sheet.createRow(3);
|
header4.createCell(0).setCellValue("序号");
|
header4.createCell(1).setCellValue("员工姓名");
|
header4.createCell(2).setCellValue("性别");
|
header4.createCell(3).setCellValue("身份证号");
|
header4.createCell(4).setCellValue("原派遣单位");
|
header4.createCell(5).setCellValue("原所所属工种");
|
header4.createCell(6).setCellValue("更改后派遣单位");
|
header4.createCell(7).setCellValue("更改后所属工种");
|
for (int i = 0; i < 8; i++) {
|
configFirstCell(sxssfWorkbook,header4.getCell(i));
|
}
|
// 创建数据记录
|
for (int rowIndex = 0; rowIndex <data.getChangeDetailList().size(); rowIndex++) {
|
ApplyChagneDetail addModel = data.getChangeDetailList().get(rowIndex);
|
Row header5 = sheet.createRow(rowIndex + 4);
|
header5.createCell(0).setCellValue(rowIndex+1);
|
header5.createCell(1).setCellValue(StringUtils.defaultString(addModel.getMemberName(),""));
|
header5.createCell(2).setCellValue(Constants.equalsInteger(addModel.getSex(),0)?"男":(Constants.equalsInteger(addModel.getSex(),1)?"女":"-"));
|
header5.createCell(3).setCellValue(StringUtils.defaultString(addModel.getMemberIdcardNo(),""));
|
header5.createCell(4).setCellValue(StringUtils.defaultString(addModel.getOldDuName(),""));
|
header5.createCell(5).setCellValue(StringUtils.defaultString(addModel.getOldWorkTypeName(),""));
|
header5.createCell(6).setCellValue(StringUtils.defaultString(addModel.getDuName(),""));
|
header5.createCell(7).setCellValue(StringUtils.defaultString(addModel.getWorkTypeName(),""));
|
for (int i = 0; i < 8; i++) {
|
configDataCell(sxssfWorkbook,header5.getCell(i));
|
}
|
}
|
int rowIndex = 4+data.getChangeDetailList().size();
|
Row header6= sheet.createRow(rowIndex);
|
header6.createCell(0).setCellValue("投保企业申明:\n" +
|
"1、在申请书上填写的一切内容属实,否则本企业承担一切法律责任。\n" +
|
"2、由于变更受益人产生的法律纠纷本企业愿承担一切法律责任。\n" +
|
"3、本申请表的签章为本企业亲自签署,如由此产生的法律纠纷本企业愿承担一切法律责任。\n");
|
for (int i = 1; i < 8; i++) {
|
header6.createCell(i).setCellValue("");
|
}
|
for (int i =0; i < 8; i++) {
|
if(i>0){
|
header6.createCell(i).setCellValue("");
|
}
|
configInfoCell(sxssfWorkbook,header6.getCell(i),HorizontalAlignment.LEFT);
|
}
|
header6.setHeight((short) 2000);
|
sheet.addMergedRegion(new CellRangeAddress(rowIndex ,rowIndex,0,7));
|
Row header7= sheet.createRow(rowIndex+1);
|
header7.setHeight((short) 3000);
|
header7.createCell(0).setCellValue("投保企业签章 : \n \n \n" +"日期: 年 月 日 ");
|
for (int i =0; i < 8; i++) {
|
if(i>0){
|
header7.createCell(i).setCellValue("");
|
}
|
configInfoCell(sxssfWorkbook,header7.getCell(i),HorizontalAlignment.RIGHT);
|
}
|
sheet.addMergedRegion(new CellRangeAddress(rowIndex+1 ,rowIndex+1,0,7));
|
|
//临时缓冲区
|
ByteArrayOutputStream out = new ByteArrayOutputStream();
|
//创建临时文件
|
sxssfWorkbook.write(out);
|
byte [] bookByteAry = out.toByteArray();
|
InputStream in = new ByteArrayInputStream(bookByteAry);
|
String tempExcel = saveIsToFile(in);
|
String tempPdf =System.getProperty("java.io.tmpdir")+File.separator+UUID.randomUUID().toString()+".pdf";
|
// ExcelToPdfTool.excelToPdf(in,tempPdf);//转PDF
|
ExcelToPdfTool.excelToPdf(tempExcel,tempPdf);//转PDF
|
File f = new File(tempPdf);
|
if(f!=null && f.isFile() && f.length()>0){
|
return tempPdf;
|
}
|
} catch (Exception e) {
|
// throw new BusinessException(ResponseStatus.EXPORT_EXCEL_ERROR, e);
|
}
|
return null;
|
}
|
|
private String saveIsToFile(InputStream inputStream) {
|
try {
|
String fileName =System.getProperty("java.io.tmpdir")+File.separator+UUID.randomUUID().toString()+".xlsx";
|
File file = new File(fileName); // 指定保存到本地的文件名及路径
|
file.createNewFile();
|
OutputStream outputStream = new FileOutputStream(file);
|
byte[] buffer = new byte[1024];
|
int bytesRead;
|
while ((bytesRead = inputStream.read(buffer)) != -1) {
|
outputStream.write(buffer, 0, bytesRead);
|
}
|
|
outputStream.close();
|
inputStream.close();
|
return fileName;
|
}catch (Exception e){
|
|
}
|
return null;
|
}
|
|
|
@Data
|
@AllArgsConstructor
|
private static class ColumnInfo {
|
|
private ExcelColumn columnConfig;
|
|
private Field field;
|
}
|
|
}
|