|
|
@ -2,10 +2,12 @@ package com.ruoyi.common.core.utils.poi;
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.InputStream;
|
|
|
|
import java.io.InputStream;
|
|
|
|
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
import java.lang.reflect.Field;
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
import java.lang.reflect.Method;
|
|
|
|
import java.lang.reflect.ParameterizedType;
|
|
|
|
import java.lang.reflect.ParameterizedType;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
|
|
|
import java.net.URLEncoder;
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.text.DecimalFormat;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
@ -255,7 +257,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 对excel表单默认第一个索引名转换成list
|
|
|
|
* 对excel表单默认第一个索引名转换成list
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param is 输入流
|
|
|
|
* @param is 输入流
|
|
|
|
* @return 转换后集合
|
|
|
|
* @return 转换后集合
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -266,7 +268,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 对excel表单默认第一个索引名转换成list
|
|
|
|
* 对excel表单默认第一个索引名转换成list
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param is 输入流
|
|
|
|
* @param is 输入流
|
|
|
|
* @param titleNum 标题占用行数
|
|
|
|
* @param titleNum 标题占用行数
|
|
|
|
* @return 转换后集合
|
|
|
|
* @return 转换后集合
|
|
|
@ -278,7 +280,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 对excel表单指定表格索引名转换成list
|
|
|
|
* 对excel表单指定表格索引名转换成list
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param sheetName 表格索引名
|
|
|
|
* @param sheetName 表格索引名
|
|
|
|
* @param titleNum 标题占用行数
|
|
|
|
* @param titleNum 标题占用行数
|
|
|
|
* @param is 输入流
|
|
|
|
* @param is 输入流
|
|
|
@ -455,6 +457,11 @@ public class ExcelUtil<T>
|
|
|
|
public void exportExcel(HttpServletResponse response, List<T> list, String sheetName, String title)
|
|
|
|
public void exportExcel(HttpServletResponse response, List<T> list, String sheetName, String title)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
|
|
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
response.addHeader("Content-Disposition", "attachment;FileName=" + URLEncoder.encode(title,"utf-8"));
|
|
|
|
|
|
|
|
} catch (UnsupportedEncodingException e) {
|
|
|
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
response.setCharacterEncoding("utf-8");
|
|
|
|
response.setCharacterEncoding("utf-8");
|
|
|
|
this.init(list, sheetName, title, Type.EXPORT);
|
|
|
|
this.init(list, sheetName, title, Type.EXPORT);
|
|
|
|
exportExcel(response);
|
|
|
|
exportExcel(response);
|
|
|
@ -488,7 +495,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 对list数据源将其里面的数据导入到excel表单
|
|
|
|
* 对list数据源将其里面的数据导入到excel表单
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @return 结果
|
|
|
|
* @return 结果
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
public void exportExcel(HttpServletResponse response)
|
|
|
|
public void exportExcel(HttpServletResponse response)
|
|
|
@ -550,7 +557,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 填充excel数据
|
|
|
|
* 填充excel数据
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param index 序号
|
|
|
|
* @param index 序号
|
|
|
|
* @param row 单元格行
|
|
|
|
* @param row 单元格行
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -614,7 +621,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 创建表格样式
|
|
|
|
* 创建表格样式
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @return 样式列表
|
|
|
|
* @return 样式列表
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -667,7 +674,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据Excel注解创建表格头样式
|
|
|
|
* 根据Excel注解创建表格头样式
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @return 自定义样式列表
|
|
|
|
* @return 自定义样式列表
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -681,6 +688,7 @@ public class ExcelUtil<T>
|
|
|
|
if (!headerStyles.containsKey(key))
|
|
|
|
if (!headerStyles.containsKey(key))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CellStyle style = wb.createCellStyle();
|
|
|
|
CellStyle style = wb.createCellStyle();
|
|
|
|
|
|
|
|
style = wb.createCellStyle();
|
|
|
|
style.cloneStyleFrom(styles.get("data"));
|
|
|
|
style.cloneStyleFrom(styles.get("data"));
|
|
|
|
style.setAlignment(HorizontalAlignment.CENTER);
|
|
|
|
style.setAlignment(HorizontalAlignment.CENTER);
|
|
|
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
@ -700,7 +708,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 根据Excel注解创建表格列样式
|
|
|
|
* 根据Excel注解创建表格列样式
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @param wb 工作薄对象
|
|
|
|
* @return 自定义样式列表
|
|
|
|
* @return 自定义样式列表
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -714,6 +722,7 @@ public class ExcelUtil<T>
|
|
|
|
if (!styles.containsKey(key))
|
|
|
|
if (!styles.containsKey(key))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
CellStyle style = wb.createCellStyle();
|
|
|
|
CellStyle style = wb.createCellStyle();
|
|
|
|
|
|
|
|
style = wb.createCellStyle();
|
|
|
|
style.setAlignment(excel.align());
|
|
|
|
style.setAlignment(excel.align());
|
|
|
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
|
style.setVerticalAlignment(VerticalAlignment.CENTER);
|
|
|
|
style.setBorderRight(BorderStyle.THIN);
|
|
|
|
style.setBorderRight(BorderStyle.THIN);
|
|
|
@ -762,7 +771,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 设置单元格信息
|
|
|
|
* 设置单元格信息
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param value 单元格值
|
|
|
|
* @param value 单元格值
|
|
|
|
* @param attr 注解相关
|
|
|
|
* @param attr 注解相关
|
|
|
|
* @param cell 单元格信息
|
|
|
|
* @param cell 单元格信息
|
|
|
@ -909,7 +918,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 设置 POI XSSFSheet 单元格提示或选择框
|
|
|
|
* 设置 POI XSSFSheet 单元格提示或选择框
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param sheet 表单
|
|
|
|
* @param sheet 表单
|
|
|
|
* @param textlist 下拉框显示的内容
|
|
|
|
* @param textlist 下拉框显示的内容
|
|
|
|
* @param promptContent 提示内容
|
|
|
|
* @param promptContent 提示内容
|
|
|
@ -983,7 +992,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 反向解析值 男=0,女=1,未知=2
|
|
|
|
* 反向解析值 男=0,女=1,未知=2
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param propertyValue 参数值
|
|
|
|
* @param propertyValue 参数值
|
|
|
|
* @param converterExp 翻译注解
|
|
|
|
* @param converterExp 翻译注解
|
|
|
|
* @param separator 分隔符
|
|
|
|
* @param separator 分隔符
|
|
|
@ -1224,7 +1233,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 创建工作表
|
|
|
|
* 创建工作表
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param sheetNo sheet数量
|
|
|
|
* @param sheetNo sheet数量
|
|
|
|
* @param index 序号
|
|
|
|
* @param index 序号
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -1241,7 +1250,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取单元格值
|
|
|
|
* 获取单元格值
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param row 获取的行
|
|
|
|
* @param row 获取的行
|
|
|
|
* @param column 获取单元格列号
|
|
|
|
* @param column 获取单元格列号
|
|
|
|
* @return 单元格值
|
|
|
|
* @return 单元格值
|
|
|
@ -1301,7 +1310,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 判断是否是空行
|
|
|
|
* 判断是否是空行
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param row 判断的行
|
|
|
|
* @param row 判断的行
|
|
|
|
* @return
|
|
|
|
* @return
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -1324,7 +1333,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 格式化不同类型的日期对象
|
|
|
|
* 格式化不同类型的日期对象
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param dateFormat 日期格式
|
|
|
|
* @param dateFormat 日期格式
|
|
|
|
* @param val 被格式化的日期对象
|
|
|
|
* @param val 被格式化的日期对象
|
|
|
|
* @return 格式化后的日期字符
|
|
|
|
* @return 格式化后的日期字符
|
|
|
@ -1390,7 +1399,7 @@ public class ExcelUtil<T>
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 获取对象的子列表方法
|
|
|
|
* 获取对象的子列表方法
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param name 名称
|
|
|
|
* @param name 名称
|
|
|
|
* @param pojoClass 类对象
|
|
|
|
* @param pojoClass 类对象
|
|
|
|
* @return 子列表方法
|
|
|
|
* @return 子列表方法
|
|
|
|