做欧美网站餐饮品牌设计方案

pingmian/2026/1/21 18:43:57/文章来源:
做欧美网站,餐饮品牌设计方案,私有云可以建设网站,wordpress特效主题实战研究一下 EasyExcel 如何从指定文件位置进行读取数据 EasyExcel的使用背景EasyExcel的时候痛点EasyExcel对比其他框架 EasyExcel的编程模式EasyExcel读取的指定位置导入数据的流程表头校验invokeHeadMap()方法 数据处理invoke()方法 执行中断hasNextdoAfterAllAnalysed()方… 实战研究一下 EasyExcel 如何从指定文件位置进行读取数据 EasyExcel的使用背景EasyExcel的时候痛点EasyExcel对比其他框架 EasyExcel的编程模式EasyExcel读取的指定位置导入数据的流程表头校验invokeHeadMap()方法 数据处理invoke()方法 执行中断hasNextdoAfterAllAnalysed()方法 数据完成doAfterAllAnalysed()方法 总结一下 EasyExcel的使用背景 工作中总会遇到对Excel读写功能之前接触过EasyExcel后续我们基本上用它代替了传统的POI和JXL、甚至还有一个EasyPOI技术。 EasyExcel的时候痛点 使用的EasyExcel时候一般场景下表头比较传统也不复杂但是这次呢表头稍微有点复杂读取数据要从指定的位置开始要从指定位置开始读取EasyExcel所以呢在不断的摸索之后找到了合适的解决方法。 EasyExcel对比其他框架 平常用poi读取excel数据量少加上EasyExcel读取Excel有点复杂所以一直也没在项目中使用EasyExcel直到有一回要读取的数据量太大使用poi读取Excel在创建Workbook - WorkbookFactory.create(inputStream) 时就异常了分配很多内存也不好使所以放弃使用poi转使用EasyExcel。 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题但POI还是有一些缺陷比如07版Excel解压缩以及解压后存储都是在内存中完成的内存消耗依然很大。easyexcel重写了poi对07版Excel的解析能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M并且再大的excel不会出现内存溢出03版依赖POI的sax模式。 在上层做了模型转换的封装让使用者更加简单方便 --EasyExcel 使用EasyExcel读取Excel时一直在想如何简化读取方式不用读取每个Excel都创建一个XXDataListene监听器类刚开始想把DataListener加上泛型共用一个DataListener,但是还涉及到如何传递Dao和每个Dao如何保存数据而且保存数据前可能还需要对数据进行不同的处理。 EasyExcel的编程模式 EasyExcel开源挺久了但使用上感觉有点让人望而生怯刚开始看官方文档上读取Excel挺简单的只需要一行代码继续细看的话还需要创建一个回调监听器有点复杂呀每个Excel都需要创建一个单独的回调监听器类。 EasyExcel读取的指定位置 要开始读取数据第8行才是真正的数据直接上代码headRowNumber()不写默认是1即就是从第二行开始读数据。 /*** 读取文件信息数据* param filePath* param headNum*/public ContactInfoExcelDataListener read(String filePath , int headNum){EasyExcel.read(filePath, this).head(ContactInfoExcelEntity.class).autoCloseStream(true).autoTrim(true).ignoreEmptyRow(true).sheet()// 这里可以设置1因为头就是一行。如果多行头可以设置其他值。不传入也可以因为默认会根据DemoData 来解析他没有指定头也就是默认1行.headRowNumber(Math.max(headNum,NumberUtils.BYTE_ZERO)).doRead();return this;}/*** 读取文件信息数据* param filePath*/public ContactInfoExcelDataListener read(String filePath){EasyExcel.read(filePath, this).head(ContactInfoExcelEntity.class).autoCloseStream(true).autoTrim(true).ignoreEmptyRow(true).sheet()// 这里可以设置1因为头就是一行。如果多行头可以设置其他值。不传入也可以因为默认会根据DemoData 来解析他没有指定头也就是默认1行.doRead();return this;}/*** 读取文件信息数据* param inputStream* param headNum*/public ContactInfoExcelDataListener read(InputStream inputStream, int headNum){EasyExcel.read(inputStream, this).head(ContactInfoExcelEntity.class).autoCloseStream(true).autoTrim(true).ignoreEmptyRow(true).sheet()// 这里可以设置1因为头就是一行。如果多行头可以设置其他值。不传入也可以因为默认会根据DemoData 来解析他没有指定头也就是默认1行.headRowNumber(Math.max(headNum,NumberUtils.BYTE_ZERO)).doRead();return this;}导入数据的流程 基本都会走到这里全部放权交接给invoke方法并且巧用作为我们锁初始化操作的控制赋值切记如果headNum 0 此方法很有可能不会触发慎用 表头校验 目前只是实现了相关的单节点同步锁如果未来扩展了相关的分布式节点需要采用分布式锁机制进行控制锁范围需要进行控制 invokeHeadMap()方法 /*** 调用头部* param map* param analysisContext*/Overridepublic void invokeHead(MapInteger, CellData map, AnalysisContext analysisContext) {log.info(【start read the excel head data】:{},map);// 判断标记头是否存在try {int titleRows map.size();// 头部的中断处理机制failureDataCount preValidate?orginalHead.size() ! titleRows?NumberUtils.INTEGER_ONE:NumberUtils.BYTE_ZERO:NumberUtils.BYTE_ZERO;// 进行置位if(preValidate (failureDataCount.intValue() NumberUtils.INTEGER_ONE)){causeByHeadFormatAbort Boolean.TRUE;}if(!isMockFlag) {// TODO 基本不会走到这里一般我们如果需要可以使用此方法作为初始化资源使用的目的//Preconditions.checkNotNull(clueLogic,not support clueLogic is inject this class subject!);if (Objects.isNull(clueLogic)) {clueLogic SpringUtils.getBean(ClueLogic.class);}customerImportVO new CustomerImportVO();// 此部分主要是为了减少不必要的内存空间的申请tempDataList Lists.newArrayListWithExpectedSize(batchSizeUnit);} // syncLockController.lock();} catch (Exception e) {log.error(invoke the analysis the title head info data is failure!,e);throw new UnsupportedOperationException(invoke the analysis the title head info data is failure!,e);}log.info(【finished read the excel head data】);}数据处理 invoke()方法 一条一条数据解析 invoke()方法 方法里面是我业务逻辑数据校验。invoke 就是每行具体的数据值 /*** 调用操作处理控制机制* param excelEntity* param context*/Overridepublic void invoke(ContactInfoExcelEntity excelEntity, AnalysisContext context) {log.info(----【start read the excel main data:{}】----,excelEntity);if(batchSizeUnit tempDataList.size()){CustomerImportVO customerImportVO clueLogic.startCallTaskProxy(contactInfoImportParam,tempDataList);// 合并计算结果-更新为最新的结果this.customerImportVO.merge(customerImportVO);tempDataList.clear();tempDataList Lists.newArrayListWithExpectedSize(batchSizeUnit);}else{tempDataList.add(excelEntity);}log.info(【finished read the excel main data】);}执行中断 hasNextdoAfterAllAnalysed()方法 /*** 是否拥有下一次执行* [param](https://my.oschina.net/u/2303379) context* [return](https://my.oschina.net/u/556800)*/[Override](https://my.oschina.net/u/1162528)public boolean hasNext(AnalysisContext context) {return causeByHeadFormatAbort?Boolean.FALSE:isSupportAbort? failureDataCount 0 :Boolean.TRUE;}数据完成 doAfterAllAnalysed()方法 所有数据解析完 doAfterAllAnalysed()方法里面写的有保存数据方法。 /*** 执行结束的回调机制* param analysisContext*/Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {log.info(【doAfterAllAnalysed the process】);try {CustomerImportVO customerImportVO clueLogic.startCallTaskProxy(contactInfoImportParam,tempDataList);this.customerImportVO.merge(customerImportVO);finisheDataResult Boolean.TRUE;}catch (Exception e){log.error(execute finially the flush data is failure);//TODO 收尾的数据信息如何做到一致性和完成补偿finisheDataResult Boolean.FALSE;} finally {tempDataList.clear(); // syncLockController.unlock();}}总结一下 快速读写EasyExcel 支持 Excel 2003 和 Excel 2007 格式并提供高效的读写性能。它使用了 NIO新输入/输出技术使得读写操作更加快速。简单易用EasyExcel 的 API 设计简洁明了易于使用。开发者只需编写少量代码即可完成 Excel 文件的读写操作。它还支持链式编程使代码更加简洁。支持自定义EasyExcel 提供了丰富的自定义选项允许开发者根据需要调整 Excel 文件的格式、样式等。它还支持自定义公式、条件格式等功能满足各种业务需求。灵活的配置EasyExcel 支持多种配置方式如属性配置、注解配置等。开发者可以根据项目需求选择合适的配置方式使得 Excel 文件的处理更加灵活。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/87091.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

西宁公司做网站wordpress修改样式

Learn about the optimization loop 了解优化循环 Optimizing Model Parameters 优化模型参数 现在我们有了模型和数据,是时候通过优化数据上的参数来训练、验证和测试我们的模型了。训练模型是一个迭代过程;在每次迭代中,模型都会对输出进…

成都全美网站建设网站制作难吗

F. Paper Grading 大佬题解 一般关于前缀的问题基本都是Trie树。 首先将所给字符串建立一棵Trie树,Trie能够解决一个字符串在一个字符串集合中出现的次数,而查询前缀次数只需要找到Trie树中所给字符末尾的位置,那么其子树中打标记的次数即前…

二级域名网站wordpress做社交网站吗

平面方程(Plane Equation) 原文链接:http://www.songho.ca/math/plane/plane.html翻译:罗朝辉 (http://www.cnblogs.com/kesalin/)本文遵循“署名-非商业用途-保持一致”创作公用协议平面方程平面上的一点以及垂直于该平面的法线唯一定义了 3D 空间的一个…

建设银行 杭州招聘网站品牌网站建设大概费用

数据入湖Hudi Apache Hudi(简称:Hudi)使得您能在hadoop兼容的存储之上存储大量数据,同时它还提供两种原语,使得除了经典的批处理之外,还可以在数据湖上进行流处理。这两种原语分别是: Update/Delete记录:H…

专门做淘宝代运营的网站xml wordpress

来自 | 逐梦erhttps://zhumenger.blog.csdn.net/article/details/106530281本文仅作技术交流,如有侵权,请联系后台删除。数据可视化非常重要,因为错误或不充分的数据表示方法可能会毁掉原本很出色的数据分析工作。matplotlib 库是专门用于开发…

黑龙江省生产建设兵团知青网站wordpress 邮件激活

echo offecho 当前盘符:%~d0echo 当前盘符和路径:%~dp0echo 当前批处理全路径:%~f0echo 当前盘符和路径的短文件名格式:%~sdp0echo 当前CMD默认目录:%cd%echo 目录中有空格也可以加入""避免找不到路径echo 当…

绘本馆网站建设wordpress 扫描工具

一、系统方案 本设计采用STC89C5单片机作为主控制器,从机采用DHT11传感器采集温湿度、按键设置报警阀值,液晶1602显示,蜂鸣器报警,无线NRF2401模块。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统…

校园网站开发需求文字seo 新旧网站 两个域名

阿里妹导读:一年多前,Java 界最近发生了一件大事,阿里开源 Spring Cloud Alibaba,并推出首个预览版。Spring Cloud 本身是一套微服务规范,并不是一个拿来即可用的框架,而 Spring Cloud Alibaba 的开源为开发…

微网站php源码公司网站的实例

这个话题我曾经写过文章,也在一些场合做过专题分享。今天换一种方式,你可以直接点击下面这个小程序,用十分钟左右的时间,听我再讲一讲吧。你需要在微信里面才能看到下面的小程序链接,并且可以直接点击你可以打开该文档…

织梦高清电影网站模板系统搭建流程

电脑犹如汽车,在使用过程中需要正确的方法,否则就会有win10系统potplayer经常弹出自动更新提示的情况出现,要处理win10系统potplayer经常弹出自动更新提示的问题,对于电脑专业人士来说并非难事;新手小白翻遍了整个网络…

杭州网站设计公司有哪些做公司 网站建设

vue页面使用html2canvas截图 vue使用vue-esign画布签名

建设厅网站沙场限期通知书建设部网站统计

Redis哨兵机制可以保证Redis服务的高可用性。它通过启动一个或多个哨兵进程,监控Redis主服务器是否宕机,如果宕机,哨兵进程会自动将一个从服务器(Slave)升级为主服务器(Master),并通…

奉新网站制作wordpress home index

摘要: 搭配ECS云服务器使用, ESSD可提供单盘高达100万IOPS的随机读写能力和低至0.1毫秒的单路时延,相比SSD云盘分别提升了50倍性能上限和降低80%读写时延,单台云服务器整体存储性能提升500%. 点此查看原文:http://cli…

虚拟货币网站建设沈阳工程信息招标网

我们很高兴地告诉大家,ONLYOFFICE 桌面编辑器现已上架麒麟软件商店。请阅读下文了解详情。 关于麒麟 麒麟是一款国产操作系统,主要是为了满足中国市场的需求和偏好而设计的。 它能够与各种硬件平台和软件应用程序的广泛兼容,因而受到认可。…

网站被做跳转怎么办购买域名之后怎么做网站

java运行中修改代码不能改变立刻应用到本次运行中转载于:https://www.cnblogs.com/Pusteblume/p/10211110.html

单职业传奇网站做图表的网站知乎

自从今年3月末AMD锐龙4000系列处理器正式登陆移动平台以来,目前已有多款机型上市,并涌现出了不少高热度、高性价比的机型。我们也体验测试了其中数款机型,总体上给用户的印象是是价格香、性能强。而今天牛叔要聊的这款机型,也是搭…

html5移动网站开发实例wordpress多个标签

JAVA入门级教学之(多态) 怎么理解多态:你本身就该喊你爹叫爹,你让你爹叫你爹就是强制认做爹 多态的使用: A a new D(); D类继承A类,父类型引用指向子类型对象 * 关于java语言汇总的多态语法机制&#x…

毕业设计 旅游网站建设二 网站建设的重要性

你是否曾读过一本让你欲罢不能的计算机书籍?它可能为你打开了新的技术世界大门,或者是帮助你解决了棘手的编程难题。 你可以从以下几个维度进行创作,也可以自由发挥。 此为内容创作模板,在发布之前请将不必要的内容删除 方向一…

五华建设银行网站个体户可以做网站么

这里写自定义目录标题 PL端 纯Verilog语言创建IP核实现点亮LED灯工使用设备 ZYNQ 7010,选择设备型号XC7Z010CLG400-1根据以下流程完成本次创建时钟频率50MHZ,周期T20ns,因此计数50_000_000次,1sLED灯闪烁一次 PL端 纯Verilog语言创…

鹰潭公司做网站啪啪男女禁做视频网站

文章目录 前言一、访客预约功能二、安全性保障三、智慧小区生活 前言 二维码地址门牌管理系统的出现不仅提升了小区的安全性,还为访客提供了更便捷的预约服务,让亲朋好友轻松进入小区。 一、访客预约功能 该系统提供了访客预约功能,业主可为…