在Java中导出Excel文件,通常使用Apache POI库。Apache POI是一个强大的Java库,用于处理Microsoft Office文档,包括Excel文件(.xls和.xlsx)。

以下是一个简单的示例代码,演示如何使用Apache POI库导出Excel文件:

1. 添加依赖

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

<dependencies>
    <!-- Apache POI for Excel -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>5.2.3</version>
    </dependency>
    <!-- Apache POI dependencies -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-collections4</artifactId>
        <version>4.4</version>
    </dependency>
    <dependency>
        <groupId>org.apache.xmlbeans</groupId>
        <artifactId>xmlbeans</artifactId>
        <version>5.1.1</version>
    </dependency>
</dependencies>

2. 编写导出Excel的代码

下面是一个完整的示例代码,展示如何创建一个新的Excel文件并写入一些数据:

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

import java.io.FileOutputStream;
import java.io.IOException;

public class ExcelExportExample {
    public static void main(String[] args) {
        // 创建一个新的工作簿
        Workbook workbook = new XSSFWorkbook();

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

        // 创建标题行
        Row headerRow = sheet.createRow(0);
        String[] columns = {"ID", "Name", "Age"};
        for (int i = 0; i < columns.length; i++) {
            Cell cell = headerRow.createCell(i);
            cell.setCellValue(columns[i]);
        }

        // 创建一些示例数据
        Object[][] data = {
                {1, "John Doe", 30},
                {2, "Jane Smith", 25},
                {3, "Mike Johnson", 35}
        };

        // 填充数据到工作表中
        int rowNum = 1;
        for (Object[] rowData : data) {
            Row row = sheet.createRow(rowNum++);
            for (int colNum = 0; colNum < rowData.length; colNum++) {
                Cell cell = row.createCell(colNum);
                if (rowData[colNum] instanceof String) {
                    cell.setCellValue((String) rowData[colNum]);
                } else if (rowData[colNum] instanceof Integer) {
                    cell.setCellValue((Integer) rowData[colNum]);
                }
            }
        }

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

        // 将工作簿写入文件系统
        try (FileOutputStream fileOut = new FileOutputStream("sample.xlsx")) {
            workbook.write(fileOut);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

详解

  1. 创建工作簿:使用new XSSFWorkbook()创建一个XSSFWorkbook对象,表示一个Excel工作簿。

    Workbook workbook = new XSSFWorkbook();
    
  2. 创建工作表:使用workbook.createSheet("Sample Sheet")创建一个名为“Sample Sheet”的工作表。

    Sheet sheet = workbook.createSheet("Sample Sheet");
    
  3. 创建标题行:使用sheet.createRow(0)创建第一行(索引从0开始),并在该行中创建单元格来设置标题。

    Row headerRow = sheet.createRow(0);
    String[] columns = {"ID", "Name", "Age"};
    for (int i = 0; i < columns.length; i++) {
        Cell cell = headerRow.createCell(i);
        cell.setCellValue(columns[i]);
    }
    
  4. 填充数据:遍历数据数组,为每一行创建单元格并设置其值。

    int rowNum = 1;
    for (Object[] rowData : data) {
        Row row = sheet.createRow(rowNum++);
        for (int colNum = 0; colNum < rowData.length; colNum++) {
            Cell cell = row.createCell(colNum);
            if (rowData[colNum] instanceof String) {
                cell.setCellValue((String) rowData[colNum]);
            } else if (rowData[colNum] instanceof Integer) {
                cell.setCellValue((Integer) rowData[colNum]);
            }
        }
    }
    
  5. 自动调整列宽:遍历所有列并调用sheet.autoSizeColumn(i)方法自动调整列宽。

    for (int i = 0; i < columns.length; i++) {
        sheet.autoSizeColumn(i);
    }
    
  6. 写入文件:使用FileOutputStream将工作簿写入文件系统,并确保在完成后关闭工作簿以释放资源。

    try (FileOutputStream fileOut = new FileOutputStream("sample.xlsx")) {
        workbook.write(fileOut);
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    

通过以上步骤,你可以使用Apache POI库轻松地在Java中导出Excel文件。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