/*
**代码功能解释**
`ExcelUtil` 是一个用于处理Excel文件操作的工具类,支持导入和导出Excel数据。它主要提供了以下功能:
1. **初始化**:通过`init`方法初始化ExcelUtil对象,包括指定要处理的数据列表、工作表名称和类型(导出或导入)。
2. **导入Excel**:通过`importExcel`方法从指定的Excel文件导入数据,返回导入后的数据列表。
3. **导出Excel**:通过`exportExcel`方法将指定的数据列表导出为Excel文件,并返回文件名称。
4. **创建样式**:`createStyles`方法用于创建Excel单元格的样式,包括数据样式和表头样式。
5. **创建单元格**:`createCell`方法用于在Excel表格中创建新的单元格,并设置其样式和值。
6. **设置数据验证**:`setDataValidation`方法用于设置单元格的验证信息,如下拉框列表、提示信息等。
7. **添加单元格**:`addCell`方法用于在Excel表格中根据指定的属性信息添加单元格,并设置其值。
8. **转换函数**:`convertByExp`和`reverseByExp`方法用于根据注解信息转换字段值,如性别代码转换、自定义代码转换等。
9. **文件操作**:`encodingFilename`和`getAbsoluteFile`方法用于处理文件名称和下载路径。
10. **反射获取属性值**:`getTargetValue`和`getValue`方法用于通过反射获取实体类中的属性值。
11. **创建工作簿和工作表**:`createWorkbook`和`createSheet`方法用于创建新的Excel工作簿和工作表。
12. **获取单元格值**:`getCellValue`方法用于获取指定行和列的单元格值。
该类中使用的注解`Excel`和`Excels`用于标注实体类字段的Excel导出/导入属性,如字段名称、宽度、高度、格式等。通过反射和注解信息,该类实现了Excel文件的导入和导出功能。
*/
package com.ruoyi.common.utils.poi;
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.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
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.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.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.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.CellRangeAddressList;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFDataValidation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType;
import com.ruoyi.framework.aspectj.lang.annotation.Excel.Type;
import com.ruoyi.framework.aspectj.lang.annotation.Excels;
import com.ruoyi.framework.config.RuoYiConfig;
import com.ruoyi.framework.web.domain.AjaxResult;
import com.ruoyi.common.core.text.Convert;
import com.ruoyi.common.exception.CustomException;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.reflect.ReflectUtils;
/**
* Excel相关处理
*
* @author ruoyi
*/
public class ExcelUtil<T>
{
private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
/**
* Excel sheet最大行数,默认65536
*/
public static final int sheetSize = 65536;
/**
* 工作表名称
*/
private String sheetName;
/**
* 导出类型(EXPORT:导出数据;IMPORT:导入模板)
*/
private Type type;
/**
* 工作薄对象
*/
private Workbook wb;
/**
* 工作表对象
*/
private Sheet sheet;
/**
* 样式列表
*/
private Map<String, CellStyle> styles;
/**
* 导入导出数据列表
*/
private List<T> list;
/**
* 注解列表
*/
private List<Object[]> fields;
/**
* 实体对象
*/
public Class<T> clazz;
public ExcelUtil(Class<T> clazz)
{
this.clazz = clazz;
}
public void init(List<T> list, String sheetName, Type type)
{
if (list == null)
{
list = new ArrayList<T>();
}
this.list = list;
this.sheetName = sheetName;
this.type = type;
createExcelField();
createWorkbook();
}
/**
* 对excel表单默认第一个索引名转换成list
*
* @param is 输入流
* @return 转换后集合
*/
public List<T> importExcel(InputStream is) throws Exception
{
return importExcel(StringUtils.EMPTY, is);
}
/**
* 对excel表单指定表格索引名转换成list
*
* @param sheetName 表格索引名
* @param is 输入流
* @return 转换后集合
*/
public List<T> importExcel(String sheetName, InputStream is) throws Exception
{
this.type = Type.IMPORT;
this.wb = WorkbookFactory.create(is);
List<T> list = new ArrayList<T>();
Sheet sheet = null;
if (StringUtils.isNotEmpty(sheetName))
{
sheet = wb.getSheet(sheetName);
}
else
{
sheet = wb.getSheetAt(0);
}
if (sheet == null)
{
throw new IOException("文件sheet不存在");
}
int rows = sheet.getPhysicalNumberOfRows();
if (rows > 0)
{
Map<String, Integer> cellMap = new HashMap<String, Integer>();
Row heard = sheet.getRow(0);
for (int i = 0; i < heard.getPhysicalNumberOfCells(); i++)
{
Cell cell = heard.getCell(i);
if (StringUtils.isNotNull(cell))
{
String value = this.getCellValue(heard, i).toString();
cellMap.put(value, i);
}
else
{
cellMap.put(null, i);
}
}
Field[] allFields = clazz.getDeclaredFields();
Map<Integer, Field> fieldsMap = new HashMap<Integer, Field>();
for (int col = 0; col < allFields.length; col++)
{
Field field = allFields[col];
Excel attr = field.getAnnotation(Excel.class);
if (attr != null && (attr.type() == Type.ALL || attr.type() == type))
{
field.setAccessible(true);
Integer column = cellMap.get(attr.name());
fieldsMap.put(column, field);
}
}
for (int i = 1; i < rows; i++)
{
Row row = sheet.getRow(i);
T entity = null;
for (Map.Entry<Integer, Field> entry : fieldsMap.entrySet())
{
Object val = this.getCellValue(row
没有合适的资源?快使用搜索试试~ 我知道了~
(源码)基于SpringBoot和Vue的前后端分离管理系统.zip
共513个文件
java:223个
svg:82个
vue:70个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 89 浏览量
2024-11-15
13:14:34
上传
评论
收藏 1.46MB ZIP 举报
温馨提示
# 基于Spring Boot和Vue的前后端分离管理系统 ## 项目简介 本项目是一个基于Spring Boot和Vue的前后端分离管理系统,旨在提供一个高效、灵活且易于扩展的管理平台。项目采用了Spring Boot作为后端框架,Vue作为前端框架,结合Spring Security、Redis和JWT进行权限认证和数据缓存。系统支持多终端认证,动态加载权限菜单,并提供代码生成器,可一键生成前后端代码,极大地提高了开发效率。 ## 项目的主要特性和功能 ### 用户管理 系统用户的配置和管理。 ### 部门管理 配置系统组织机构(公司、部门、小组),支持树结构展现和数据权限控制。 ### 岗位管理 配置系统用户所属担任职务。 ### 菜单管理 配置系统菜单,操作权限,按钮权限标识等。 ### 角色管理 角色菜单权限分配,设置角色按机构进行数据范围权限划分。 ### 字典管理
资源推荐
资源详情
资源评论
收起资源包目录
(源码)基于SpringBoot和Vue的前后端分离管理系统.zip (513个子文件)
run-tomcat.bat 279B
package.bat 176B
package.bat 152B
build.bat 132B
run-web.bat 123B
clean.bat 103B
.env.development 175B
.editorconfig 536B
.eslintignore 307B
401.gif 160KB
.gitignore 664B
.gitignore 279B
index.html 5KB
favicon.ico 6KB
IS 2B
ExcelUtil.java 28KB
Convert.java 27KB
HTMLFilter.java 20KB
UUID.java 17KB
ReflectUtils.java 16KB
SysMenuServiceImpl.java 15KB
SysUserServiceImpl.java 14KB
StringUtils.java 14KB
VelocityUtils.java 12KB
GenTableServiceImpl.java 12KB
Base64.java 11KB
HttpUtils.java 11KB
SysRoleServiceImpl.java 10KB
SysDeptServiceImpl.java 10KB
GenTableColumn.java 10KB
SysUserController.java 10KB
FileUploadUtils.java 9KB
SysUser.java 9KB
LogAspect.java 9KB
GenUtils.java 9KB
SysDeptController.java 9KB
SysJobServiceImpl.java 9KB
TokenService.java 8KB
VerifyCodeUtils.java 8KB
GenController.java 8KB
Server.java 8KB
SysRoleController.java 8KB
RedisCache.java 8KB
JobInvokeUtil.java 7KB
GenTable.java 7KB
SysMenuController.java 7KB
TestController.java 7KB
IpUtils.java 7KB
SecurityConfig.java 7KB
SysOperLog.java 7KB
SysDictTypeServiceImpl.java 7KB
SysJob.java 7KB
SysDictDataController.java 7KB
SysDictTypeController.java 7KB
SysPostServiceImpl.java 7KB
SysConfigController.java 7KB
DataScopeAspect.java 7KB
SysRole.java 7KB
SysMenu.java 7KB
PermissionService.java 6KB
SysDictData.java 6KB
SysProfileController.java 6KB
SysPostController.java 6KB
SysConfigServiceImpl.java 6KB
ISysMenuService.java 6KB
DruidConfig.java 6KB
LoginUser.java 6KB
MyBatisConfig.java 6KB
SysDept.java 6KB
GlobalExceptionHandler.java 6KB
EscapeUtil.java 6KB
SysJobController.java 6KB
ISysUserService.java 6KB
SwaggerConfig.java 5KB
DateUtils.java 5KB
SysLogininfor.java 5KB
SameUrlDataInterceptor.java 5KB
ServletUtils.java 5KB
ScheduleUtils.java 5KB
SysUserOnlineController.java 5KB
CommonController.java 5KB
FileUtils.java 5KB
SysJobLogController.java 5KB
GenConstants.java 5KB
StrFormatter.java 5KB
SpringUtils.java 5KB
AbstractQuartzJob.java 5KB
SysNoticeController.java 5KB
SysJobLog.java 5KB
SysLoginService.java 5KB
AjaxResult.java 5KB
AsyncFactory.java 5KB
SysConfig.java 5KB
Excel.java 5KB
SysPost.java 5KB
BaseController.java 5KB
ISysRoleService.java 4KB
Arith.java 4KB
BeanUtils.java 4KB
SysUserOnlineServiceImpl.java 4KB
共 513 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
t0_54coder
- 粉丝: 2384
- 资源: 2411
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 课程设计-哲学家就餐问题(并发算法问题)-解决策略:资源分级、最多允许四个哲学家同时拿筷子、服务员模式、尝试等待策略
- C#大型公司财务系统源码 企业财务管理系统源码数据库 SQL2008源码类型 WebForm
- MDK文件编译配套工程
- java项目,课程设计-ssm企业人事管理系统ssm.zip
- ton区块链func语言web3智能合约入门课程
- java项目,课程设计-ssm-框架的网上招聘系统的设计与实现
- C#winform-通用的视觉框架【功能完善,界面美观】,左侧工具栏,右边图像,右下日志,顶部导航栏,底部变量信息等等
- C#产品成本测算系统源码 成本管理系统源码数据库 SQL2008源码类型 WinForm
- C#多线程与线程同步机制高级实战课程
- 24129398王一钞.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功