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日

相关文章

  • 微信小程序实现电子签名

    当涉及到微信小程序实现电子签名时,你需要考虑的几个方面包括: 1.实现方式:使用canvas绘制签名区域并导出图片保存。2.显示签名:使用Image组件或canvas绘制签名。3.文档验证:签名本身并不具有验证功能,需要合适的过程和算法确保签名的安全性。 接下来,我将详细讲解实现电子签名的完整攻略。 步骤1:创建签名区域 要在小程序中实现签名,你需要在页面上…

    Java 2023年5月23日
    00
  • Java实现简单树结构

    下面我来详细讲解“Java实现简单树结构”的完整攻略。 什么是树结构? 树结构是一种经典的数据结构,它是由节点和边组成的层次结构。树结构中有一个顶点叫做根节点,其他节点则称作子节点。树结构具有以下特点: 根节点没有父节点; 每个节点都可能有若干个子节点; 除了根节点外,每个节点都有唯一一个父节点; 如果一个节点没有子节点,我们称其为叶节点。 如何实现树结构?…

    Java 2023年5月18日
    00
  • 极致体验ajax局部和整体刷新

    极致体验ajax局部和整体刷新攻略 什么是ajax局部和整体刷新 ajax是一种可以通过JavaScript向服务器发起异步请求并更新页面内容的技术。在传统web页面中,每一次用户操作请求都会导致整个页面重新加载,而使用ajax局部刷新技术可以仅刷新需要改变的部分,提高了用户体验。 整体刷新指的是重新加载整个页面,这种方式操作简单但是页面需要重新加载一遍,时…

    Java 2023年6月16日
    00
  • 一文吃透Spring集成MyBatis

    一文吃透Spring集成MyBatis的完整攻略 前言 Spring和MyBatis是JavaWeb开发中非常常用的两个框架,各自拥有自己的优势。而将它们集成使用则可以发挥它们的优势,更加便捷地进行开发。本文将分步骤介绍如何集成Spring和MyBatis。 环境准备 JDK 1.8 或以上版本 Maven 3.x 或以上版本 Spring 5.x 或以上版…

    Java 2023年5月31日
    00
  • Hibernate 基本操作、懒加载以及缓存

    前言 上一篇咱们介绍了 Hibernate 以及写了一个 Hibernate 的工具类,快速入门体验了一波 Hibernate 的使用,我们只需通过 Session 对象就能实现数据库的操作了。 现在,这篇介绍使用 Hibernate 进行基本的 CRUD、懒加载以及缓存的知识。 提示:如果你还没看上一篇,那么建议你看完上一篇再来看这篇。 上一篇:一文快速入…

    Java 2023年5月11日
    00
  • Struts2学习教程之自定义类型转换器的方法

    Struts2学习教程之自定义类型转换器的方法 什么是类型转换器? 在Struts2中,表单提交的参数是以字符串的形式传递给Action的,而我们在编写Action时经常会定义一些非字符串类型的属性(如int、Date等)。这时,Struts2就需要将这些字符串类型的参数转换成相应的目标类型,这个过程就是类型转换。 Struts2默认内置了一套类型转换器,可…

    Java 2023年5月20日
    00
  • Spring AOP统一功能处理示例代码

    下面是关于“Spring AOP统一功能处理示例代码”的完整攻略: 1. 概述 AOP(Aspect Oriented Programming)是面向切面编程的缩写。它是一种新的编程思想,广泛应用于业务逻辑与系统设计中,目的是提高系统的可维护性、可扩展性和可复用性。Spring AOP是Spring框架中的一个模块,基于动态代理技术,实现了程序的非侵入式管理…

    Java 2023年5月26日
    00
  • SpringBoot程序预装载数据的实现方法及实践

    下面我来详细讲解一下“SpringBoot程序预装载数据的实现方法及实践”的完整攻略。 什么是SpringBoot数据预装载? SpringBoot数据预装载是指在应用程序启动时,自动加载一些初始数据并将其存储在内存中,以便在应用程序运行时使用。 SpringBoot数据预装载的实现方法 SpringBoot数据预装载的实现方法有以下两种方式: 1. 通过实…

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