当前位置: 首页 > news >正文

找个网站2021能看到上海网站建设模板

找个网站2021能看到,上海网站建设模板,ps做网站头部的图,fsockopen wordpress背景 系统中经常要导出大量的数据#xff0c;格式基本上都是Excel#xff0c;然而每次导表都是对系统内存的一次挑战。在Java领域#xff0c;生成或解析Excel的框架比较有名的当属Apache的poi和jxl了。但使用它们#xff0c;会面临着严重的内存损耗问题。如果系统的并发量还… 背景 系统中经常要导出大量的数据格式基本上都是Excel然而每次导表都是对系统内存的一次挑战。在Java领域生成或解析Excel的框架比较有名的当属Apache的poi和jxl了。但使用它们会面临着严重的内存损耗问题。如果系统的并发量还不行一旦导出大量数据便会出现JVM频繁full gc甚至导致OOM。EasyExcel是阿里巴巴开源的一个Excel处理框架使用简单、节省内存。节省内存的原理也很简单在解析Excel时没有将文件数据全部加载到内存当中而是从磁盘文件中一行行读取。今天这篇文章就带大家来了解一下EasyExcel的使用个人使用后的感慨是太简单易用了。项目构建及依赖 首先创建一个Maven项目在pom文件中添加如下依赖dependencygroupIdcom.alibaba/groupIdartifactIdeasyexcel/artifactIdversion2.2.8/version /dependency当引入该依赖之后会发现在项目的依赖文件中同时多出了poi的类库。也就是说EasyExcel是基于poi来进行实现的间接地引入了如下依赖dependencygroupIdorg.apache.poi/groupIdartifactIdpoi/artifactIdversion3.17/version /dependency dependencygroupIdorg.apache.poi/groupIdartifactIdpoi-ooxml/artifactIdversion3.17/version /dependency所以当你的项目中已经引入了poi的依赖要考虑一下版本的兼容问题。创建实体类 EasyExcel易用性的体现之一就是可以通过在实体类中使用注解的形式来与Excel中的表头进行绑定。现在直接上实体类Data public class UserData {ExcelProperty(index  0, value  姓名)private String username;ExcelProperty(index  1, value  年龄)private int age;DateTimeFormat(yyyy-MM-dd)ExcelProperty(index  2, value  生日)private Date birthday; }在上面的实体类中Data为Lombok的注解当然你可以自行生成getter/setter方法其他的注解均为EasyExcel提供的ExcelProperty用于设置Excel表头其中index用户表头的编号从0开始value为表头对应的内容。DateTimeFormat用于日期的格式化。完成上述功能准备工作之后我们先来生成一个Excel。生成Excel 下面直接展示生成Excel的示例代码public class EasyExcelDemo {public static void main(String[] args) {// 实现excel写操作//1.设置写入文件夹地址和excel文件名称String fileName  /Users/zzs/temp/excel/write.xlsx;//调用easyExcel里面的方法实现写操作//2个参数第一个参数是文件名称第二个参数是实体类EasyExcel.write(fileName, UserData.class).sheet(学生信息表).doWrite(getData());}//创建方法返回list集合public static ListUserData getData() {ListUserData list  new ArrayList();UserData userData1  new UserData();userData1.setUsername(张三);userData1.setAge(22);userData1.setBirthday(formatDate(2000-10-11));list.add(userData1);UserData userData2  new UserData();userData2.setUsername(李四);userData2.setAge(23);userData2.setBirthday(formatDate(1999-5-3));list.add(userData2);return list;}public static Date formatDate(String birthday) {SimpleDateFormat sdf  new SimpleDateFormat(yyy-MM-dd);try {return sdf.parse(birthday);} catch (ParseException e) {e.printStackTrace();}return null;} }除了准备数据的代码核心代码只有main方法中调用的EasyExcel.write方法就是如此的简单。EasyExcel的write方法会根据传入的数据和实体类UserData进行绑定生成Excel文件。我们来看一下Excel的效果write-excel生成效果还不错而且使用起来是不是非常简单解析Excel 再来看看解析Excel的操作直接用上面生成的Excel文件。首先创建一个监听器ExcelListener集成EasyExcel提供AnalysisEventListener类public class ExcelListener extends AnalysisEventListenerUserData {/*** 一行一行的读取excel内容*/Overridepublic void invoke(UserData data, AnalysisContext analysisContext) {System.out.println(****  data);}/*** 读取表头内容*/Overridepublic void invokeHeadMap(MapInteger, String headMap, AnalysisContext context) {System.out.println(表头  headMap);}/*** 读取完成操作*/Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println(读取Excel完毕);} }在该监听器中通过重写AnalysisEventListener的方法来获得解析的数据、表头信息以及解析完毕之后执行的操作信息。同样写Excel一样通过EasyExcel类的静态方法来执行读操作public class EasyExcelReadDemo {public static void main(String[] args) {// 实现excel写操作//1.设置写入文件夹地址和excel文件名称String fileName  /Users/zzs/temp/excel/write.xlsx;//调用easyExcel里面的方法实现写操作//2个参数第一个参数是文件名称第二个参数是实体类EasyExcel.read(fileName, UserData.class, new ExcelListener()).sheet().doRead();} }执行上述方法打印信息如下表头{0姓名, 1年龄, 2生日} ****UserData(username张三, age22, birthdayWed Oct 11 00:00:00 CST 2000) ****UserData(username李四, age23, birthdayMon May 03 00:00:00 CST 1999) 读取Excel完毕最先是打印了表头信息这里也可以看到表头的排序是从0开始的。然后读取并打印了对应的Excel内容两条数据最后执行读取完的方法中的日志打印。看完了上面的整个操作解析Excel是不是变得非常简单了再也不为解析Excel犯愁了。其他相关特殊用法 上面提到的DateTimeFormat注解可转换日期格式还有其他类似功能的注解和自定义转换器。自定义转换器通过自定义转换器比如将1、0转换成男、女的实例import com.alibaba.excel.converters.Converter; import com.alibaba.excel.enums.CellDataTypeEnum; import com.alibaba.excel.metadata.CellData; import com.alibaba.excel.metadata.GlobalConfiguration; import com.alibaba.excel.metadata.property.ExcelContentProperty;public class SexConverter implements ConverterInteger {Overridepublic ClassInteger supportJavaTypeKey() {return Integer.class;}Overridepublic CellDataTypeEnum supportExcelTypeKey() {return CellDataTypeEnum.STRING;}Overridepublic Integer convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {return 男.equals(cellData.getStringValue()) ? 1 : 0;}Overridepublic CellDataString convertToExcelData(Integer integer, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {return new CellData(integer.equals(1) ? 男 : 女);} }性别属性注入SexConverter转换器ExcelProperty(value  性别, converter  SexConverter.class) private Integer sex;再次生成Excel性别字段内容便显示为男、女字样。保留两位小数比如体重需要保留两位小数可通过NumberFormat 注解实现ExcelProperty(value  体重KG) NumberFormat(0.##) // 会以字符串形式生成单元格要计算的列不推荐 private BigDecimal weight;另外一种方法是使用ContentStyle注解ContentStyle(dataFormat  2) private BigDecimal weight2;这样也能达到保留两位小数的效果。当然也可以使用实现Converter接口的方式实现同性别实现。排除指定Excel列在很多场景下Excel的列与实体类可能并不完全一致这时就需要排除一些实体类的字段。方式一类上加注解 ExcelIgnoreUnannotated过滤属性没有ExcelProperty注解的字段Data ToString AllArgsConstructor NoArgsConstructor  // 一定要有无参构造方法 ExcelIgnoreUnannotated public class UserData {..... }方式二指定字段加ExcelIgnore注解ExcelIgnore // 该字段不生成excel private String remark;方式三代码指定过滤字段通过excludeColumnFiledNames方法EasyExcel.write(fileName, UserData.class).sheet(学生信息表).excludeColumnFiledNames(Arrays.asList(remark)).doWrite(getData());这种方法的好处是同一Excel可以在调用方法时排除不同的数据列。小结 本文介绍了EasyExcel的使用整体而言操作简单、使用方便提供了不少注解方便与实体对象之间的关系绑定。而且官网也提供了相关的性能数据更多的API使用大家还可以继续探索。无论从性能或易用性上来说都值得你尝试。特别是临时写一个Excel的解析或生成的工具再也不用惆怅一行行的解析了赶紧收藏用起来吧。往期推荐实战10 种实现延迟任务的方法附代码最简单的6种防止数据重复提交的方法(干货)Spring Cloud OpenFeign 的 5 个优化小技巧
http://www.pierceye.com/news/805717/

