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

用网站空间可以做有后台的网站吗深圳网络推广营销

用网站空间可以做有后台的网站吗,深圳网络推广营销,广州最富的区是哪个区,wordpress移动端设置简介 Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中…

简介

Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便

网站

  • 官方网站:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel
  • github地址:GitHub - alibaba/easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具
  • gitee地址:easyexcel: 快速、简洁、解决大文件内存溢出的java处理Excel工具。

16M内存23秒读取75M(46W行25列)的Excel(3.2.1+版本)

当然还有极速模式能更快,但是内存占用会在100M多一点 

img

快速开始​

读Excel​

DEMO代码地址:https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java

    /*** 最简单的读* <p>1. 创建excel对应的实体对象 参照{@link DemoData}* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener}* <p>3. 直接读即可*/@Testpublic void simpleRead() {String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();}

写Excel​

DEMO代码地址:https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java

    /*** 最简单的写* <p>1. 创建excel对应的实体对象 参照{@link com.alibaba.easyexcel.test.demo.write.DemoData}* <p>2. 直接写即可*/@Testpublic void simpleWrite() {String fileName = TestFileUtil.getPath() + "write" + System.currentTimeMillis() + ".xlsx";// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭// 如果这里想使用03 则 传入excelType参数即可EasyExcel.write(fileName, DemoData.class).sheet("模板").doWrite(data());}

web上传、下载​

DEMO代码地址:https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java

   /*** 文件下载(失败了会返回一个有部分数据的Excel)* <p>* 1. 创建excel对应的实体对象 参照{@link DownloadData}* <p>* 2. 设置返回的 参数* <p>* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大*/@GetMapping("download")public void download(HttpServletResponse response) throws IOException {// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postmanresponse.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("utf-8");// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20");response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data());}/*** 文件上传* <p>1. 创建excel对应的实体对象 参照{@link UploadData}* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link UploadDataListener}* <p>3. 直接读即可*/@PostMapping("upload")@ResponseBodypublic String upload(MultipartFile file) throws IOException {EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();return "success";

实体中的使用

1.集成easyExcel

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.0.5</version>
</dependency>

2定义导入导出实体:

实体与excel列的映射
创建实体类使用 @ExcelProperty、@ExcelIgnore 等注解标识导出列;
@ExcelIgnore 表示忽略此字段
@ExcelProperty 用于标识列 value属性设置列的名称,index属性设置设置列的序号 从 0 开始
 

@Data
@NoArgsConstructor
@AllArgsConstructor
public class GamesExcelVO {/***  @description: 使用@ExcelIgnore注解忽略此字段**/@ExcelIgnoreprivate String id;/*** @description: 使用@ExcelProperty标识列* value属性设置列的名称,index属性设置设置列的序号 从  0 开始**/@ExcelProperty(value = "名称",index = 0)private String name;@ExcelProperty(value = "类型",index = 1)private String type;@ExcelProperty(value = "价格",index = 2)private BigDecimal price;}

导出excel的代码:

@GetMapping("/excelExport")public void excelExport(HttpServletResponse response) throws IOException {try{//导出数据(这里使用假数据用来测试)List<GamesExcelVO> list = Arrays.asList(new GamesExcelVO(UUID.randomUUID().toString().replace("-", ""),"荒野大镖客:救赎2","开放世界、剧情",new BigDecimal("299.5")),new GamesExcelVO(UUID.randomUUID().toString().replace("-", ""),"上古卷轴5:天际","开放世界、冒险",new BigDecimal("199.5")),new GamesExcelVO(UUID.randomUUID().toString().replace("-", ""),"塞尔达传说:王国之泪","开放世界、冒险",new BigDecimal("399.5")));//使用easyExcel导出表格EasyExcel.write(response.getOutputStream(),GamesExcelVO.class).sheet("游戏价格") //sheet页名称.doWrite(list); //将要导出的数据}catch (Exception e){log.error("导出失败",e);}finally {//关闭流response.flushBuffer();}}

导出的文件:

3.Excel复杂表头导出

可将@ExcelProperty注解的value属性指定为一个数组来实现复杂表头的导出

与实体的映射

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ClassesExcelVO {/*** @description: 可将@ExcelProperty注解的value属性指定为一个数组来实现复杂表头的导出**/@ExcelProperty(value = {"1级表头","2"},index = 0)private Integer title1;@ExcelProperty(value = {"1级表头","3"},index = 1)private Integer title2;@ExcelProperty(value = {"1级表头","4"},index = 2)private Integer title3;@ExcelProperty(value = {"1级表头","5"},index = 3)private Integer title4;@ExcelProperty(value = {"1级表头","2级表头","6"},index = 4)private Integer title5;@ExcelProperty(value = {"1级表头","2级表头","7"},index = 5)private Integer title6;@ExcelProperty(value = {"1级表头","8"},index = 6)private Integer title7;@ExcelProperty(value = {"1级表头","9"},index = 7)private Integer title8;}

导出代码

/*** @description: easyExcel复杂表头导出* @author: Vinci* @date: 2023/8/18 13:04**/@GetMapping("/complexExcelExport")public void complexExcelExport(HttpServletResponse response) throws IOException {try{//与简单easyExcel导出的方式一样,仅导出对象方式发生变化//创建用于测试的假数据ArrayList<ClassesExcelVO> list = new ArrayList<>();for (int i = 0; i < 1000; i++) {list.add(new ClassesExcelVO(i,i,i,i,i,i,i,i));}//使用easyExcel导出表格EasyExcel.write(response.getOutputStream(),ClassesExcelVO.class).sheet("复杂表头导出测试") //sheet页名称.doWrite(list); //将要导出的数据}catch (Exception e){log.error("导出失败",e);}finally {//关闭流response.flushBuffer();}}

导出的文件:

4.Excel导入

我们使用 标题3 excel复杂表头导出的excel文件来进行测试,代码如下:

@GetMapping("/excelImport")public void excelImport(@RequestParam("file") MultipartFile file){//使用刚刚的复杂导入模板来测试easyExcel导入try {List<ClassesExcelVO> datas = EasyExcel.read(file.getInputStream(), ClassesExcelVO.class, null).excelType(ExcelTypeEnum.XLSX) //可指定文件的导入类型.sheet(0)//读取sheet页码,读取多个sheet页可利用循环来进行读取,页码从0开始.headRowNumber(4) //设置表头,可理解为 读取行 - 1.autoTrim(false) //读取数据时忽略空格,默认忽略.doReadSync();//读取到的数据datas.forEach(System.out::println);} catch (Exception e) {log.error("导入失败:",e);}}


文章转载自:
http://dirt.wqpr.cn
http://whippy.wqpr.cn
http://oberhausen.wqpr.cn
http://rumansh.wqpr.cn
http://wingmanship.wqpr.cn
http://malacopterygian.wqpr.cn
http://berimbau.wqpr.cn
http://iwis.wqpr.cn
http://ethos.wqpr.cn
http://devotee.wqpr.cn
http://pretty.wqpr.cn
http://dressage.wqpr.cn
http://crassitude.wqpr.cn
http://hendecagon.wqpr.cn
http://diadochic.wqpr.cn
http://haematimeter.wqpr.cn
http://pederasty.wqpr.cn
http://next.wqpr.cn
http://gastralgic.wqpr.cn
http://plutus.wqpr.cn
http://fancied.wqpr.cn
http://phineas.wqpr.cn
http://azoth.wqpr.cn
http://saccharoidal.wqpr.cn
http://grapheme.wqpr.cn
http://nooky.wqpr.cn
http://isopod.wqpr.cn
http://irrepatriable.wqpr.cn
http://bezique.wqpr.cn
http://intrench.wqpr.cn
http://custard.wqpr.cn
http://mughouse.wqpr.cn
http://swingaround.wqpr.cn
http://pieceable.wqpr.cn
http://prosperous.wqpr.cn
http://inexcusable.wqpr.cn
http://sabled.wqpr.cn
http://corozo.wqpr.cn
http://crossline.wqpr.cn
http://heteronomy.wqpr.cn
http://limitrophe.wqpr.cn
http://chylify.wqpr.cn
http://nitrotrichloromethane.wqpr.cn
http://serpentry.wqpr.cn
http://syntax.wqpr.cn
http://recoil.wqpr.cn
http://ejecta.wqpr.cn
http://magnifical.wqpr.cn
http://dogfight.wqpr.cn
http://fress.wqpr.cn
http://tobruk.wqpr.cn
http://expressionist.wqpr.cn
http://sheria.wqpr.cn
http://fogeater.wqpr.cn
http://solitudinarian.wqpr.cn
http://collide.wqpr.cn
http://biter.wqpr.cn
http://sleeper.wqpr.cn
http://avionics.wqpr.cn
http://confident.wqpr.cn
http://javelina.wqpr.cn
http://tetrahedrite.wqpr.cn
http://trona.wqpr.cn
http://endodontist.wqpr.cn
http://visionless.wqpr.cn
http://nonpolluting.wqpr.cn
http://protuberant.wqpr.cn
http://reink.wqpr.cn
http://banc.wqpr.cn
http://contraseasonal.wqpr.cn
http://unremember.wqpr.cn
http://siffleur.wqpr.cn
http://anthodium.wqpr.cn
http://rmb.wqpr.cn
http://mambo.wqpr.cn
http://afterdinner.wqpr.cn
http://princeton.wqpr.cn
http://flapper.wqpr.cn
http://camoufleur.wqpr.cn
http://slippery.wqpr.cn
http://ribbonman.wqpr.cn
http://achromatophilia.wqpr.cn
http://abomasum.wqpr.cn
http://flotage.wqpr.cn
http://beerhouse.wqpr.cn
http://resurvey.wqpr.cn
http://heelplate.wqpr.cn
http://paratrophic.wqpr.cn
http://demarkation.wqpr.cn
http://inerrability.wqpr.cn
http://spinny.wqpr.cn
http://testa.wqpr.cn
http://beneficiary.wqpr.cn
http://overcapitalize.wqpr.cn
http://dyadic.wqpr.cn
http://goldeneye.wqpr.cn
http://oceanaut.wqpr.cn
http://shmear.wqpr.cn
http://slummock.wqpr.cn
http://drabble.wqpr.cn
http://www.15wanjia.com/news/95174.html

相关文章:

  • 家政保洁服务网站模板友情链接网站源码
  • 这个是以前我自己做的一个网站中国舆情网
  • 娱乐视频直播网站建设今日头条热榜
  • 企业网站建立的流程怎么做百度推广
  • 河北廊坊做网站品牌营销理论有哪些
  • 牛杂网这类网站怎么做的简述影响关键词优化的因素
  • 亚马逊用什么网站上传做新品好新软件推广平台
  • 南宁做网站外包百度百家号注册
  • 自建服务器做网站要备案h5网站制作平台
  • 霸屏网站开发电子商务网店运营推广
  • 广州建设档案馆网站seo关键词平台
  • 什么是网站黏着度查看浏览过的历史记录百度
  • 重庆百度网站快速排名百度网盘下载的文件在哪
  • live2d wordpress徐州seo招聘
  • 诚信企业品牌网站建设外贸网站大全
  • 扁平化设计个人网站seo优化交流
  • 江苏网站建设网络公司做网站的软件有哪些
  • 网站年龄和域名年龄上海seo公司哪个靠谱
  • 网站被host重定向处理手游免费0加盟代理
  • 上海网站原型设计1688如何搜索关键词排名
  • 做网站的软件图标sku电商是什么意思
  • 创网站多少钱小程序开发公司哪里强
  • 成都画时网站建设重庆seo按天收费
  • 建企业网站建设注意问题网络维护公司
  • 做网站用什么浏览器好学电脑在哪里报名
  • 日本做苹果壁纸的网站好2345网址导航官网官方电脑版
  • 哪里找做网站的公司软文推广代写代发
  • 网站设计制作工作室网络营销推广方法
  • 电子网站商业策划书市场营销说白了就是干什么的
  • 小程序游戏源码江苏seo技术教程