This commit is contained in:
xd 2024-03-24 14:47:10 +08:00
parent e90bde476a
commit 8e37de0c7a
3 changed files with 45 additions and 60 deletions

View File

@ -11,7 +11,7 @@ import com.ruoyi.common.utils.poi.ExcelHandlerAdapter;
/** /**
* 自定义导出Excel数据注解 * 自定义导出Excel数据注解
* *
* @author ruoyi * @author ruoyi
*/ */
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@ -171,7 +171,7 @@ public @interface Excel
public enum ColumnType public enum ColumnType
{ {
NUMERIC(0), STRING(1), IMAGE(2); NUMERIC(0), STRING(1), IMAGE(2), TEXT(3);
private final int value; private final int value;
ColumnType(int value) ColumnType(int value)
@ -184,4 +184,4 @@ public @interface Excel
return this.value; return this.value;
} }
} }
} }

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.xss.Xss;
/** /**
* 用户对象 sys_user * 用户对象 sys_user
* *
* @author ruoyi * @author ruoyi
*/ */
public class SysUser extends BaseEntity public class SysUser extends BaseEntity
@ -42,7 +42,7 @@ public class SysUser extends BaseEntity
private String email; private String email;
/** 手机号码 */ /** 手机号码 */
@Excel(name = "手机号码") @Excel(name = "手机号码", cellType = ColumnType.TEXT)
private String phonenumber; private String phonenumber;
/** 用户性别 */ /** 用户性别 */

View File

