MyExcel 2.4.0 发布,支持.xls文件SAX方式读取

栏目: 软件资讯 · 发布时间: 5年前

内容简介:MyExcel 是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。 本次更新如下: SaxExcelReader原接口支持.xls文件的读取,无需指定文件类型,自动识别; 删除DefaultExcelReader并行流读取接口; Excel导入...

MyExcel 是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。

本次更新如下:

  1. SaxExcelReader原接口支持.xls文件的读取,无需指定文件类型,自动识别;
  2. 删除DefaultExcelReader并行流读取接口;
  3. Excel导入Date类型数据转化增加SimpleDateFormat缓存,避免海量数据读取时的对象重复创建,性能提升;
  4. 修复ThymeleafExcelBuilder关于FileSystemNotFoundException问题;
  5. 修复Excel导入未及时关闭相关资源导致的可能源文件不可用问题;

更多请移步:https://github.com/liaochong/myexcel/wik

导出

/**
* 方式一:普通方式导出
*/
@GetMapping("/default/excel/example")
public void defaultBuild(HttpServletResponse response) throws Exception {
    List<ArtCrowd> dataList = this.getDataList();
    Workbook workbook = DefaultExcelBuilder.of(ArtCrowd.class)
            .build(dataList);
    AttachmentExportUtil.export(workbook, "艺术生信息", response);
    // 加密导出 AttachmentExportUtil.encryptExport(workbook, "艺术生信息", response,"123456");
}

/**
* 方式二:生产者消费者模式导出,分批获取数据,分批写入Excel,真正意义上实现海量数据导出
*/
@GetMapping("/default/excel/stream/example")
public void streamBuild(HttpServletResponse response) throws Exception {
    // 显式标明开始构建
    DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder.of(ArtCrowd.class)
            .threadPool(Executors.newFixedThreadPool(10))
            .start();
    // 多线程异步获取数据并追加至excel,join等待线程执行完成
    List<CompletableFuture> futures = new ArrayList<>();
    for (int i = 0; i < 100; i++) {
        CompletableFuture future = CompletableFuture.runAsync(() -> {
            List<ArtCrowd> dataList = this.getDataList();
            // 数据追加
            defaultExcelBuilder.append(dataList);
        });
        futures.add(future);
    }
    futures.forEach(CompletableFuture::join);
    // 最终构建
    Workbook workbook = defaultExcelBuilder.build();
    AttachmentExportUtil.export(workbook, "艺术生信息", response);
}

导入:

URL htmlToExcelEampleURL = this.getClass().getResource("/templates/read_example.xlsx");
Path path = Paths.get(htmlToExcelEampleURL.toURI());

// 方式一:全部读取后处理
List<ArtCrowd> result = DefaultExcelReader.of(ArtCrowd.class)
        .sheet(0) // 0代表第一个,如果为0,可省略该操作
        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
        .beanFilter(ArtCrowd::isDance) // bean过滤
        .read(path.toFile());// 可接收inputStream

// 方式二:读取一行处理一行,可自行决定终止条件
DefaultExcelReader.of(ArtCrowd.class)
        .sheet(0) // 0代表第一个,如果为0,可省略该操作
        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
        .beanFilter(ArtCrowd::isDance) // bean过滤
        .readThen(path.toFile() ,artCrowd -> System.out.println(artCrowd.getName));// 可接收inputStream

// 方式三:全部读取后处理,SAX模式,避免OOM,建议大量数据使用
List<ArtCrowd> result = SaxExcelReader.of(ArtCrowd.class)
        .sheet(0) // 0代表第一个,如果为0,可省略该操作
        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
        .beanFilter(ArtCrowd::isDance) // bean过滤
        .read(path.toFile());// 可接收inputStream

// 方式四:读取一行处理一行,可自行决定终止条件,SAX模式,避免OOM,建议大量数据使用
SaxExcelReader.of(ArtCrowd.class)
        .sheet(0) // 0代表第一个,如果为0,可省略该操作
        .rowFilter(row -> row.getRowNum() > 0) // 如无需过滤,可省略该操作,0代表第一行
        .beanFilter(ArtCrowd::isDance) // bean过滤
        .readThen(path.toFile() ,artCrowd -> System.out.println(artCrowd.getName));// 可接收inputStream

public class ArtCrowd {
    // index代表列索引,从0开始
    @ExcelColumn(index = 0)
    private String name;

    @ExcelColumn(index = 1)
    private String age;

    @ExcelColumn(index = 2,dateFormatPattern="yyyy-MM-dd")
    private Date birthday;
}

效果:

MyExcel 2.4.0 发布,支持.xls文件SAX方式读取

 

MyExcel 2.4.0 发布,支持.xls文件SAX方式读取


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

BLOG启示录

BLOG启示录

胡嘉玺 / 清华大学出版社 / 2010-7 / 48.00元

《BLOG启示录:WordPress博客建设与经营》分三大部分,共17章。第一部分(1~5章)主要是介绍Web 2.0、博客,以及LAMP的安装和架设,更有完整的主机、域名、DNS、WordPress安装、申请、交费等步骤,读者即使对计算机、主机、网络、域名等知识完全不懂,也可以依照《BLOG启示录:WordPress博客建设与经营》的步骤来落实整个WordPress基础建设的架构及安装。 ......一起来看看 《BLOG启示录》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具