欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java如何導(dǎo)出包含多個Sheet的Excel文件

 更新時間:2025年07月03日 15:25:10   作者:思靜魚  
這篇文章主要為大家詳細(xì)介紹了Java如何導(dǎo)出包含多個Sheet的Excel文件,文中一共介紹了兩種實現(xiàn)方法,有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下

在 Java 中導(dǎo)出包含多個 Sheet 的 Excel 文件,可以使用 Apache POIEasyExcel(阿里開源庫)。以下是兩種方法的詳細(xì)實現(xiàn):

方法 1:使用 Apache POI(支持 .xls 和 .xlsx)

1. 添加 Maven 依賴

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>5.2.3</version> <!-- 處理 .xls -->
</dependency>
<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>5.2.3</version> <!-- 處理 .xlsx -->
</dependency>

2. 完整代碼示例

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;

public class MultiSheetExcelExport {

    public static void main(String[] args) {
        // 1. 創(chuàng)建工作簿(.xlsx 格式)
        Workbook workbook = new XSSFWorkbook();

        // 2. 創(chuàng)建第一個 Sheet(學(xué)生信息)
        Sheet studentSheet = workbook.createSheet("學(xué)生表");
        // 添加表頭
        Row headerRow = studentSheet.createRow(0);
        headerRow.createCell(0).setCellValue("學(xué)號");
        headerRow.createCell(1).setCellValue("姓名");
        headerRow.createCell(2).setCellValue("成績");
        // 添加數(shù)據(jù)
        addStudentData(studentSheet);

        // 3. 創(chuàng)建第二個 Sheet(課程信息)
        Sheet courseSheet = workbook.createSheet("課程表");
        // 添加表頭
        Row courseHeader = courseSheet.createRow(0);
        courseHeader.createCell(0).setCellValue("課程ID");
        courseHeader.createCell(1).setCellValue("課程名稱");
        // 添加數(shù)據(jù)
        addCourseData(courseSheet);

        // 4. 導(dǎo)出到文件
        try (FileOutputStream fos = new FileOutputStream("multi_sheet_example.xlsx")) {
            workbook.write(fos);
            System.out.println("Excel 導(dǎo)出成功!");
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                workbook.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    private static void addStudentData(Sheet sheet) {
        Object[][] studentData = {
            {1001, "張三", 85},
            {1002, "李四", 92},
            {1003, "王五", 78}
        };
        for (int i = 0; i < studentData.length; i++) {
            Row row = sheet.createRow(i + 1);
            for (int j = 0; j < studentData[i].length; j++) {
                Cell cell = row.createCell(j);
                if (studentData[i][j] instanceof String) {
                    cell.setCellValue((String) studentData[i][j]);
                } else if (studentData[i][j] instanceof Integer) {
                    cell.setCellValue((Integer) studentData[i][j]);
                }
            }
        }
    }

    private static void addCourseData(Sheet sheet) {
        Object[][] courseData = {
            {"C001", "高等數(shù)學(xué)"},
            {"C002", "大學(xué)英語"},
            {"C003", "計算機(jī)基礎(chǔ)"}
        };
        for (int i = 0; i < courseData.length; i++) {
            Row row = sheet.createRow(i + 1);
            for (int j = 0; j < courseData[i].length; j++) {
                row.createCell(j).setCellValue(courseData[i][j].toString());
            }
        }
    }
}

方法 2:使用 EasyExcel(推薦大數(shù)據(jù)量導(dǎo)出)

1. 添加 Maven 依賴

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.3.2</version>
</dependency>

2. 定義數(shù)據(jù)模型

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

@Data
public class Student {
    @ExcelProperty("學(xué)號")
    private Integer id;
    @ExcelProperty("姓名")
    private String name;
    @ExcelProperty("成績")
    private Integer score;
}

@Data
public class Course {
    @ExcelProperty("課程ID")
    private String courseId;
    @ExcelProperty("課程名稱")
    private String courseName;
}

3. 多 Sheet 導(dǎo)出實現(xiàn)

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.util.ArrayList;
import java.util.List;

public class EasyExcelMultiSheetExport {

    public static void main(String[] args) {
        // 1. 準(zhǔn)備數(shù)據(jù)
        List<Student> students = new ArrayList<>();
        students.add(new Student(1001, "張三", 85));
        students.add(new Student(1002, "李四", 92));

        List<Course> courses = new ArrayList<>();
        courses.add(new Course("C001", "高等數(shù)學(xué)"));
        courses.add(new Course("C002", "大學(xué)英語"));

        // 2. 導(dǎo)出到Excel
        String fileName = "multi_sheet_easyexcel.xlsx";
        try (ExcelWriter excelWriter = EasyExcel.write(fileName).build()) {
            
            // 第一個Sheet:學(xué)生數(shù)據(jù)
            WriteSheet studentSheet = EasyExcel.writerSheet(0, "學(xué)生信息")
                    .head(Student.class)
                    .build();
            excelWriter.write(students, studentSheet);

            // 第二個Sheet:課程數(shù)據(jù)
            WriteSheet courseSheet = EasyExcel.writerSheet(1, "課程信息")
                    .head(Course.class)
                    .build();
            excelWriter.write(courses, courseSheet);
        }
        System.out.println("EasyExcel 導(dǎo)出成功!");
    }
}

兩種方法對比

特性Apache POIEasyExcel
適用場景需要精細(xì)控制Excel樣式和功能大數(shù)據(jù)量導(dǎo)出(百萬行級)
內(nèi)存占用較高(全內(nèi)存操作)低(流式寫入)
API復(fù)雜度較復(fù)雜簡單易用
性能處理小文件快處理大文件性能優(yōu)異
功能支持所有Excel特性專注數(shù)據(jù)導(dǎo)出,樣式支持有限

最佳實踐建議

  • 小數(shù)據(jù)量+復(fù)雜樣式 → 選擇 Apache POI
  • 大數(shù)據(jù)量導(dǎo)出 → 選擇 EasyExcel
  • 需要兼容舊版Excel(.xls) → 使用 POI 的 HSSFWorkbook

兩種方式均可實現(xiàn)多Sheet導(dǎo)出,根據(jù)項目需求選擇即可!

到此這篇關(guān)于Java如何導(dǎo)出包含多個Sheet的Excel文件的文章就介紹到這了,更多相關(guān)Java導(dǎo)出Excel內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Java手寫一個簡易的lombok的示例代碼

    利用Java手寫一個簡易的lombok的示例代碼

    Lombok是一款Java開發(fā)插件,使得Java開發(fā)者可以通過其定義的一系列注解來消除業(yè)務(wù)工程中冗長和繁瑣的代碼,尤其對于簡單的Java模型對象。本文就來手寫一個簡易的lombok,需要的可以參考一下
    2022-10-10
  • 使用新版Maven-mvnd快速構(gòu)建項目

    使用新版Maven-mvnd快速構(gòu)建項目

    本文主要介紹了使用新版Maven-mvnd來快速構(gòu)建項目,相比于Maven,mvnd可以顯著提高構(gòu)建速度,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01
  • java項目導(dǎo)出為.exe執(zhí)行文件的方法步驟

    java項目導(dǎo)出為.exe執(zhí)行文件的方法步驟

    最近做了個項目,想要轉(zhuǎn)換成可執(zhí)行文件,那么java項目如何導(dǎo)出為.exe執(zhí)行文件,本文就介紹一下,主要使用jar2exe軟件,感興趣的可以了解一下
    2021-05-05
  • spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    spring aop底層源碼執(zhí)行邏輯剖析(源碼解析)

    這篇文章主要介紹了spring aop底層源碼執(zhí)行邏輯剖析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-08-08
  • java 取交集方法retainAll的實現(xiàn)

    java 取交集方法retainAll的實現(xiàn)

    這篇文章主要介紹了java 取交集方法retainAll的實現(xiàn)操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • java迭代子模式詳解

    java迭代子模式詳解

    這篇文章主要為大家詳細(xì)介紹了java迭代子模式的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • SpringBoot 使用@WebMvcTest測試MVC Web Controller

    SpringBoot 使用@WebMvcTest測試MVC Web Controller

    這篇文章主要介紹了SpringBoot 使用@WebMvcTest測試MVC Web Controller,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • JMX監(jiān)控的具體使用

    JMX監(jiān)控的具體使用

    JMX最常見的場景是監(jiān)控Java程序的基本信息和運(yùn)行情況,本文主要介紹了JMX監(jiān)控的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 淺析 ArrayList 和 LinkedList 有什么區(qū)別

    淺析 ArrayList 和 LinkedList 有什么區(qū)別

    ArrayList 和 LinkedList 有什么區(qū)別,是面試官非常喜歡問的一個問題。今天通過本文給大家詳細(xì)介紹下,感興趣的朋友跟隨小編一起看看吧
    2020-10-10
  • Springboot集成Proguard生成混淆jar包方式

    Springboot集成Proguard生成混淆jar包方式

    本文介紹了兩種Java代碼混淆工具:ClassFinal和ProGuard,ClassFinal是一個字節(jié)碼加密工具,但需要額外的加密包,使用復(fù)雜,ProGuard是一款開源的Java代碼混淆工具,可以有效地提高代碼的安全性,但對Spring框架的注解處理不夠完善
    2024-11-11

最新評論