poi

一文让你了解如何快速、优雅的实现导出Excel

半世苍凉 提交于 2021-02-19 20:51:12
前言: 春节假期刚刚过去,大家是不是已经开始了搬砖生活啦,嘻嘻 o(∩_∩)o ,可我还在休假中呢 ! 好啦,咱们言归正传,开始聊聊正文。做过后端管理系统的同学,大概率都会收到过实现 导出Excel 的功能需求,因为这个功能在后台管理系统中是个必备功能。 那大家是怎么实现这个功能的呢? 使用Apache提供POI组件实现; 使用现成的、简便的第三方工具库(避免重复造轮子) Hutool 工具库中的Excel工具类 EasyExcel 阿里开源的基于Java的简单、省内存的读写Excel工具库 接下来咱们来聊聊使用 Hutool、EasyExcel 工具库实现导出Excel。 使用第三方库实现导出Excel 业界有句话:不重复造轮子。 使用工具类可以减少日常繁琐的编码,减少重复的编码时间,提高开发效率。 作为程序员,应该多善于利用工具减少代码冗余,美化自己的代码。 使用 Hutool 工具库实现导出Excel: 1、首先添加依赖 在pom.xml中添加上依赖: <!--hutool 导出 Excel 工具组件--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.1.0</version> </dependency> <!--POI组件-->

poi导入excel表格数据到数据库的时候,对出生日期的校验

本秂侑毒 提交于 2021-02-18 06:00:13
出生日期格式为8位数字的字符串 如:yyyyMMdd 规则:yyyy大于1900并小于当前时间,月、日 按日期规则校验        // 解决读过来的字符串显示为科学计数法问题 BigDecimal bd = new BigDecimal(strValues[6]); // strValues[6]为第6列读取的数据 String s = bd.toPlainString(); // 设置出生日期格式 SimpleDateFormat sd = new SimpleDateFormat("yyyyMMdd" ); // 获取当前系统时间 Integer time = Integer.valueOf(sd.format( new Date())); // setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析 sd.setLenient( false ); try { // 转成指定的格式 sd.parse(bd.toPlainString()); } catch (ParseException e) { throw new BaseException("出生日期格式不正确" ); } if ((1900 > Integer.valueOf(s.substring(0,4))) || (Integer.valueOf

读取xls以及xlsx表格的方法

て烟熏妆下的殇ゞ 提交于 2021-02-18 03:14:28
在项目中,有时候会遇到处理文件的需求,比如上传表格保存数据到数据库,以表格的形式下载内容,或者读取表格的内容做其他用途。总之就是操作表格,那么有哪些方式呢?这里可以提供两种。 一、利用WorkBook读取xls格式的表格 用到的jar包的话,这里是Maven工程就直接加依赖: <dependency> <groupId>poi</groupId> <artifactId>poi</artifactId> <version>3.1-FINAL</version> </dependency> <dependency> <groupId>org.apache.poi.jxl</groupId> <artifactId>jxl</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>org.lucee</groupId> <artifactId>poi-ooxml</artifactId> <version>3.15.0</version> </dependency> 然后直接贴代码: // 业务逻辑 //根据不同日期获取不同表格文件 Date now=new Date(); Date date=DateUtils.addDays(now, -30); SimpleDateFormat

Apache POI 与 OOB-XXE 组合实战

感情迁移 提交于 2021-02-17 06:51:30
声明 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。 雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。 前言 在一次项目中偶然发现了一处excel上传功能,恰巧碰到Apache POI与OOB-XXE两种漏洞同时利用成功的情况,实属幸运,特别将这次渗透过程记录分享给大家,希望给大家启发,不足之处也请指教。 No.1 背景介绍 Apache POI Excel、Word、pdf上传功能在一些财务、办公、数据分析系统中较为常见,在其他一些需要批量导入数据的系统中也是较为常用的功能。开发人员也大多使用Apache POI 的java类库来解析文件,关于POI的XXE漏洞在目前公开的信息中,有下面的CVE ,CVE-2014-3529、CVE-2016-5000、CVE-2017-5644,其影响版本大多为3.15以前版本,具体信息大家可根据CVE进行查询。 OOB-XXE OOB-XXE(Out-of-band XML External Entity),全称带外XML外部实体,与很多其他漏洞一样XXE也分为带内和带外。带内XXE攻击更为常见

spring boot mybatis+ vue 使用POI实现从Excel中批量导入数据

穿精又带淫゛_ 提交于 2021-02-15 09:50:17
一、前端vue+element   1.前端使用element的upload组件来实现文件的上传           <el- upload style ="display: inline-flex;margin-right: 8px" :show -file-list="false" :before -upload="beforeUpload" :on -success="onSuccess" :on -error="onError" accept =".xls" :disabled ="importDataButtonDisabled" action ="/employee/basic/import"> <el-button :disabled="importDataButtonDisabled" type="success" size="small" :icon="importDataButtonIcon"> {{importDataButtonMsg}} </el-button> </el-upload>      show-file-list :是否显示已选择文件列表      before-upload :文件上传以前调用的钩子     on-error:文件上传失败后的钩子     on-success:文件上传成功后的钩子     accept:接受的文件类型   

POI导出

◇◆丶佛笑我妖孽 提交于 2021-02-12 09:36:15
一、pom.xml添加依赖 < dependency > < groupId > org.apache.poi </ groupId > < artifactId > poi </ artifactId > < version > 4.1.0 </ version > </ dependency > 二、导出 package com.example.testpoi.controller; import com.example.testpoi.entity.emp; import com.example.testpoi.service.DcService; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping;