相关文章:

  • 响应式模板网站泰安招聘信息最新招聘2021
  • 信阳市住房和城乡建设厅网站wordpress加载速度
  • 建设本地网站 配置iis百度h5在线制作免费
  • 网站托管服务器做外贸去哪些网站找老外
  • 一个空间可以做几个网站微信公众号 做不了微网站
  • 嘉兴seo外包公司黄骅seo
  • 做网站录入和查询需求网络推广公司口碑
  • 招远专业做网站公司wordpress获取qq昵称 头像
  • 河北网站建设业务服务称赞的项目管理平台
  • 用jsp做的网站首页如何建立一个网站来卖东西
  • 外贸型网站建设的基本流程宣传型网站建设
  • 济南手机网站开发公司贵阳网络推广公司
  • 网站开发需求模板找网络公司做推广费用
  • 网站推广工具推荐广州公关公司招聘
  • 网站搭建平台源码做健身网站开题报告
  • 大芬网站建设樟树网站开发
  • 北京通州个人网站建设哈尔滨建设工程招投标办公室
  • 怎样开个人网站如何做百度免费推广
  • 深圳成品网站超市佛山网站建设机构
  • 江苏 网站建设第一次做网站做后感
  • wordpress翻译公司网站没事网站建设项目规划书
  • 东莞建设年审网站我的世界充钱网站怎么做
  • 太原网站排名系统电子商务市场营销
  • 社区网站开发进度表2018年做网站还能
  • 论企业网站建设的必要性内网网站搭建设
  • 网站建设怎么翻译如何建立自己的网站
  • 2345网址大全热门seo推广排名稳定
  • 网站建设工作有底薪吗360优化大师
  • 门户网站微信服务号建设大型网站建设优化排名
  • 贵州省冶金建设有限公司网站wordpress end_lvl