package com.sq.gulimall.utils.poi;
import com.sq.gulimall.annotation.Excel;
import com.sq.gulimall.annotation.Excels;
import com.sq.gulimall.config.RuoYiConfig;
import com.sq.gulimall.core.domain.AjaxResult;
import com.sq.gulimall.core.text.Convert;
import com.sq.gulimall.exception.UtilException;
import com.sq.gulimall.utils.DateUtils;
import com.sq.gulimall.utils.DictUtils;
import com.sq.gulimall.utils.StringUtils;
import com.sq.gulimall.utils.file.FileTypeUtils;
import com.sq.gulimall.utils.file.FileUtils;
import com.sq.gulimall.utils.file.ImageUtils;
import com.sq.gulimall.utils.reflect.ReflectUtils;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.ParameterizedType;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.RegExUtils;
import org.apache.commons.lang3.reflect.FieldUtils;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPicture;
import org.apache.poi.hssf.usermodel.HSSFPictureData;
import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.ClientAnchor;
import org.apache.poi.ss.usermodel.DataValidation;
import org.apache.poi.ss.usermodel.DataValidationConstraint;
import org.apache.poi.ss.usermodel.DataValidationHelper;
import org.apache.poi.ss.usermodel.DateUtil;
import org.apache.poi.ss.usermodel.Drawing;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Name;
import org.apache.poi.ss.usermodel.PictureData;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.util.IOUtils;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFShape;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.openxmlformats.schemas.drawingml.x2006.spreadsheetDrawing.CTMarker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Excel相关处理
*
* @author ruoyi
*/
public class ExcelUtil<T>
{
private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
public static final String FORMULA_REGEX_STR = "=|-|\\+|@";
public static final String[] FORMULA_STR = { "=", "-", "+", "@" };
/**
* 用于dictType属性数据存储,避免重复查缓存
*/
public Map<String, String> sysDictMap = new HashMap<String, String>();
/**
* Excel sheet最大行数,默认65536
*/
public static final int sheetSize = 65536;
/**
* 工作表名称
*/
private String sheetName;
/**
* 导出类型(EXPORT:导出数据;IMPORT:导入模板)
*/
private Excel.Type type;
/**
* 工作薄对象
*/
private Workbook wb;
/**
* 工作表对象
*/
private Sheet sheet;
/**
* 样式列表
*/
private Map<String, CellStyle> styles;
/**
* 导入导出数据列表
*/
private List<T> list;
/**
* 注解列表
*/
private List<Object[]> fields;
/**
* 当前行号
*/
private int rownum;
/**
* 标题
*/
private String title;
/**
* 最大高度
*/
private short maxHeight;
/**
* 合并后最后行数
*/
private int subMergedLastRowNum = 0;
/**
* 合并后开始行数
*/
private int subMergedFirstRowNum = 1;
/**
* 对象的子列表方法
*/
private Method subMethod;
/**
* 对象的子列表属性
*/
private List<Field> subFields;
/**
* 统计列表
*/
private Map<Integer, Double> statistics = new HashMap<Integer, Double>();
/**
* 数字格式
*/
private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
/**
* 实体对象
*/
public Class<T> clazz;
/**
* 需要排除列属性
*/
public String[] excludeFields;
public ExcelUtil(Class<T> clazz)
{
this.clazz = clazz;
}
/**
* 隐藏Excel中列属性
*
* @param fields 列属性名 示例[单个"name"/多个"id","name"]
* @throws Exception
*/
public void hideColumn(String... fields)
{
this.excludeFields = fields;
}
public void init(List<T> list, String sheetName, String title, Excel.Type type)
{
if (list == null)
{
list = new ArrayList<T>();
}
this.list = list;
this.sheetName = sheetName;
this.type = type;
this.title = title;
createExcelField();
createWorkbook();
createTitle();
createSubHead();
}
/**
* 创建excel第一行标题
*/
public void createTitle()
{
if (StringUtils.isNotEmpty(title))
{
subMergedFirstRowNum++;
subMergedLastRowNum++;
int titleLastCol = this.fields.size() - 1;
if (isSubList())
{
titleLastCol = titleLastCol + subFields.size() - 1;
}
Row titleRow = sheet.createRow(rownum == 0 ? rownum++ : 0);
titleRow.setHeightInPoints(30);
Cell titleCell = titleRow.createCell(0);
titleCell.setCellStyle(styles.get("title"));
titleCell.setCellValue(title);
sheet.addMergedRegion(new CellRangeAddress(titleRow.getRowNum(), titleRow.getRowNum(), titleRow.getRowNum(), titleLastCol));
}
}
/**
* 创建对象的子列表名称
*/
public void createSubHead()
{
if (isSubList())
{
subMergedFirstRowNum++;
subMergedLastRowNum++;
Row subRow = sheet.createRow(rownum);
int excelNum = 0;
for (Object[] objects : fields)
{
Excel attr = (Excel) objects[1];
Cell headCell1 = subRow.createCell(excelNum);
headCell1.setCellValue(attr.name());
headCell1.setCellStyle(styles.get(StringUtils.format("header_{}_{}", attr.headerColor(), attr.headerBackgroundColor())));
excelNum++;
}
没有合适的资源?快使用搜索试试~ 我知道了~
公共模块包含其各个微服务所需的公共类以及依赖
共213个文件
class:112个
java:99个
gitignore:1个
0 下载量 151 浏览量
2023-07-25
00:34:41
上传
评论
收藏 311KB ZIP 举报
温馨提示
包含逆向代码所需的类及其相关依赖
资源推荐
资源详情
资源评论
收起资源包目录
公共模块包含其各个微服务所需的公共类以及依赖 (213个子文件)
ExcelUtil.class 45KB
Convert.class 13KB
HTMLFilter.class 13KB
ReflectUtils.class 11KB
StringUtils.class 9KB
HttpUtils.class 9KB
RedisCache.class 8KB
SysUser.class 8KB
IpUtils.class 7KB
UUID.class 6KB
FileUtils.class 6KB
SysRole.class 6KB
ServletUtils.class 6KB
SysMenu.class 6KB
FileUploadUtils.class 6KB
SysDept.class 5KB
DateUtils.class 5KB
SysDictData.class 5KB
LoginUser.class 5KB
DictUtils.class 4KB
BaseController.class 4KB
Base64.class 4KB
R.class 4KB
TreeSelect.class 3KB
SpringUtils.class 3KB
SysDictType.class 3KB
AjaxResult.class 3KB
EscapeUtil.class 3KB
ImageUtils.class 3KB
BaseEntity.class 3KB
GenConstants.class 3KB
BeanUtils.class 3KB
SecurityUtils.class 3KB
Threads.class 3KB
HttpHelper.class 2KB
RuoYiConfig.class 2KB
PageDomain.class 2KB
AddressUtils.class 2KB
HttpMethod.class 2KB
Md5Utils.class 2KB
Excel.class 2KB
BaseException.class 2KB
Arith.class 2KB
Seq.class 2KB
InvalidExtensionException.class 2KB
MimeTypeUtils.class 2KB
StrFormatter.class 2KB
Constants.class 2KB
TreeEntity.class 2KB
CharsetKit.class 2KB
TableDataInfo.class 2KB
SqlUtil.class 2KB
XssValidator.class 2KB
TableSupport.class 1KB
UserStatus.class 1KB
BusinessType.class 1KB
ScheduleConstants$Status.class 1KB
TaskException$Code.class 1KB
PageUtils.class 1KB
FileUploadException.class 1KB
FileTypeUtils.class 1KB
Excel$ColumnType.class 1KB
ExceptionUtil.class 1KB
Excel$Type.class 1KB
ServiceException.class 1KB
BeanValidators.class 1KB
HttpUtils$TrustAnyTrustManager.class 1KB
UserConstants.class 1KB
LoginBody.class 1KB
TaskException.class 1KB
OperatorType.class 1KB
DataSourceType.class 1KB
BusinessStatus.class 1KB
GlobalException.class 1020B
LimitType.class 1002B
BaseController$1.class 963B
MessageUtils.class 952B
HttpUtils$TrustAnyHostnameVerifier.class 924B
Log.class 906B
HttpStatus.class 895B
UtilException.class 814B
Xss.class 805B
InvalidExtensionException$InvalidImageExtensionException.class 769B
InvalidExtensionException$InvalidMediaExtensionException.class 769B
InvalidExtensionException$InvalidFlashExtensionException.class 769B
InvalidExtensionException$InvalidVideoExtensionException.class 769B
UserPasswordRetryLimitExceedException.class 740B
ScheduleConstants.class 716B
CacheConstants.class 716B
FileNameLengthLimitExceededException.class 711B
IdUtils.class 709B
RateLimiter.class 702B
FileSizeLimitExceededException.class 668B
LogUtils.class 666B
RepeatSubmit.class 634B
FileException.class 630B
UserException.class 630B
DataSource.class 623B
AppTest.class 591B
DataScope.class 572B
共 213 条
- 1
- 2
- 3
资源评论
渣瓦攻城狮
- 粉丝: 196
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功