POI导出之我的实践篇

给你一囗甜甜゛ 提交于 2021-02-12 09:19:03
做了不少Excel导出 终于弄能够灵活运用POI实现Excel导出了,下面是我的实践案例。可以根据下面代码进行整合: String[] titles = new String[]{"序号","档号","文号","责任者","题名","日期","密级","页数","备注"}; String[] titlesvar = new String[]{"order","dh","wh","zrz","tm","rq","mj","ys","bz"}; List<Map<String,String>> rows = new ArrayList<>(); StringBuffer querySql = new StringBuffer("SELECT ELEARCHIVEFILECODE,BT,ARCHIVEYEAR,DEOTORPROBLEM,BMQX_TEXT,MJ_TEXT,ISPUBLIC_TEXT,NGDW,FWH,CWRQ,GWYS,NGR,NGRQ,ZTC,PUBLICTYPE_TEXT,QZH,HAVEPAPERS,HAVEPAPERS_TEXT,DYFS FROM OA_ARCHIVES WHERE ROWSTATE = 1 "); if (StringUtil.isNotBlank(bmqx)){ querySql.append(" AND bmqx IN (" +

ACM-ICPC 2018 南京网络赛

余生长醉 提交于 2021-02-12 02:50:56
A 1 /* Huyyt */ 2 #include<bits/stdc++.h> 3 using namespace std; 4 typedef long long ll; 5 const int mod = 998244353 ; 6 const int maxn = 1e3 + 5 ; 7 int main() 8 { 9 int T; 10 cin >> T; 11 while (T-- ) 12 { 13 ll x; 14 scanf( " %lld " ,& x); 15 printf( " %lld\n " ,x- 1 ); 16 } 17 return 0 ; 18 } //A B #include<bits/stdc++.h> #define lc(x) (2*x) #define rc(x) (2*x+1) #define fi first #define se second using namespace std; typedef long long ll; const ll mod = 998244353 ; const int maxn = 1e5+ 5 ; const int maxm = 1e2+ 5 ; int n,m,k; vector < int > v[maxm]; int lit[maxn]; int near[maxm]; int

10w行级别数据的Excel导入优化记录

为君一笑 提交于 2021-02-09 20:06:34
作者:后青春期的Keats www.cnblogs.com/keatsCoder/p/13217561.html 需求说明 项目中有一个 Excel 导入的需求:缴费记录导入 由实施 / 用户 将别的系统的数据填入我们系统中的 Excel 模板,应用将文件内容读取、校对、转换之后产生欠费数据、票据、票据详情并存储到数据库中。 在我接手之前可能由于之前导入的数据量并不多没有对效率有过高的追求。但是到了 4.0 版本,我预估导入时Excel 行数会是 10w+ 级别,而往数据库插入的数据量是大于 3n 的,也就是说 10w 行的 Excel,则至少向数据库插入 30w 行数据。 因此优化原来的导入代码是势在必行的。我逐步分析和优化了导入的代码,使之在百秒内完成(最终性能瓶颈在数据库的处理速度上,测试服务器 4g 内存不仅放了数据库,还放了很多微服务应用。处理能力不太行)。具体的过程如下,每一步都有列出影响性能的问题和解决的办法。 导入 Excel 的需求在系统中还是很常见的,我的优化办法可能不是最优的,欢迎读者在评论区留言交流提供更优的思路 一些细节 数据导入: 导入使用的模板由系统提供,格式是 xlsx (支持 65535+行数据) ,用户按照表头在对应列写入相应的数据 数据校验: 数据校验有两种: 字段长度、字段正则表达式校验等,内存内校验不存在外部数据交互。对性能影响较小

空间分析工具:GIS

对着背影说爱祢 提交于 2021-02-05 07:45:38
1.数据空间 数据空间 是指用来表示空间实体的的位置、几何特征及其属性特征的数据。 位置: 经纬度、地址、相对位置; 几何特征: 点、线、面、形状; 属性特征: 面积、周长、人口、经济等属性。 POI数据、OSM地图数据、影像图数据 空间数据分析: 概念:空间数据分析是以空间数据为处理对象,以地理学、统计学原理为依托,从空间数据中获得有关地理对象的空间位置、空间分布、空间形态、空间演变等信息; 目的是通过空间数据的深加工和分析获取新的信息; 内容:空间查询、空间处理与计算、空间划分、空间统计...... 空间数据分析是基于空间数据进行空间信息挖掘和知识发现。 1.1 空间查询 空间定位查询: 根据定位查询图形与属性信息(北纬32度经过了哪些地方,以及这个地方的人口、经济等数据的情况) 空间关系查询: (点线面)相交、相离、包含关系(杨浦区与上海市的关系;南京市与上海市的关系) 区域查询: 查询区域内的图形与属性信息(上海市的图书馆数量、中国的城市数量) 条件查询: 根据条件表达查询图形与属性信息(查询长江流域人口大于50万的市或县是哪些) 1.2. 空间处理与计算 几何量算 :点的坐标、线的长度、方向、曲率;面的面积、周长; 形状量算: 长短轴之比、周长面积比(是圆的还是椭圆的,是长方形的还是正方形的); 距离量算 :直线距离、成本距离; 几何中心量算: 线的中点、线的三分点