最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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", "計算機基礎(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以及循環(huán)打印菱形詳細(xì)實例代碼

    運用java以及循環(huán)打印菱形詳細(xì)實例代碼

    最近在看算法書的時候,看到有打印上三角的算法,然后要舉一反三,下面這篇文章主要介紹了運用java以及循環(huán)打印菱形的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-10-10
  • 淺談對Java雙冒號::的理解

    淺談對Java雙冒號::的理解

    這篇文章主要介紹了淺談對Java雙冒號::的理解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 深入淺析Spring 的aop實現(xiàn)原理

    深入淺析Spring 的aop實現(xiàn)原理

    AOP(Aspect-OrientedProgramming,面向方面編程),可以說是OOP(Object-Oriented Programing,面向?qū)ο缶幊蹋┑难a充和完善。本文給大家介紹Spring 的aop實現(xiàn)原理,感興趣的朋友一起學(xué)習(xí)吧
    2016-03-03
  • websocket實現(xiàn)方法日志實時查詢過程

    websocket實現(xiàn)方法日志實時查詢過程

    本文介紹了一種基于Redis生成唯一key的方案,前端傳遞key至服務(wù)器,服務(wù)器據(jù)此生成日志文件并通過WebSocket線程實時讀取返回內(nèi)容,結(jié)合logback實現(xiàn)日志記錄與監(jiān)控
    2025-07-07
  • RocketMQ?producer發(fā)送者淺析

    RocketMQ?producer發(fā)送者淺析

    RocketMQ生產(chǎn)者是一種高性能、可靠的消息發(fā)送者,能夠?qū)⑾⒖焖?、可靠地發(fā)送到RocketMQ消息隊列中。它具有多種消息發(fā)送模式和消息發(fā)送方式,可以根據(jù)不同的業(yè)務(wù)需求進(jìn)行靈活配置
    2023-04-04
  • 使用Java Minio搭建自己的文件系統(tǒng)詳解

    使用Java Minio搭建自己的文件系統(tǒng)詳解

    這篇文章主要介紹了使用Java Minio搭建自己的文件系統(tǒng)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2021-09-09
  • Java利用docx4j+Freemarker生成word文檔

    Java利用docx4j+Freemarker生成word文檔

    這篇文章主要為大家詳細(xì)介紹了Java如何利用docx4j+Freemarker生成word文檔,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • 一篇文章幫你搞懂什么是java的進(jìn)程和線程

    一篇文章幫你搞懂什么是java的進(jìn)程和線程

    這篇文章主要介紹了java 線程詳解及線程與進(jìn)程的區(qū)別的相關(guān)資料,網(wǎng)上關(guān)于java 線程的資料很多,對于進(jìn)程的資料很是,這里就整理下,需要的朋友可以參考下
    2021-08-08
  • Java中 instanceof 的用法詳細(xì)介紹

    Java中 instanceof 的用法詳細(xì)介紹

    在 Java 中,instanceof 是一個二元運算符(類型比較操作符),用于檢查一個對象是否是某個特定類、接口的實例,或者是否是其子類的實例,這篇文章主要介紹了Java中 instanceof 的用法詳細(xì)介紹,需要的朋友可以參考下
    2025-05-05
  • JSP、Servlet中g(shù)et請求和post請求的區(qū)別總結(jié)

    JSP、Servlet中g(shù)et請求和post請求的區(qū)別總結(jié)

    這篇文章主要介紹了JSP、Servlet中g(shù)et請求和post請求的區(qū)別總結(jié),列舉了多條不同點,需要的朋友可以參考下
    2014-07-07

最新評論

宣城市| 如皋市| 喀什市| 黄梅县| 留坝县| 垣曲县| 休宁县| 广州市| 马龙县| 庆阳市| 托克逊县| 卢湾区| 大庆市| 齐齐哈尔市| 临武县| 松潘县| 新田县| 奉化市| 吉林省| 商南县| 黔东| 金沙县| 县级市| 施甸县| 句容市| 沁水县| 波密县| 西畴县| 黄冈市| 五常市| 高邑县| 梓潼县| 临海市| 黔南| 巴东县| 扶余县| 江达县| 茶陵县| 滦平县| 合川市| 屏东县|