Java打包导出Excel

在日常开发中,经常会遇到需要将数据导出到Excel表格的需求。Java提供了许多不同的库和工具,使得我们可以方便地生成和导出Excel文件。本文将介绍一种使用Apache POI库来实现Java打包导出Excel的方法,并提供代码示例。

Apache POI简介

Apache POI是一个开源的Java库,用于处理各种Microsoft Office格式的文件,包括Excel、Word和PowerPoint等。它提供了一组Java类和方法,可以轻松地读取、写入和操作Excel文件。在本文中,我们将重点介绍POI的Excel部分。

准备工作

在开始之前,我们需要确保已经安装了Java环境,并下载并引入Apache POI库。可以从POI的官方网站(

创建Excel文件

要创建一个新的Excel文件,我们需要创建一个Workbook对象,并在其中创建一个Sheet对象。以下是一个简单的示例,演示如何创建一个包含标题和数据的Excel文件:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class ExcelExporter {

    public static void main(String[] args) {
        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Sheet1");

            // 创建标题行
            Row headerRow = sheet.createRow(0);
            Cell headerCell1 = headerRow.createCell(0);
            headerCell1.setCellValue("姓名");
            Cell headerCell2 = headerRow.createCell(1);
            headerCell2.setCellValue("年龄");
            Cell headerCell3 = headerRow.createCell(2);
            headerCell3.setCellValue("性别");

            // 创建数据行
            Row dataRow = sheet.createRow(1);
            Cell dataCell1 = dataRow.createCell(0);
            dataCell1.setCellValue("张三");
            Cell dataCell2 = dataRow.createCell(1);
            dataCell2.setCellValue(25);
            Cell dataCell3 = dataRow.createCell(2);
            dataCell3.setCellValue("男");

            // 将Workbook对象写入文件
            try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
                workbook.write(outputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们创建了一个XSSFWorkbook对象,它表示一个Excel文件。然后,我们在该文件中创建一个名为"Sheet1"的Sheet对象,并在其中创建标题行和数据行。最后,我们将Workbook对象写入文件。

导出Excel文件

要导出Excel文件,我们需要先从数据源中获取数据,并将其填充到Excel文件中的相应位置。以下是一个简单的示例,演示如何将一个包含学生信息的列表导出到Excel文件中:

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.util.ArrayList;
import java.util.List;

public class ExcelExporter {

    public static void main(String[] args) {
        // 模拟数据源
        List<Student> students = new ArrayList<>();
        students.add(new Student("张三", 25, "男"));
        students.add(new Student("李四", 23, "女"));
        students.add(new Student("王五", 22, "男"));

        try (Workbook workbook = new XSSFWorkbook()) {
            Sheet sheet = workbook.createSheet("Sheet1");

            // 创建标题行
            Row headerRow = sheet.createRow(0);
            Cell headerCell1 = headerRow.createCell(0);
            headerCell1.setCellValue("姓名");
            Cell headerCell2 = headerRow.createCell(1);
            headerCell2.setCellValue("年龄");
            Cell headerCell3 = headerRow.createCell(2);
            headerCell3.setCellValue("性别");

            // 填充数据
            int rowNum = 1;
            for (Student student : students) {
                Row dataRow = sheet.createRow(rowNum++);
                Cell dataCell1 = dataRow.createCell(0);
                dataCell1.setCellValue(student.getName());
                Cell dataCell2 = dataRow.createCell(1);
                dataCell2.setCellValue(student.getAge());
                Cell dataCell3 = dataRow.createCell(2);
                dataCell3.setCellValue(student.getGender());
            }

            // 将Workbook对象写入文件
            try (FileOutputStream outputStream = new FileOutputStream("output.xlsx")) {
                workbook.write(outputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    static class Student {
        private String name;
        private int age;
        private String