- 1.项目介绍
- 2.新手入门教程
- 3.开发环境准备
- 14.快速开始
- 16.上线发布
- 微服务开发
- 28.代码生成器
- 38.Online导入表过滤规则
- 39.后端开发技巧
- 40.常用问题汇总
- 41.自定义注解用法
- 42.Spring缓存注解@Cacheable
- 43.字典翻译注解@Dict
- 44.数据权限注解@PermissionData
- 45.日志记录注解@AutoLog
- 46.菜单路由配置
- 47.菜单配置说明
- 48.带参数路由菜单
- 49.路由菜单规则
- 50.菜单快速SQL
- 51.聚合路由菜单
- 52.数据快照功能如何用?
- 53.快速创建module模块
- 54.旧:新建maven模块项目?
- 55.查询过滤器用法
- 56.系统日志怎么插入?
- 57.自定义sql分页实现
- 58.针对敏感数据,加密传递方案
- Redis 如何使用?
- 60.事务如何使用?
- 61.动态数据源使用
- 62.定时任务如何开发?
- 63.系统通知接口
- 64.消息推送接口
- 65.JeecgBoot连接达梦数据库
- 66.接口敏感数据安全
- 67.批量插入效率建议
- 68.短信接口配置-阿里大鱼短信
- 69.自定义注解限制重复提交
- 70.邮箱配置文档
- 71.公文发文收文
- 72.WPS配置文档
- 73.公文发文收文使用手册
- 74.WPS集成代码解读
- 75.积木报表设计器数据集使用
- 76.父子编码使用说明
- 77.我的文档安全配置
- 78.文档预览
- 79.在线多数据源
- 80.系统文件上传
- 81.统一文件上传规则
- 82.MinIO配置
- 83.阿里云OSS配置
- 84.UI前端开发技巧
- 85.如何更改默认主题
- 86.Form表单开发特殊性
- 87.Icon图标扩展方法
- 88.vuex使用详解
- 89.vue路由带参总结
- 90.全局配置文件
- 91.列表自定义列实现
- 92.国际化改造方案
- 93.常用命令
- 94.报表开发
- 95.报表开发技术点
- 96.自定义报表组件
- 97.源码解读
- 98.自定义组件
- 99.前端技巧
- 100.components包下文件描述
- 101.JDictSelectTag字典标签
- 102.duplicateCheck表单字段重复校验通用JS
- 103.JVxeTable行编辑
- 104.组件配置文档
- 105.自定义组件
- 106.封装自定义组件
- 107.自定义组件增强
- 108.使用示例
- 109.常见问题解答
- 110.JEditableTable帮助文档
- 111.JMultiSelectTag多选组件
- 112.JPopup弹窗选择组件
- 113.JSearchSelectTag字典表的搜索组件
- 114.JSelectDepart部门选择组件
- 115.JSelectMultiUser用户多选组件
- 116.JSelectUserByDep根据部门选择用户
- 117.JTreeDict分类字典树形下拉组件
- 118.JTreeSelect树形下拉框-异步加载
- JInput 特殊查询组件
- JCron 帮助文档
- JCategorySelect 帮助文档
- 122.JUpload上传组件
- 123.JImageUpload图片上传组件
- 124.JSuperQuery高级查询组件
- 125.JAreaLinkage省市县三级联动
- 126.JEllipsis超长截取显示
- JDate 日期组件
- 128.JCheckbox组件
- 129.JCodeEditor组件
- 130.JSelectMultiple多选下拉组件
- 131.JTreeSelect树形下拉组件
- 132.JImportModal组件
- 133.JAsyncTreeList异步树表格
- 134.JFormContainer使用文档
- 135.JMarkdownEditor使用文档
- 136.前端开发坑-一定要注意
- 137.按需加载方案
- 138.按需加载@减小打包
- 139.JeecgBoot实战-按需加载方案
- 140.表格的换行与不换行
- 141.旧:表格的换行与不换行
- 142.主子表子表下拉框、时间框弹框被遮挡优化
- 143.前端依赖包package.json
- 144.如何实现多列表单
- 145.前端字典缓存用法
- 146.自定义首页
- 147.系统权限用法
- 148.JAVA请求权限控制
- 149.页面按钮权限用法
- 150.列表列字段权限控制
- 151.表单权限
- 152.显示隐藏控制
- 153.禁用控制用法一
- 154.禁用控制用法二
- 155.子表行字段的禁用和隐藏控制
- 156.数据权限
- 157.数据权限规则篇
- 158.数据权限用法篇
- 159.编码对接数据权限-未用查询过滤器
- 160.权限配置自定义SQL
- 161.二级部门权限管理
- 162.填值规则-编码生成
- 163.校验规则
- 164.Online表单
- 165.Online菜单配置
- 166.Online开发初体验
- 167.Online表单配置
- 168.Online表单一对多表单配置
- 169.Online表单删除说明
- 170.Online表单标准字段说明
- 171.Online树列表表单配置
- 172.Online表单配置参数说明
- 导入导出值转换器
- 174.Online表单填值规则配置
- 175.Online表单排版
- 176.Online树列表表单配置-个性化
- 177.Online表单控件
- 178.下拉框@多选框@单选框
- 179.下拉多选
- 180.下拉搜索
- 181.Popup控件
- 182.富文本控件
- 183.时间控件
- 184.用户选择器
- 185.部门选择器
- 186.自定义树控件
- 187.分类字典树控件
- 188.Online之popup使用
- 189.下拉联动组件
- 190.markdown编辑器
- 191.省市区组件
- 192.字段排列顺序调整
- 193.字段显示隐藏控制
- 194.字段校验规则使用
- 195.控件配置Href
- 196.控件默认值表达式
- 197.开关控件
- 20200914
- 199.字段权限配置与授权
- 200.按钮权限配置与授权
- 201.数据权限配置与授权
- 202.Online权限配置
- 203.列表字段权限-显示与隐藏
- 204.表单字段权限-隐藏和禁用
- 205.列表按钮权限-隐藏
- 206.列表数据权限
- 207.树形表单数据权限配置
- 208.二次开发-在线增强
- 209.online基础篇-JS增强-列表
- 210.online基础篇-JS增强-表单渲染
- API
- 212.列表
- 213.表单
- 实战示例
- 215.列表自定义按钮
- 改变控件的值
- 217.修改控件值【从表】
- 218.修改控件值【单-主-表】
- 219.online基础篇-SQL增强
- 220.online基础篇-自定义按钮
- 221.Online自定义按钮-表达式用法
- 222.online基础篇-java增强
- Online Java 增强 导入
- Online Java 增强 导出
- Online Java 增强 查询
- 226.online升级篇-表单API接口
- 227.online升级篇-扩展控件类型
- 228.online表单JS增强实现下拉联动
- 229.edu
- 230.Online表单专题课程
- 231.备注
- 232.Online表单权限配置按钮-列-表单字段的显示或隐藏
- 233.列表权限
- 234.列表字段的显示或隐藏
- 235.列表操作按钮的显示或隐藏
- 236.列表自定义按钮的显示或隐藏
- 237.表单权限
- 238.表单字段的显示或隐藏
- 239.表单字段的禁用或可编辑
- 240.Online导出支持图片
- 241.Online表单视图功能
- 242.JVXETable和JEditableTable切换方式
- 243.通过字段href实现3张表的关联
- 244.从数据库导入表单配置排除表名
- 245.Online报表
- 246.Online图表
- 247.Online图表配置手册
- 248.列表数据显示规则
- 249.组合报表的配置方式
- 250.如何配置菜单
- 251.常见问题
- 252.JS增强
- 253.参数说明
- 254.Online报表
- 255.online报表-使用步骤
- 256.online报表-动态参数
- 257.如何配置报表菜单
- 258.Online报表权限配置
- 259.Online报表系统变量应用
- 260.参数说明
- 261.Online报表排序
- 262.字段href
- 263.字典配置
- 264.高级实战技巧
- 265.HBuilderX打包APP
- 266.1.Build-JeecgBoot项目
- 打包APP
- 268.HBuilder打包APP手机端安装配置教程
- 269.Websocket业务对接
- 270.WebSocket的集成
- 271.SAAS多租户用法
- 272.CAS单点登录
- 273.1.CAS单点登录服务端准备
- 274.2.JeecgBoot后端对接CAS步骤
- 275.3.JeecgBoot前端项目对接CAS步骤
- 276.单点登录流程图
- 277.表单设计器
- 278.介绍
- 279.基础操作
- 280.配置字段属性
- 281.配置表单属性
- 282.配置到菜单
- 283.移动表单设计
- 284.表单组件
- 285.基础字段
- 286.单选、多选、下拉框
- 287.日期、时间选择器
- 288.高级组件
- 289.文本
- 290.按钮
- 291.分隔符
- 292.文件上传和图片上传
- 293.布局组件
- 294.Tabs
- 295.卡片
- 296.栅格布局
- 297.JEECG字段
- 298.设计子表
- 299.表字典-POPUP-下拉
- 300.用户组件、部门组件
- 301.高级操作
- 302.JS增强
- 303.全局JS增强
- 304.按钮JS增强
- 305.JS增强示例
- 306.CSS增强
- 307.表单增强
- 308.自定义接收URL
- 309.外部JS-CSS增强
- 310.控件取值
- 311.默认值表达式
- 312.远程API取值
- 313.填值规则
- 314.数据绑定映射
- 315.业务场景
- 316.远端选项数据
- 317.权限配置
- 318.表单字段权限
- 319.列表数据权限
- 320.列表按钮权限
- 321.角色授权
- 322.路由配置
- 323.表单对外接口
- 324.二次开发
- 325.自定义新控件
- 326.上传配置
- 327.旧:基础操作手册
- 328.旧:高级操作手册
- 329.AutoPOI-Excel工具
- 330.快速文档
- 331.单表数据导出多表头示例
- 332.单表数据多表头导入注意
- 333.导出自定义选择列导出
- 334.@excel注解使用
- 335.excel根据模板导出
- 336.一对多导出needMerge
- 337.第三方登录
- 338.企业微信配置
- 339.钉钉配置
- 340.企业微信集成方案
- 341.APP开发
- 342.后台推送消息给移动端
- 343.小结
- 344.编码规范
- 345.代码规范
- 346.建表规范
- 347.个人备忘录
- 348.小白实战课程
- 349.任务节点直接关联多节点分支
- 350.使用排他网管的分支
- 351.并行网管分支
- 352.任务节点人员配置表达式使用
- 353.会签属性循环集合表达式使用
- 354.流程监听
- 355.节点配置地址
- 356.多数据源使用
- 357.自定义开发流程小结
- 358.登录时不选择部门不能进入主页面
- 359.docker安装中文字体
- Cloud System API
- 361.jvxe升级-LOWCOD-812
- 363.jeecg-uniapp开发
- 364.开发环境搭建
- 365.项目简介
- 366.打包项目
- 367.APP打包
- 368.微信小程序打包
- 369.H5打包
- 370.小程序发布
- 371.API接口配置
- 372.uniapp推送
- 373.后台定时unipush推送配置
- 374.FQA
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
330.快速文档
AutoPOI 功能如同名字auto,追求的就是自动化,让一个没接触过poi的人员,可以傻瓜式半智能化的快速实现Excel导入导出、Word模板导出、可以仅仅5行代码就可以完成Excel的导入导出。
AutoPOI的主要特点
1.设计精巧,使用简单
2.接口丰富,扩展简单
3.默认值多,write less do more
4.AbstractView 支持,web导出可以简单明了
AutoPOI的几个入口工具类
1.ExcelExportUtil Excel导出(普通导出,模板导出)
2.ExcelImportUtil Excel导入
3.WordExportUtil Word导出(只支持docx ,doc版本poi存在图片的bug,暂不支持)
关于Excel导出XLS和XLSX区别
1.导出时间XLS比XLSX快2-3倍
2.导出大小XLS是XLSX的2-3倍或者更多
3.导出需要综合网速和本地速度做考虑^~^
几个工程的说明
1.autopoi-parent 父包--作用大家都懂得
2.autopoi 导入导出的工具包,可以完成Excel导出,导入,Word的导出,Excel的导出功能
3.autopoi-web 耦合了spring-mvc 基于AbstractView,极大的简化spring-mvc下的导出功能
4.sax 导入使用xercesImpl这个包(这个包可能造成奇怪的问题哈),word导出使用poi-scratchpad,都作为可选包了
maven
<dependency>
<groupId>org.jeecgframework</groupId>
<artifactId>autopoi-web</artifactId>
<version>1.0.4</version>
</dependency>
AutoPoi 模板 表达式支持
- 空格分割
- 三目运算 {{test ? obj:obj2}}
- n: 表示 这个cell是数值类型 {{n:}}
- le: 代表长度{{le:()}} 在if/else 运用{{le:() > 8 ? obj1 : obj2}}
- fd: 格式化时间 {{fd:(obj;yyyy-MM-dd)}}
- fn: 格式化数字 {{fn:(obj;###.00)}}
- fe: 遍历数据,创建row
- !fe: 遍历数据不创建row
- $fe: 下移插入,把当前行,下面的行全部下移.size()行,然后插入
- !if: 删除当前列 {{!if:(test)}}
- 单引号表示常量值 '' 比如'1' 那么输出的就是 1
AutoPoi导出实例
1.注解,导入导出都是基于注解的,实体上做上注解,标示导出对象,同时可以做一些操作
@ExcelTarget("courseEntity")
public class CourseEntity implements java.io.Serializable {
/** 主键 */
private String id;
/** 课程名称 */
@Excel(name = "课程名称", orderNum = "1", needMerge = true)
private String name;
/** 老师主键 */
@ExcelEntity(id = "yuwen")
@ExcelVerify()
private TeacherEntity teacher;
/** 老师主键 */
@ExcelEntity(id = "shuxue")
private TeacherEntity shuxueteacher;
@ExcelCollection(name = "选课学生", orderNum = "4")
private List<StudentEntity> students;
2.基础导出 传入导出参数,导出对象,以及对象列表即可完成导出
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
"2412312", "测试", "测试"), CourseEntity.class, list);
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
"2412312", "测试", "测试"), CourseEntity.class, list,exportFields);
3.基础导出,带有索引 在到处参数设置一个值,就可以在导出列增加索引
ExportParams params = new ExportParams("2412312", "测试", "测试");
params.setAddIndex(true);
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(params,
TeacherEntity.class, telist);
4.导出Map 创建类似注解的集合,即可完成Map的导出,略有麻烦
List<ExcelExportEntity> entity = new ArrayList<ExcelExportEntity>();
entity.add(new ExcelExportEntity("姓名", "name"));
entity.add(new ExcelExportEntity("性别", "sex"));
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map;
for (int i = 0; i < 10; i++) {
map = new HashMap<String, String>();
map.put("name", "1" + i);
map.put("sex", "2" + i);
list.add(map);
}
HSSFWorkbook workbook = ExcelExportUtil.exportExcel(new ExportParams(
"测试", "测试"), entity, list);
5.模板导出 根据模板配置,完成对应导出
TemplateExportParams params = new TemplateExportParams();
params.setHeadingRows(2);
params.setHeadingStartRow(2);
Map<String,Object> map = new HashMap<String, Object>();
map.put("year", "2013");
map.put("sunCourses", list.size());
Map<String,Object> obj = new HashMap<String, Object>();
map.put("obj", obj);
obj.put("name", list.size());
params.setTemplateUrl("org/jeecgframework/poi/excel/doc/exportTemp.xls");
Workbook book = ExcelExportUtil.exportExcel(params, CourseEntity.class, list,
map);
6.导入 设置导入参数,传入文件或者流,即可获得相应的list
ImportParams params = new ImportParams();
params.setTitleRows(2);
params.setHeadRows(2);
//params.setSheetNum(9);
params.setNeedSave(true);
long start = new Date().getTime();
List<CourseEntity> list = ExcelImportUtil.importExcel(new File(
"d:/tt.xls"), CourseEntity.class, params);
7.SpringMvc的无缝融合 简单几句话,Excel导出搞定
@RequestMapping(value = "/exportXls")
public ModelAndView exportXls(HttpServletRequest request, HttpServletResponse response) {
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
List<JeecgDemo> pageList = jeecgDemoService.list();
//导出文件名称
mv.addObject(NormalExcelConstants.FILE_NAME,"导出Excel文件名字");
//注解对象Class
mv.addObject(NormalExcelConstants.CLASS,JeecgDemo.class);
//自定义导出字段 mv.addObject(NormalExcelConstants.EXPORT_FIELDS,"name,keyWord,punchTime");
//自定义表格参数
mv.addObject(NormalExcelConstants.PARAMS,new ExportParams("自定义导出Excel模板内容标题", "自定义Sheet名字"));
//导出数据列表
mv.addObject(NormalExcelConstants.DATA_LIST,pageList);
return mv;
}
自定义视图 | 用途 | 描述 |
---|---|---|
JeecgMapExcelView | 实体对象导出视图 | 例如:List<JeecgDemo> |
JeecgEntityExcelView | Map对象导出视图 | List<Map<String, String>> list |
JeecgTemplateExcelView | Excel模板导出视图 | - |
JeecgTemplateWordView | Word模板导出视图 | - |
8.Excel导入校验,过滤不符合规则的数据,追加错误信息到Excel,提供常用的校验规则,已经通用的校验接口
/**
* Email校验
*/
@Excel(name = "Email", width = 25)
@ExcelVerify(isEmail = true, notNull = true)
private String email;
/**
* 手机号校验
*/
@Excel(name = "Mobile", width = 20)
@ExcelVerify(isMobile = true, notNull = true)
private String mobile;
ExcelImportResult<ExcelVerifyEntity> result = ExcelImportUtil.importExcelVerify(new File(
"d:/tt.xls"), ExcelVerifyEntity.class, params);
for (int i = 0; i < result.getList().size(); i++) {
System.out.println(ReflectionToStringBuilder.toString(result.getList().get(i)));
}
9.导入Map 设置导入参数,传入文件或者流,即可获得相应的list,自定义Key,需要实现IExcelDataHandler接口
ImportParams params = new ImportParams();
List<Map<String,Object>> list = ExcelImportUtil.importExcel(new File(
"d:/tt.xls"), Map.class, params);
10.字典用法 在实体属性注解excel中添加dicCode="",此处dicCode即为jeecg系统中数据字典的Code
@Excel(name="性别",width=15,dicCode="sex")
private java.lang.String sex;
11.字典表用法 此处dictTable为数据库表名,dicCode为关联字段名,dicText为excel中显示的内容对应的字段
@Excel(name="部门",dictTable="t_s_depart",dicCode="id",dicText="departname")
private java.lang.String depart;
12.Replace用法 若数据库中存储的是0/1 ,则导出/导入的excel单元格中显示的是女/男
@Excel(name="测试替换",width=15,replace={"男_1","女_0"})
private java.lang.String fdReplace;
13.高级字段转换用法
- exportConvert:在导出的时候需要替换值则配置该值为true,同时增加一个方法,方法名为原get方法名前加convert。
- importConvert:在导入的时候需要替换值则配置该值为true,同时增加一个方法,方法名为原set方法名前加convert。
@Excel(name="测试转换",width=15,exportConvert=true,importConvert=true)
private java.lang.String fdConvert;
/**
* 转换值示例: 在该字段值的后面加上元
* @return
*/
public String convertgetFdConvert(){
return this.fdConvert+"元";
}
/**
* 转换值示例: 替换掉excel单元格中的"元"
* @return
*/
public void convertsetFdConvert(String fdConvert){
this.fdConvert = fdConvert.replace("元","");
}
Excel 注解说明
@Excel
属性 | 类型 | 默认值 | 功能 |
---|---|---|---|
name | String | null | 列名,支持name_id |
needMerge | boolean | fasle | 是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row) |
orderNum | String | "0" | 列的排序,支持name_id |
replace | String[] | {} | 值得替换 导出是{a_id,b_id} 导入反过来 |
savePath | String | "upload" | 导入文件保存路径,如果是图片可以填写,默认是upload/className/ IconEntity这个类对应的就是upload/Icon/ |
type | int | 1 | 导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本 |
width | double | 10 | 列宽 |
height | double | 10 | 列高,后期打算统一使用@ExcelTarget的height,这个会被废弃,注意 |
isStatistics | boolean | fasle | 自动统计数据,在追加一行统计,把所有数据都和输出 这个处理会吞没异常,请注意这一点 |
isHyperlink | boolean | FALSE | 超链接,如果是需要实现接口返回对象 |
isImportField | boolean | TRUE | (作废参数)校验字段,看看这个字段是不是导入的Excel中有,如果没有说明是错误的Excel,读取失败,支持name_id |
exportFormat | String | "" | 导出的时间格式,以这个是否为空来判断是否需要格式化日期 |
importFormat | String | "" | 导入的时间格式,以这个是否为空来判断是否需要格式化日期 |
format | String | "" | 时间格式,相当于同时设置了exportFormat 和 importFormat |
databaseFormat | String | "yyyyMMddHHmmss" | 导出时间设置,如果字段是Date类型则不需要设置 数据库如果是string 类型,这个需要设置这个数据库格式,用以转换时间格式输出 |
numFormat | String | "" | 数字格式化,参数是Pattern,使用的对象是DecimalFormat ,请在数值类型的字段上使用 用法参考 ) |
imageType | int | 1 | 导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的 |
suffix | String | "" | 文字后缀,如% 90 变成90% |
isWrap | boolean | TRUE | 是否换行 即支持\n |
mergeRely | int[] | {} | 合并单元格依赖关系,比如第二列合并是基于第一列 则{0}就可以了 |
mergeVertical | boolean | fasle | 纵向合并内容相同的单元格 |
fixedIndex | int | -1 | 对应excel的列,忽略名字 |
isColumnHidden | boolean | FALSE | 导出隐藏列 |
@ExcelCollection
属性 | 类型 | 默认值 | 功能 |
---|---|---|---|
id | String | null | 定义ID |
name | String | null | 定义集合列名,支持nanm_id |
orderNum | int | 0 | 排序,支持name_id |
type | Class<?> | ArrayList.class | 导入时创建对象使用 |
单表导出实体注解源码
public class SysUser implements Serializable {
/**id*/
private String id;
/**登录账号 */
@Excel(name = "登录账号", width = 15)
private String username;
/**真实姓名*/
@Excel(name = "真实姓名", width = 15)
private String realname;
/**头像*/
@Excel(name = "头像", width = 15)
private String avatar;
/**生日*/
@Excel(name = "生日", width = 15, format = "yyyy-MM-dd")
private Date birthday;
/**性别(1:男 2:女)*/
@Excel(name = "性别", width = 15,dicCode="sex")
private Integer sex;
/**电子邮件*/
@Excel(name = "电子邮件", width = 15)
private String email;
/**电话*/
@Excel(name = "电话", width = 15)
private String phone;
/**状态(1:正常 2:冻结 )*/
@Excel(name = "状态", width = 15,replace={"正常_1","冻结_0"})
private Integer status;
一对多导出实体注解源码
@Data
public class JeecgOrderMainPage {
/**主键*/
private java.lang.String id;
/**订单号*/
@Excel(name="订单号",width=15)
private java.lang.String orderCode;
/**订单类型*/
private java.lang.String ctype;
/**订单日期*/
@Excel(name="订单日期",width=15,format = "yyyy-MM-dd")
private java.util.Date orderDate;
/**订单金额*/
@Excel(name="订单金额",width=15)
private java.lang.Double orderMoney;
/**订单备注*/
private java.lang.String content;
/**创建人*/
private java.lang.String createBy;
/**创建时间*/
private java.util.Date createTime;
/**修改人*/
private java.lang.String updateBy;
/**修改时间*/
private java.util.Date updateTime;
@ExcelCollection(name="客户")
private List<JeecgOrderCustomer> jeecgOrderCustomerList;
@ExcelCollection(name="机票")
private List<JeecgOrderTicket> jeecgOrderTicketList;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论