0
点赞
收藏
分享

微信扫一扫

Java导出Excel

阎小妍 2024-11-23 阅读 35

在Java中导出数据为Excel文件通常使用Apache POI库。Apache POI是一个开源库,专门用于操作Microsoft Office格式的文档,包括Excel文件(.xls 和 .xlsx)。下面是如何使用Apache POI来导出数据为Excel文件的一个完整示例。

1. 添加依赖

首先,确保你的项目中包含了Apache POI的依赖。如果你使用的是Maven,可以在pom.xml中添加以下依赖

<dependencies>
    <!-- Apache POI Excel (xlsx) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version> <!-- 版本号可根据需要选择 -->
    </dependency>

    <!-- Apache POI Excel 97-2003 (xls) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>5.2.3</version> <!-- 版本号可根据需要选择 -->
    </dependency>

    <!-- Apache POI (common) -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.1.2</version> <!-- 版本号可根据需要选择 -->
    </dependency>

    <!-- 开发时需要的支持类 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>
</dependencies>

如果你使用的是Gradle,可以添加类似的依赖。

2. 导出数据为Excel

假设你有一些数据需要导出为Excel文件,可以使用Apache POI来创建工作簿、工作表和单元格,并将数据填充到Excel文件中。

示例代码:

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;
import java.util.ArrayList;

public class ExcelExportExample {

    public static void main(String[] args) throws IOException {
        // 模拟一些数据
        List<String[]> data = new ArrayList<>();
        data.add(new String[]{"ID", "Name", "Age"});
        data.add(new String[]{"1", "Alice", "30"});
        data.add(new String[]{"2", "Bob", "25"});
        data.add(new String[]{"3", "Charlie", "35"});

        // 创建一个工作簿(Excel文件)
        Workbook workbook = new XSSFWorkbook();

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

        // 填充数据到Excel中
        int rowNum = 0;
        for (String[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            int colNum = 0;
            for (String cellData : rowData) {
                Cell cell = row.createCell(colNum++);
                cell.setCellValue(cellData);
            }
        }

        // 输出到文件
        try (FileOutputStream fileOut = new FileOutputStream("exported_data.xlsx")) {
            workbook.write(fileOut);
        }

        // 关闭工作簿
        workbook.close();

        System.out.println("Excel文件导出成功!");
    }
}

3. 代码解释

  • 创建WorkbookWorkbook是Excel文件的顶层对象。在这里,我们使用XSSFWorkbook来创建一个.xlsx文件(Excel 2007及之后的版本)。如果你需要生成.xls格式的文件,可以使用HSSFWorkbook
  • 创建SheetSheet对象代表Excel中的工作表。我们通过workbook.createSheet("Sheet1")创建了一个名为"Sheet1"的工作表。
  • 创建Row:Excel中的每一行由Row对象表示。我们通过sheet.createRow(rowNum)创建了一行,并将数据填充到该行。
  • 创建Cell:Excel中的每个单元格由Cell对象表示。通过row.createCell(colNum)创建单元格,并使用cell.setCellValue(cellData)为其赋值。
  • 写入文件FileOutputStream用于将生成的Excel文件写入到磁盘。
  • 关闭资源:完成操作后,记得关闭workbook来释放资源。

4. 更多定制化操作

  • 设置单元格样式:你可以设置单元格的字体、颜色、对齐方式等。

CellStyle style = workbook.createCellStyle();
Font font = workbook.createFont();
font.setBold(true);
style.setFont(font);
row.getCell(0).setCellStyle(style);  // 设置样式

自动调整列宽:可以通过sheet.autoSizeColumn(colNum)来自动调整列宽。

for (int i = 0; i < rowData.length; i++) {
    sheet.autoSizeColumn(i);  // 自动调整列宽
}

日期格式化:如果数据中包含日期,可以使用DataFormat来设置日期格式。

CellStyle dateStyle = workbook.createCellStyle();
CreationHelper createHelper = workbook.getCreationHelper();
dateStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyyy-MM-dd"));
row.getCell(1).setCellStyle(dateStyle);

5. 导出Excel为.xls格式

如果需要导出为.xls格式的文件,可以使用HSSFWorkbook代替XSSFWorkbook

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

Workbook workbook = new HSSFWorkbook();  // 使用HSSFWorkbook创建.xls格式的Excel文件

6. 总结

使用Apache POI进行Excel导出相对简单。通过创建WorkbookSheetRowCell对象,你可以灵活地构建Excel文件。如果需要更复杂的格式化或数据处理,可以进一步定制样式、格式等。

举报

相关推荐

0 条评论