每天一个JAVA工具类--使用Apache POI导出Excel

导出Excel是一项常见的任务,可以用来生成报表、导出数据等。在Java中,我们可以使用流行的Apache POI库来进行Excel操作。下面是一个简单的步骤指南:

  1. 导入依赖

首先,需要在项目中添加Apache POI的依赖。在Maven项目中,你可以在pom.xml文件中添加以下代码:

<dependencies>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.1.2</version>
    </dependency>
</dependencies>
  1. 创建Excel文档

接下来,使用Apache POI创建一个Excel文档。首先,创建一个工作簿(Workbook),然后在工作簿中创建一个工作表(Sheet)。这是一个简单的示例:

// 创建工作簿
Workbook workbook = new XSSFWorkbook();

// 创建工作表
Sheet sheet = workbook.createSheet("Sheet1");

// 创建行
Row row = sheet.createRow(0);

// 创建单元格并设置值
Cell cell = row.createCell(0);
cell.setCellValue("Hello, World!");

// 保存Excel文件
FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();
  1. 添加数据

创建Excel文件后,我们可以通过添加数据来填充单元格。这是一个示例,展示如何添加多行数据到Excel:

for (int i = 0; i < data.size(); i++) {
    Row row = sheet.createRow(i);
    List<Object> rowData = data.get(i);

    for (int j = 0; j < rowData.size(); j++) {
        Cell cell = row.createCell(j);
        cell.setCellValue(rowData.get(j).toString());
    }
}
  1. 设置样式

如果你想对Excel中的单元格进行格式设置,可以使用Apache POI提供的样式类。例如,设置单元格背景色和字体样式:

CellStyle style = workbook.createCellStyle();

// 设置背景色
style.setFillForegroundColor(IndexedColors.LIGHT_YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

// 设置字体样式
Font font = workbook.createFont();
font.setFontName("Arial");
font.setFontHeightInPoints((short) 12);
font.setBold(true);
style.setFont(font);

// 应用样式到单元格
cell.setCellStyle(style);
  1. 保存与关闭

当完成Excel文档的创建、数据的填充和样式的设置后,别忘了保存并关闭文档和输出流:

FileOutputStream outputStream = new FileOutputStream("output.xlsx");
workbook.write(outputStream);
workbook.close();
outputStream.close();

以上是一个简单的介绍,希望对你理解如何使用Java导出Excel有所帮助。你可以根据你的需求,进一步探索Apache POI库提供的更多功能和选项。
6. 通用工具类

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

import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;

public class ExcelExporter {

    public static void exportToExcel(List<List<Object>> data, String filePath) throws IOException {
        // 创建工作簿
        Workbook workbook = new XSSFWorkbook();

        // 创建工作表
        Sheet sheet = workbook.createSheet("Sheet1");

        // 添加数据
        for (int i = 0; i < data.size(); i++) {
            Row row = sheet.createRow(i);
            List<Object> rowData = data.get(i);

            for (int j = 0; j < rowData.size(); j++) {
                Cell cell = row.createCell(j);
                cell.setCellValue(rowData.get(j).toString());
            }
        }

        // 保存Excel文件
        try (FileOutputStream outputStream = new FileOutputStream(filePath)) {
            workbook.write(outputStream);
            workbook.close();
        }
    }

    public static void setCellStyle(Cell cell, IndexedColors backgroundColor, Font font) {
        Workbook workbook = cell.getSheet().getWorkbook();
        CellStyle style = workbook.createCellStyle();

        // 设置背景色
        style.setFillForegroundColor(backgroundColor.getIndex());
        style.setFillPattern(FillPatternType.SOLID_FOREGROUND);

        // 设置字体样式
        style.setFont(font);

        // 应用样式到单元格
        cell.setCellStyle(style);
    }
}

这个工具类中的exportToExcel方法接受一个包含数据的二维列表和一个指定的文件路径作为参数,并将数据导出为Excel文件。setCellStyle方法用于设置单元格的样式,接受一个单元格、背景色和字体作为参数。

使用这个工具类时,只需要按照以下方式调用:

List<List<Object>> data = new ArrayList<>();
// 添加数据到data列表...

String filePath = "output.xlsx";
try {
    ExcelExporter.exportToExcel(data, filePath);
    System.out.println("导出成功!");
} catch (IOException e) {
    System.err.println("导出发生错误: " + e.getMessage());
}

这样,你就可以方便地使用这个通用的工具类来导出Excel文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值