java使用poi导出Excel的方法

下面是关于"Java使用POI导出Excel的方法"的完整攻略。

简介

POI是Apache基金会的开源项目,可以用Java编写程序生成Microsoft Office文档格式,包括Word、Excel和PowerPoint。POI能够读取和写入Microsoft Office文件的各种属性和内容。在本教程中,我们将学习如何利用POI将数据导出到Excel文件。

环境准备

为了使用POI,我们需要在项目中添加相关依赖。在Maven项目中,我们可以在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.0.0</version>
</dependency>

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.0.0</version>
</dependency>

导出Excel

创建Workbook

首先,我们需要创建一个新的Workbook实例。Workbook是Excel文档的顶层容器,它可以包含多个Sheet。

Workbook workbook = new XSSFWorkbook();

创建Sheet

接下来,我们在Workbook中创建Sheet。

Sheet sheet = workbook.createSheet("Sheet1");

创建Header

创建表头,可以使用Excel的第一行来显示表头。我们可以创建一个Row实例,然后使用Cell实例为每个单元格添加文本。

Row header = sheet.createRow(0);
Cell cell1 = header.createCell(0);
cell1.setCellValue("编号");
Cell cell2 = header.createCell(1);
cell2.setCellValue("姓名");

添加数据

我们可以循环读取一个数据源列表,并将数据逐一写入Sheet中的每一行。

int rowIndex = 1;
for (int i = 0; i< dataList.size(); i++) {
    Row row = sheet.createRow(rowIndex++);
    row.createCell(0).setCellValue(dataList.get(i).getId());
    row.createCell(1).setCellValue(dataList.get(i).getName());
}

写入到文件中

最后,我们可以将Workbook写入到文件中。

try (FileOutputStream outputStream = new FileOutputStream("sample.xlsx")) {
    workbook.write(outputStream);
}

示例1

假设我们有一个学生列表,每个学生有id和name两个属性。现在我们要将学生列表导出到Excel文件中。

public class Student {
    private int id;
    private String name;
    // getter和setter
}

public class ExportStudentList {

    public void export(List<Student> studentList) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        Row header = sheet.createRow(0);
        Cell cell1 = header.createCell(0);
        cell1.setCellValue("编号");
        Cell cell2 = header.createCell(1);
        cell2.setCellValue("姓名");

        int rowIndex = 1;
        for (int i = 0; i< studentList.size(); i++) {
            Row row = sheet.createRow(rowIndex++);
            row.createCell(0).setCellValue(studentList.get(i).getId());
            row.createCell(1).setCellValue(studentList.get(i).getName());
        }

        try (FileOutputStream outputStream = new FileOutputStream("studentList.xlsx")) {
            workbook.write(outputStream);
        }
    }
}

示例2

有时候我们需要在单元格中添加样式,比如对齐方式、字体样式等。我们可以通过CellStyle实例来实现。

public class ExportStudentListWithStyle {

    public void export(List<Student> studentList) throws IOException {
        Workbook workbook = new XSSFWorkbook();
        Sheet sheet = workbook.createSheet("Sheet1");

        Font headerFont = workbook.createFont();
        headerFont.setBold(true);
        headerFont.setFontHeightInPoints((short) 14);

        CellStyle headerStyle = workbook.createCellStyle();
        headerStyle.setFont(headerFont);
        headerStyle.setAlignment(HorizontalAlignment.CENTER);

        Row header = sheet.createRow(0);
        Cell cell1 = header.createCell(0);
        cell1.setCellValue("编号");
        cell1.setCellStyle(headerStyle);
        Cell cell2 = header.createCell(1);
        cell2.setCellValue("姓名");
        cell2.setCellStyle(headerStyle);

        int rowIndex = 1;
        CellStyle dataStyle = workbook.createCellStyle();
        dataStyle.setAlignment(HorizontalAlignment.LEFT);
        for (int i = 0; i< studentList.size(); i++) {
            Row row = sheet.createRow(rowIndex++);
            row.createCell(0).setCellValue(studentList.get(i).getId());
            row.getCell(0).setCellStyle(dataStyle);
            row.createCell(1).setCellValue(studentList.get(i).getName());
            row.getCell(1).setCellStyle(dataStyle);
        }

        try (FileOutputStream outputStream = new FileOutputStream("studentListWithStyle.xlsx")) {
            workbook.write(outputStream);
        }
    }
}