@ -34,27 +34,7 @@ import org.apache.poi.hssf.usermodel.HSSFShape;
import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.ooxml.POIXMLDocumentPart;
import org.apache.poi.ss.usermodel.BorderStyle; import org.apache.poi.ss.usermodel.*;
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.CellRangeAddress;
import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.ss.util.CellRangeAddressList;
import org.apache.poi.util.IOUtils; import org.apache.poi.util.IOUtils;
@ -87,7 +67,7 @@ import com.ruoyi.common.utils.reflect.ReflectUtils;
/** /**
* Excel相关处理 * Excel相关处理
* *
* @author ruoyi * @author ruoyi
*/ */
public class ExcelUtil<T> public class ExcelUtil<T>
@ -284,7 +264,7 @@ public class ExcelUtil<T>
/** /**
* 对excel表单默认第一个索引名转换成list * 对excel表单默认第一个索引名转换成list
* *
* @param is 输入流 * @param is 输入流
* @return 转换后集合 * @return 转换后集合
*/ */
@ -309,7 +289,7 @@ public class ExcelUtil<T>
/** /**
* 对excel表单默认第一个索引名转换成list * 对excel表单默认第一个索引名转换成list
* *
* @param is 输入流 * @param is 输入流
* @param titleNum 标题占用行数 * @param titleNum 标题占用行数
* @return 转换后集合 * @return 转换后集合
@ -321,7 +301,7 @@ public class ExcelUtil<T>
/** /**
* 对excel表单指定表格索引名转换成list * 对excel表单指定表格索引名转换成list
* *
* @param sheetName 表格索引名 * @param sheetName 表格索引名
* @param titleNum 标题占用行数 * @param titleNum 标题占用行数
* @param is 输入流 * @param is 输入流
@ -500,7 +480,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param list 导出数据集合 * @param list 导出数据集合
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @return 结果 * @return 结果
@ -512,7 +492,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param list 导出数据集合 * @param list 导出数据集合
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @param title 标题 * @param title 标题
@ -526,7 +506,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param response 返回数据 * @param response 返回数据
* @param list 导出数据集合 * @param list 导出数据集合
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
@ -539,7 +519,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param response 返回数据 * @param response 返回数据
* @param list 导出数据集合 * @param list 导出数据集合
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
@ -556,7 +536,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @return 结果 * @return 结果
*/ */
@ -567,7 +547,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @param title 标题 * @param title 标题
* @return 结果 * @return 结果
@ -580,7 +560,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @return 结果 * @return 结果
*/ */
@ -591,7 +571,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @param sheetName 工作表的名称 * @param sheetName 工作表的名称
* @param title 标题 * @param title 标题
* @return 结果 * @return 结果
@ -606,7 +586,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @return 结果 * @return 结果
*/ */
public void exportExcel(HttpServletResponse response) public void exportExcel(HttpServletResponse response)
@ -628,7 +608,7 @@ public class ExcelUtil<T>
/** /**
* 对list数据源将其里面的数据导入到excel表单 * 对list数据源将其里面的数据导入到excel表单
* *
* @return 结果 * @return 结果
*/ */
public AjaxResult exportExcel() public AjaxResult exportExcel()
@ -696,7 +676,7 @@ public class ExcelUtil<T>
/** /**
* 填充excel数据 * 填充excel数据
* *
* @param index 序号 * @param index 序号
* @param row 单元格行 * @param row 单元格行
*/ */
@ -767,7 +747,7 @@ public class ExcelUtil<T>
/** /**
* 创建表格样式 * 创建表格样式
* *
* @param wb 工作薄对象 * @param wb 工作薄对象
* @return 样式列表 * @return 样式列表
*/ */
@ -820,7 +800,7 @@ public class ExcelUtil<T>
/** /**
* 根据Excel注解创建表格头样式 * 根据Excel注解创建表格头样式
* *
* @param wb 工作薄对象 * @param wb 工作薄对象
* @return 自定义样式列表 * @return 自定义样式列表
*/ */
@ -853,7 +833,7 @@ public class ExcelUtil<T>
/** /**
* 根据Excel注解创建表格列样式 * 根据Excel注解创建表格列样式
* *
* @param wb 工作薄对象 * @param wb 工作薄对象
* @return 自定义样式列表 * @return 自定义样式列表
*/ */
@ -884,6 +864,11 @@ public class ExcelUtil<T>
dataFont.setFontHeightInPoints((short) 10); dataFont.setFontHeightInPoints((short) 10);
dataFont.setColor(excel.color().index); dataFont.setColor(excel.color().index);
style.setFont(dataFont); style.setFont(dataFont);
if (ColumnType.TEXT == excel.cellType())
{
DataFormat dataFormat = wb.createDataFormat();
style.setDataFormat(dataFormat.getFormat("@"));
}
styles.put(key, style); styles.put(key, style);
} }
} }
@ -915,14 +900,14 @@ public class ExcelUtil<T>
/** /**
* 设置单元格信息 * 设置单元格信息
* *
* @param value 单元格值 * @param value 单元格值
* @param attr 注解相关 * @param attr 注解相关
* @param cell 单元格信息 * @param cell 单元格信息
*/ */
public void setCellVo(Object value, Excel attr, Cell cell) public void setCellVo(Object value, Excel attr, Cell cell)
{ {
if (ColumnType.STRING == attr.cellType()) if (ColumnType.STRING == attr.cellType()|| ColumnType.TEXT == attr.cellType())
{ {
String cellValue = Convert.toStr(value); String cellValue = Convert.toStr(value);
// 对于任何以表达式触发字符 =-+@开头的单元格直接使用tab字符作为前缀防止CSV注入 // 对于任何以表达式触发字符 =-+@开头的单元格直接使用tab字符作为前缀防止CSV注入
@ -1084,7 +1069,7 @@ public class ExcelUtil<T>
/** /**
* 设置 POI XSSFSheet 单元格提示或选择框 * 设置 POI XSSFSheet 单元格提示或选择框
* *
* @param sheet 表单 * @param sheet 表单
* @param textlist 下拉框显示的内容 * @param textlist 下拉框显示的内容
* @param promptContent 提示内容 * @param promptContent 提示内容
@ -1173,7 +1158,7 @@ public class ExcelUtil<T>
/** /**
* 解析导出值 0=,1=,2=未知 * 解析导出值 0=,1=,2=未知
* *
* @param propertyValue 参数值 * @param propertyValue 参数值
* @param converterExp 翻译注解 * @param converterExp 翻译注解
* @param separator 分隔符 * @param separator 分隔符
@ -1210,7 +1195,7 @@ public class ExcelUtil<T>
/** /**
* 反向解析值 =0,=1,未知=2 * 反向解析值 =0,=1,未知=2
* *
* @param propertyValue 参数值 * @param propertyValue 参数值
* @param converterExp 翻译注解 * @param converterExp 翻译注解
* @param separator 分隔符 * @param separator 分隔符
@ -1247,7 +1232,7 @@ public class ExcelUtil<T>
/** /**
* 解析字典值 * 解析字典值
* *
* @param dictValue 字典值 * @param dictValue 字典值
* @param dictType 字典类型 * @param dictType 字典类型
* @param separator 分隔符 * @param separator 分隔符
@ -1260,7 +1245,7 @@ public class ExcelUtil<T>
/** /**
* 反向解析值字典值 * 反向解析值字典值
* *
* @param dictLabel 字典标签 * @param dictLabel 字典标签
* @param dictType 字典类型 * @param dictType 字典类型
* @param separator 分隔符 * @param separator 分隔符
@ -1273,7 +1258,7 @@ public class ExcelUtil<T>
/** /**
* 数据处理器 * 数据处理器
* *
* @param value 数据值 * @param value 数据值
* @param excel 数据注解 * @param excel 数据注解
* @return * @return
@ -1350,7 +1335,7 @@ public class ExcelUtil<T>
/** /**
* 获取下载路径 * 获取下载路径
* *
* @param filename 文件名称 * @param filename 文件名称
*/ */
public String getAbsoluteFile(String filename) public String getAbsoluteFile(String filename)
@ -1366,7 +1351,7 @@ public class ExcelUtil<T>
/** /**
* 获取bean中的属性值 * 获取bean中的属性值
* *
* @param vo 实体对象 * @param vo 实体对象
* @param field 字段 * @param field 字段
* @param excel 注解 * @param excel 注解
@ -1397,7 +1382,7 @@ public class ExcelUtil<T>
/** /**
* 以类的属性的get方法方法形式获取值 * 以类的属性的get方法方法形式获取值
* *
* @param o * @param o
* @param name * @param name
* @return value * @return value
@ -1503,7 +1488,7 @@ public class ExcelUtil<T>
/** /**
* 创建工作表 * 创建工作表
* *
* @param sheetNo sheet数量 * @param sheetNo sheet数量
* @param index 序号 * @param index 序号
*/ */
@ -1520,7 +1505,7 @@ public class ExcelUtil<T>
/** /**
* 获取单元格值 * 获取单元格值
* *
* @param row 获取的行 * @param row 获取的行
* @param column 获取单元格列号 * @param column 获取单元格列号
* @return 单元格值 * @return 单元格值
@ -1580,7 +1565,7 @@ public class ExcelUtil<T>
/** /**
* 判断是否是空行 * 判断是否是空行
* *
* @param row 判断的行 * @param row 判断的行
* @return * @return
*/ */
@ -1668,7 +1653,7 @@ public class ExcelUtil<T>
/** /**
* 格式化不同类型的日期对象 * 格式化不同类型的日期对象
* *
* @param dateFormat 日期格式 * @param dateFormat 日期格式
* @param val 被格式化的日期对象 * @param val 被格式化的日期对象
* @return 格式化后的日期字符 * @return 格式化后的日期字符
@ -1734,7 +1719,7 @@ public class ExcelUtil<T>
/** /**
* 获取对象的子列表方法 * 获取对象的子列表方法
* *
* @param name 名称 * @param name 名称
* @param pojoClass 类对象 * @param pojoClass 类对象
* @return 子列表方法 * @return 子列表方法