当前位置: 首页 > 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.zqtcl.cn/news/805717/

相关文章:

  • 网站关键词优化软件效果wordpress如何网站顶部右侧广告
  • seo整站优化报价wordpress网站资源
  • 假冒彩票网站开发仿小刀娱乐wordpress主题
  • 东光做淘宝网站古色古香的网站模板
  • 创建网站得花多少钱福州最好的网站建设
  • mysql asp网站开发企业失信被执行人查询
  • 网站制作完工验收单软件开发模型有哪几种
  • saas建站平台源码wordpress 安装主题 无法创建目录
  • 兰州做高端网站做网站学什么专业
  • dedecms 图片网站模板wordpress省市联动
  • pw域名网站杭州建站官网建设
  • 河北省建设厅网站官网网站js时间代码
  • 网站开发实现编码深圳做网站专业
  • 网站建设电子合同h5网站开发多少钱
  • 邓州做网站投票网站做seo如何
  • 环保网站建设项目备案系统免费虚拟主机空间
  • 网站实现语言转换技术上该怎么做免费下载网页模板
  • 云南网站建设专业品牌网站建设电子商务
  • 保健食品东莞网站建设莱芜金点子信息港交友
  • 小程序视频网站开发网站开发项目预算表
  • 邢台手机网站建设价格iis 手机网站
  • 网站开发流程三大部分微信学校网站模板
  • 网站推荐正能量专业做网站多少钱
  • 网站界面设计总结淘客手机端网站建设
  • 天津网站建设zhy88宁波企业黄页公司黄页
  • 个人网站课程设计报告app免费制作软件中文版
  • 品牌建设网站规划盛唐网站建设
  • 商城网站系统建站平台上建设的网站可以融资吗
  • 怎么查网站空间wordpress快速入门
  • 长沙 网站运营德国服务器网站