package com.ovopark.check.util;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.entity.ExportParams;
import cn.afterturn.easypoi.excel.entity.enmus.ExcelType;
import cn.afterturn.easypoi.excel.entity.params.ExcelExportEntity;
import cn.hutool.core.util.ReflectUtil;
import com.ovopark.check.service.impl.MyExcelExportService;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.springframework.context.MessageSource;
/**
* @author: chenheng
* @create: 2022-05-25 09:20
* @description:
**/
public class ExcelUtils {
/**
* 用于国际化
*/
private static MessageSource messageSource = SpringContextUtils.getBean(MessageSource.class);
/**
* 一个excel 创建多个sheet
* @param list
* @return
*/
public static SXSSFWorkbook exportExcel(List<Map<String, Object>> list) {
SXSSFWorkbook workbook = new SXSSFWorkbook();
for (Map<String, Object> map : list) {
MyExcelExportService service = new MyExcelExportService();
service.createSheetWithList(workbook, (ExportParams) map.get("title"), ExportParams.class,
(List<ExcelExportEntity>) map.get("entityList"), (Collection<?>) map.get("data"));
}
return workbook;
}
public static void getExcelExportMap(List<ExcelExportEntity> colList, List<Map<String,Object>> resList,
List list, Class<?> pojoClass, Locale locale) throws IllegalAccessException {
Field[] classFields = ReflectUtil.getFields(pojoClass);
//需要导出的属性list
List<Field> newFields = new ArrayList<>();
for (Field field : classFields) {
Excel excel = field.getAnnotation(Excel.class);
if (excel != null) {
ExcelExportEntity entity = new ExcelExportEntity();
entity.setName(messageSource.getMessage(excel.name(), null, locale));
entity.setKey(field.getName());
entity.setOrderNum(Integer.parseInt(excel.orderNum()==null?"0":excel.orderNum()));
colList.add(entity);
newFields.add(field);
}
}
//数据体
for (Object obj : list) {
Map<String, Object> map = new HashMap<>();
for (Field field : newFields) {
// 仅在获取用private修饰属性使用
field.setAccessible(true);
map.put(field.getName(), field.get(obj)!=null?field.get(obj):"-");
}
resList.add(map);
}
}
}
|