用上myexcel,百万数据导出也不怕

简介: 用上myexcel,百万数据导出也不怕

myexcel是一款Java的Excel处理工具,主要用于读取、写出、转换Excel文件,支持Excel文件的多种格式和大数据处理。它是开源项目,代码托管在GitHub上。该工具有以下特点:

  1. 功能丰富:支持Excel文件的读取、写出、转换、导出PDF、HTML、Word、CSV等格式,支持大数据处理。
  2. 简单易用:采用链式调用,API简单,使用方便,便于快速构建Excel文件。
  3. 高效可靠:采用Apache POI作为Excel的底层实现,保证了高效性和可靠性。
  4. 安全性强:使用com.fasterxml.jackson作为json序列化/反序列化工具,可以有效防止XSS攻击。

依赖信息

Maven 仓库地址:

    https://mvnrepository.com/artifact/com.github.liaochong/myexcel 。

    Maven :

    <dependency>
        <groupId>com.github.liaochong</groupId>
        <artifactId>myexcel</artifactId>
        <version>4.3.0.RC5</version>
    </dependency>

    Gradle :

    implementation 'com.github.liaochong:myexcel:4.3.0.RC5'




    1. 读取 Excel 文件

    java复制代码

    // 创建 ExcelReadContext 对象
    ExcelReadContext context = ExcelReadContext.builder()
                                       .excelTypeEnum(ExcelTypeEnum.XLS)
                                       .file(new File("example.xls"))
                                       .sheetName("Sheet1")
                                       .build();
    // 读取 Excel 数据
    List<List<Object>> excelData = ExcelUtils.readExcel(context);

    2. 写入 Excel 文件

    java复制代码

    // 创建 ExcelWriteContext 对象
    ExcelWriteContext context = ExcelWriteContext.builder()
                                        .excelTypeEnum(ExcelTypeEnum.XLSX)
                                        .file(new File("example.xlsx"))
                                        .build();
    // 定义 Excel 头部
    List<List<String>> header = new ArrayList<>();
    header.add(Arrays.asList("姓名", "年龄", "性别"));
    // 定义 Excel 内容
    List<List<Object>> data = new ArrayList<>();
    data.add(Arrays.asList("Tom", 20, "男"));
    data.add(Arrays.asList("Lucy", 22, "女"));
    data.add(Arrays.asList("Mike", 25, "男"));
    // 写入 Excel 数据
    ExcelUtils.writeExcel(context, header, data);

    3. 操作 Excel 单元格

    java复制代码

    // 创建 ExcelReadContext 对象
    ExcelReadContext context = ExcelReadContext.builder()
                                        .excelTypeEnum(ExcelTypeEnum.XLSX)
                                        .file(new File("example.xlsx"))
                                        .sheetName("Sheet1")
                                        .build();
    // 读取指定单元格数据
    Object cellData = ExcelUtils.readCell(context, 1, 1);
    System.out.println(cellData);
    // 更新指定单元格数据
    ExcelUtils.writeCellValue(context, 1, 1, "new value");
    // 保存更新后的 Excel
    ExcelUtils.writeExcel(context, null, null);

    com.github.liaochong:myexcel 还提供了更多的 API,例如支持多 sheet 处理、数据格式转换、Excel 样式设置等功能。你可以查阅官方文档来了解更多信息。



    4.myexcel  设置颜色格式

    2023/7/10 上午11:45:48

    com.github.liaochong:myexcel是一个基于Apache POI封装的Java操作Excel文件工具类库,支持Excel文件的读取、修改、写入等操作。在该工具类库中,可以通过CellStyle类来设置Excel单元格的格式,包括颜色格式等。下面是一个设置单元格背景颜色的示例代码:

    // 创建工作簿和工作表
    Workbook workbook = new XSSFWorkbook();
    Sheet sheet = workbook.createSheet("Sheet1");
    // 创建样式对象
    CellStyle style = workbook.createCellStyle();
    // 设置背景颜色为红色
    style.setFillForegroundColor(IndexedColors.RED.getIndex());
    style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
    // 创建行和单元格,并设置单元格样式
    Row row = sheet.createRow(0);
    Cell cell = row.createCell(0);
    cell.setCellValue("This is a red cell!");
    cell.setCellStyle(style);
    // 保存文件
    FileOutputStream out = new FileOutputStream("test.xlsx");
    workbook.write(out);
    out.close();
    workbook.close();

    5.myexcel  100万数据导出


    myexcel使用流式API来导出大规模的数据,可以支持100万数据导出的需求。以下是一个使用myexcel实现100万数据导出的示例代码:

    java复制代码

    public class ExcelExportTest {
        public static void main(String[] args) {
            int rowCount = 1000000; // 导出数据量
            List<TestBean> dataList = new ArrayList<>(); // 准备数据
            for (int i = 0; i < rowCount; i++) {
                dataList.add(new TestBean("Name " + i, i, new Date()));
            }
            try (ExcelWriter writer = ExcelUtil.getWriterWithSheet()) {
                // 写入表头
                writer.addHeaderAlias("name", "姓名");
                writer.addHeaderAlias("age", "年龄");
                writer.addHeaderAlias("date", "时间");
                // 写入数据
                writer.write(dataList, true);
                // 输出Excel
                writer.flush(Files.newOutputStream(Paths.get("test.xlsx")));
            } catch (IOException ex) {
                ex.printStackTrace();
            }
        }
        @Data
        @AllArgsConstructor
        public static class TestBean {
            private String name;
            private int age;
            private Date date;
        }
    }

    该示例中,我们定义了一个包含姓名、年龄、时间三个字段的TestBean类,并准备了100万条数据。然后我们使用ExcelUtil工具类创建一个Excel导出器,设置表头别名后写入数据,最后通过文件输出流将数据写入Excel文件。

    需要注意的是,针对大规模的数据导出,我们可以采用分页、异步等方式提高导出性能,避免占用过多内存和时间。

    目录
    相关文章
    |
    安全 网络安全 API
    163邮箱IMAP服务器设置方法
    ```markdown 使用IMAP协议同步163邮箱:登录邮箱→设置→账户→IMAP/SMTP→开启服务→配置服务器(imap.163.com:993, SSL/TLS)→设置用户名和密码→保存并在邮件客户端添加账号。确保多设备邮件同步,定期更新设置。[≤240字符] ```
    springboot实现返回值国际化
    springboot实现返回值国际化
    springboot实现返回值国际化
    |
    人工智能 自然语言处理 前端开发
    从理论到实践:使用JAVA实现RAG、Agent、微调等六种常见大模型定制策略
    大语言模型(LLM)在过去几年中彻底改变了自然语言处理领域,展现了在理解和生成类人文本方面的卓越能力。然而,通用LLM的开箱即用性能并不总能满足特定的业务需求或领域要求。为了将LLM更好地应用于实际场景,开发出了多种LLM定制策略。本文将深入探讨RAG(Retrieval Augmented Generation)、Agent、微调(Fine-Tuning)等六种常见的大模型定制策略,并使用JAVA进行demo处理,以期为AI资深架构师提供实践指导。
    2074 73
    |
    安全 数据安全/隐私保护 数据中心
    Python并发编程大挑战:线程安全VS进程隔离,你的选择影响深远!
    【7月更文挑战第9天】Python并发:线程共享内存,高效但需处理线程安全(GIL限制并发),适合IO密集型;进程独立内存,安全但通信复杂,适合CPU密集型。使用`threading.Lock`保证线程安全,`multiprocessing.Queue`实现进程间通信。选择取决于任务性质和性能需求。
    420 1
    |
    SQL JavaScript 前端开发
    Vue实现动态数据透视表(交叉表)
    Vue实现动态数据透视表(交叉表)
    557 13
    |
    Java 测试技术 开发者
    springboot学习四:Spring Boot profile多环境配置、devtools热部署
    这篇文章主要介绍了如何在Spring Boot中进行多环境配置以及如何整合DevTools实现热部署,以提高开发效率。
    1206 2
    |
    资源调度 JavaScript Apache
    Vue2使用echarts树图(tree)
    这篇文章介绍了如何在Vue 3框架中集成echarts库来创建一个树状图(Tree Chart)组件,支持自定义数据和交互事件。
    1217 0
    Vue2使用echarts树图(tree)
    |
    存储 人工智能 C语言
    计算机组成原理(5)----指令系统(1)
    计算机组成原理(5)----指令系统
    1081 1
    |
    SQL 安全 前端开发
    Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
    Go语言Gin框架安全加固:全面解析SQL注入、XSS与CSRF的解决方案
    |
    人工智能 自然语言处理 搜索推荐
    阿里云推出企业级大模型RAG系统,几次点击即可连接PB级知识库
    阿里云推出企业级大模型RAG系统,几次点击即可连接PB级知识库
    2455 1