项目特殊,数据源多种,导致导出sheet页各不相同且列超多(200+),客户变更频繁(开发阶段)。
设计用注解导出,节省开发时间。
涉及到注解的repeatable使用。
package com.hp.portal.util;
import java.beans.IntrospectionException;
import java.beans.PropertyDescriptor;
import java.io.IOException;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormat;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.data.domain.Pageable;
import org.springframework.util.CollectionUtils;
import com.hp.portal.util.MyAnnotations.MyColumn;
import com.hp.portal.util.MyAnnotations.MyColumns;
import com.hp.portal.util.MyAnnotations.MySheet;
public class ExcelUtils {
private static Logger logger = LoggerFactory.getLogger(ExcelUtils.class);
private static String DATE_FORMAT = "yyyy-MM-dd";
private static String NUMBER_MATCHER = "^(-?\\d+)(\\.\\d+)?$";
public static SXSSFWorkbook getSXSSFWorkbook() {
return new SXSSFWorkbook(-