以上就是使用POI导出Excel的示例代码。通过这些代码,你可以了解到如何使用POI将数据导出到Excel中,并且在单元格中添加样式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java使用poi导出Excel的方法 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • SpringBoot整合Quartz方法详解

    下面我给您详细讲解“SpringBoot整合Quartz方法详解”的完整攻略。 一、简介 Quartz是一个任务调度框架,它能够让我们实现定时任务的调度,SpringBoot与Quartz的整合,可以让我们更加方便地实现定时任务的管理和调度。本篇文章将详细介绍SpringBoot如何整合Quartz框架。 二、准备工作 在开始整合之前,我们需要准备以下工作:…

    Java 2023年5月26日
    00
  • java.lang.String和java.util.NClob互相转换方式

    在Java中,Java.lang.String类和Java.util.NClob类都是字符串类。但是,NClob是用于处理CLOB(字符大对象)的类,而String类则是用于处理字符串的类。如果需要将它们互相转换,需要进行一些特殊的步骤和技巧。下面是将Java.lang.String和Java.util.NClob类互相转换的完整攻略。 将String转换为…

    Java 2023年5月27日
    00
  • Java实现批量向mysql写入数据的方法

    当需要向mysql中插入大批量数据时,通过Java程序向数据库逐一插入会比较慢,而批量插入可以提高插入效率。下面就讲解一下如何Java实现批量向mysql写入数据的方法。 1. 准备工作 在开始之前,需要先检查好已经安装好了Mysql的Java驱动,可以在官网下载或在maven中引入即可。 另外,在写程序之前,需要先创建一个mysql表,以下示例代码将插入数…

    Java 2023年5月20日
    00
  • Java实现多个数组间的排列组合

    Java实现多个数组间的排列组合,可以通过使用递归实现。具体步骤如下: 1.定义递归方法,其中参数包括原始数组列表、临时结果列表、深度(代表当前已经处理完的数组层数)、结果列表(存储最终结果) 2.当深度达到原始数组列表的大小时,将临时结果列表添加到结果列表中 3.遍历当前原始数组,逐个取出数组中的元素,添加到临时结果列表中 4.每取出一个数组元素,深度加1…

    Java 2023年5月26日
    00
  • java 面向对象面试集锦

    对于“java 面向对象面试集锦”的完整攻略,建议采取如下步骤: 1. 梳理面试题目 首先,需要将Java面向对象面试中常见的题目进行梳理和分类,例如: Java面向对象基础:类、对象、构造方法、封装、继承、多态等。 Java面向对象高级:抽象类、接口、泛型、反射、注解、Lambda表达式等。 在梳理题目的时候,不仅要考虑问题的难度和深度,还要关注面试官可能…

    Java 2023年5月26日
    00
  • 基于springboot搭建的web系统架构的方法步骤

    下面详细讲解基于Spring Boot搭建Web系统架构的步骤: 1. 准备工作 在开始构建基于Spring Boot的Web系统之前,需要完成一些准备工作。这些包括:* 安装Java JDK* 安装Eclipse或IntelliJ IDEA等IDE* 安装Maven或Gradle等构建工具 安装完成后,我们就可以开始构建Web系统了。 2. 创建Sprin…

    Java 2023年5月19日
    00
  • Spring boot 整合 Redisson实现分布式锁并验证功能

    下面我将为您讲解“Spring Boot整合Redisson实现分布式锁并验证功能”的完整攻略。 一、Redisson简介 Redisson是一个Java Redis客户端,提供了功能齐全的分布式Redis服务,例如RedLock(分布式锁)、RedQueue(分布式队列)、RedTopic(分布式发布/订阅)等。在很多开源框架中,Redisson也是非常受…

    Java 2023年5月20日
    00
  • Java中@DateTimeFormat和@JsonFormat注解介绍

    当在Java中处理时间或日期数据时,我们常需要使用特定的格式将其转换成字符串或反向解析。而在Spring框架中,我们可以使用@DateTimeFormat和@JsonFormat两个注解来精细地控制时间和日期的格式化。下面将详细介绍这两个注解的使用方法和示例。 @DateTimeFormat注解介绍 1. 作用 @DateTimeFormat注解可以用于解析…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部