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

Java使用Spire.XLS for Java拆分Excel的實(shí)戰(zhàn)教程

 更新時間:2026年02月03日 09:51:15   作者:用戶033212666367  
在日常數(shù)據(jù)處理中,Excel文件承載著海量信息,然而,面對包含多工作表、超長行數(shù)或需要按特定列進(jìn)行分類的巨型Excel文件時,手動拆分無疑是一場噩夢,本文將深入探討如何利用Java強(qiáng)大的編程能力,結(jié)合Spire.XLS for Java庫,高效、精準(zhǔn)地完成Excel文件的拆分任務(wù)

在日常數(shù)據(jù)處理中,Excel 文件承載著海量信息。然而,面對包含多工作表、超長行數(shù)或需要按特定列進(jìn)行分類的巨型 Excel 文件時,手動拆分無疑是一場噩夢,效率低下且容易出錯。作為開發(fā)者,我們追求自動化和效率。本文將深入探討如何利用 Java 強(qiáng)大的編程能力,結(jié)合 Spire.XLS for Java 庫,高效、精準(zhǔn)地完成 Excel 文件的拆分任務(wù),讓數(shù)據(jù)處理變得輕而易舉。無論您是需要將一個 Excel 文件按工作表拆分為多個獨(dú)立文件,還是需要將一個工作表按行或按列拆分成更小的單元,本教程都將為您提供清晰、可操作的解決方案。

一、Spire.XLS for Java 簡介與環(huán)境配置

Spire.XLS for Java 是一個功能全面、高性能的 Java Excel API,允許開發(fā)者在 Java 應(yīng)用程序中創(chuàng)建、讀取、編輯、轉(zhuǎn)換和打印 Excel 文件。它支持多種 Excel 格式(XLS、XLSX、CSV、ODS 等),提供了豐富的特性,包括但不限于單元格操作、樣式設(shè)置、圖表、數(shù)據(jù)透 視表、公式計(jì)算等。對于 Excel 拆分這種常見的自動化需求,Spire.XLS for Java 提供了直觀且強(qiáng)大的 API 接口。

1. 安裝依賴

要在您的 Java 項(xiàng)目中使用 Spire.XLS for Java,最便捷的方式是通過 Maven 添加其依賴。

Maven:

  <repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.xls</artifactId>
        <version>16.1.3</version>
    </dependency>
</dependencies>

將上述配置添加到您的 pom.xml 文件中,然后重新加載項(xiàng)目依賴即可。

二、按工作表拆分 Excel 文件

最常見的拆分需求是將一個包含多個工作表的 Excel 文件,拆分成多個獨(dú)立的 Excel 文件,每個文件只包含原文件中的一個工作表。

import com.spire.xls.FileFormat;  
import com.spire.xls.Workbook;  
  
public class SplitExcel {  
  
    public static void main(String[] args) {  
  
        // 創(chuàng)建 Workbook 對象  
        Workbook wb = new Workbook();  
  
        // 加載 Excel 文檔  
        wb.loadFromFile("/input/世界各洲人口前十國家.xlsx");  
  
        // 聲明 Workbook 變量  
        Workbook newWb;  
  
        // 聲明 String 類型變量  
        String sheetName;  
  
        // 指定拆分生成的文檔的存放路徑  
        String folderPath = "/output/按表拆分/";  
  
        // 遍歷所有工作表  
        for (int i = 0; i < wb.getWorksheets().getCount(); i++) {  
  
            // 初始化 Workbook 對象  
            newWb = new Workbook();  
  
            // 刪除默認(rèn)工作表  
            newWb.getWorksheets().clear();  
  
            // 將源文檔中的指定工作表復(fù)制到新的 Workbook  
            newWb.getWorksheets().addCopy(wb.getWorksheets().get(i));  
  
            // 獲取工作表表名  
            sheetName = wb.getWorksheets().get(i).getName();  
  
            // 將新的 Workbook 保存為 Excel 文檔  
            newWb.saveToFile(folderPath + sheetName + ".xlsx", FileFormat.Version2013);  
        }  
    }  
}

關(guān)鍵代碼解析:

  1. workbook.loadFromFile("input.xlsx"):加載待處理的 Excel 文件。
  2. workbook.getWorksheets().getCount():獲取工作表的總數(shù)。
  3. workbook.getWorksheets().get(i):獲取指定索引的工作表。
  4. newWb.getWorksheets().addCopy():將原始工作表復(fù)制到新創(chuàng)建的 Workbook 對象中。
  5. newWorkbook.saveToFile(outputFileName):將包含單個工作表的新工作簿保存為獨(dú)立文件。

三、按行拆分 Excel 工作表

當(dāng)單個工作表數(shù)據(jù)量過大時,我們可能需要將其按行數(shù)或特定條件拆分成多個工作表或新的 Excel 文件。這里演示按固定行數(shù)拆分。

import com.spire.xls.*;  
import java.util.EnumSet;  
  
public class spiltexcel {  
    public static void main(String[] args) {  
        // 設(shè)置文件的輸入和輸出路徑  
        String sourceFile = "/input/世界各洲人口前十國家.xlsx";  
        String folderPath = "/output/";  
  
        // 創(chuàng)建一個 Workbook 類的對象并加載 Excel 文件  
        Workbook workbook = new Workbook();  
        workbook.loadFromFile(sourceFile);  
        // 獲取源文件的第一個工作表  
        Worksheet sheet = workbook.getWorksheets().get(0);  
  
        // 創(chuàng)建新的工作簿作為目標(biāo)文件并清除默認(rèn)工作表  
        Workbook newWorkbook1 = new Workbook();  
        newWorkbook1.getWorksheets().clear();  
        // 在目標(biāo)文件新增一個工作表  
        Worksheet newSheet1 = newWorkbook1.getWorksheets().add("Sheet1");  
  
        // 將源文件第一個工作表的第1-5行復(fù)制到目標(biāo)文件中  
        int destRow1 = 1;  
        for (int i = 0; i < 5; i++) {  
            sheet.copyRow(sheet.getRows()[i], newSheet1, destRow1++, EnumSet.of(CopyRangeOptions.All));  
        }  
        copyColumnWidths(sheet, newSheet1);  
        newWorkbook1.saveToFile(folderPath + "1-5行.xlsx", ExcelVersion.Version2016);  
  
        // 創(chuàng)建新的工作簿作為目標(biāo)文件 2 并清除默認(rèn)工作表  
        Workbook newWorkbook2 = new Workbook();  
        newWorkbook2.getWorksheets().clear();  
        // 在目標(biāo)文件 2 新增一個工作表  
        Worksheet newSheet2 = newWorkbook2.getWorksheets().add("Sheet1");  
  
        int destRow2 = 1;  
        // 復(fù)制表頭  
        sheet.copyRow(sheet.getRows()[0], newSheet2, destRow2++, EnumSet.of(CopyRangeOptions.All));  
  
        // 將源文件第一個工作表的第6-10行復(fù)制到目標(biāo)文件中  
        for (int i = 5; i < 10; i++) {  
            sheet.copyRow(sheet.getRows()[i], newSheet2, destRow2++, EnumSet.of(CopyRangeOptions.All));  
        }  
        copyColumnWidths(sheet, newSheet2);  
        newWorkbook2.saveToFile(folderPath + "6-10行.xlsx", ExcelVersion.Version2016);  
    }  
  
    private static void copyColumnWidths(Worksheet source, Worksheet dest) {  
        for (int i = 0; i < source.getColumns().length; i++) {  
            dest.setColumnWidth(i + 1, source.getColumnWidth(i + 1));  
        }  
    }  
}

關(guān)鍵代碼解析:

  1. sheet.getRows():獲取源工作表的指定行。
  2. sheet.copyRow():將剛才獲取到的行復(fù)制到新的工作表中。
  3. 循環(huán)遍歷源工作表,每次復(fù)制 rowsPerSheet 行的數(shù)據(jù)(包括標(biāo)題行)到一個新的工作簿中。
  4. saveToFile():保存修改后的 Excel 文件。

四、按列拆分 Excel 工作表

除了按行拆分,有時我們還需要將一個工作表按列拆分成多個文件,例如將原始數(shù)據(jù)按某些關(guān)鍵列進(jìn)行分組。這里演示按固定列數(shù)拆分。

import com.spire.xls.*;  
import java.util.EnumSet;  
  
public class SplitExcel {  
    public static void main(String[] args) {  
        // 創(chuàng)建 Workbook 對象并加載 Excel 文件  
        Workbook workbook = new Workbook();  
        workbook.loadFromFile("/input/世界各洲人口前十國家.xlsx");  
  
        // 獲取原始(第一個)工作表  
        Worksheet worksheet = workbook.getWorksheets().get(0);  
  
        // 指定生成的 Excel 文件的文件夾路徑  
        String folderPath = "/output/";  
  
        // 創(chuàng)建新的 Workbook,刪除默認(rèn)工作表并添加新的工作表  
        Workbook newWorkbook1 = new Workbook();  
        newWorkbook1.getWorksheets().clear();  
        Worksheet newWorksheet1 = newWorkbook1.getWorksheets().add("Sheet1");  
  
        // 從原始工作表復(fù)制第 1-2 列到新工作表  
        for (int i = 1; i <= 2; i++) {  
            // 參數(shù):源列,目標(biāo)表,目標(biāo)起始列索引,復(fù)制選項(xiàng)  
            worksheet.copyColumn(worksheet.getColumns()[i - 1], newWorksheet1, newWorksheet1.getLastDataColumn() + 1, EnumSet.of(CopyRangeOptions.All));  
        }  
        // 復(fù)制行高以保持樣式一致  
        for (int i = 0; i < worksheet.getRows().length; i++) {  
            newWorksheet1.setRowHeight(i + 1, worksheet.getRowHeight(i + 1));  
        }  
        newWorkbook1.saveToFile(folderPath + "AB列.xlsx", ExcelVersion.Version2016);  
        newWorkbook1.dispose();  
  
        // 創(chuàng)建新的 Workbook,刪除默認(rèn)工作表并添加新的工作表  
        Workbook newWorkbook2 = new Workbook();  
        newWorkbook2.getWorksheets().clear();  
        Worksheet newWorksheet2 = newWorkbook2.getWorksheets().add("Sheet1");  
  
        // 從原始工作表復(fù)制第 3-4 列到新工作表  
        for (int i = 3; i <= 4; i++) {  
            worksheet.copyColumn(worksheet.getColumns()[i - 1], newWorksheet2, newWorksheet2.getLastDataColumn() + 1, EnumSet.of(CopyRangeOptions.All));  
        }  
        // 復(fù)制行高  
        for (int i = 0; i < worksheet.getRows().length; i++) {  
            newWorksheet2.setRowHeight(i + 1, worksheet.getRowHeight(i + 1));  
        }  
        newWorkbook2.saveToFile(folderPath + "CD列.xlsx", ExcelVersion.Version2016);  
        newWorkbook2.dispose();  
    }  
}

關(guān)鍵代碼解析:

  1. worksheet.getColumns():獲取源工作表的指定列。
  2. worksheet.copyColumn():將獲取到的列復(fù)制到新的工作表中。
  3. saveToFile() 保存修改后的 Excel 文件。

五、結(jié)語

通過本文的詳細(xì)教程,我們深入了解了如何利用 Spire.XLS for Java 庫在 Java 應(yīng)用程序中高效地拆分 Excel 文件。無論是按工作表、按行還是按列進(jìn)行拆分,Spire.XLS for Java 都提供了簡潔而強(qiáng)大的 API,極大地簡化了復(fù)雜的 Excel 處理任務(wù)。它的高性能和豐富功能使其成為 Java 開發(fā)者處理 Excel 文件的理想選擇。希望這些示例代碼能幫助您在實(shí)際項(xiàng)目中實(shí)現(xiàn) Excel 自動化處理,提升工作效率。鼓勵大家嘗試探索 Spire.XLS for Java 的更多功能,發(fā)現(xiàn)它在數(shù)據(jù)處理領(lǐng)域的無限潛力!

以上就是Java使用Spire.XLS for Java拆分Excel的實(shí)戰(zhàn)教程的詳細(xì)內(nèi)容,更多關(guān)于Java拆分Excel教程的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java使用定時器編寫一個簡單的搶紅包小游戲

    Java使用定時器編寫一個簡單的搶紅包小游戲

    這篇文章主要為大家介紹了Java如何使用定時器編寫一個簡單的搶紅包小游戲,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-07-07
  • Spring深入探索AOP切面編程

    Spring深入探索AOP切面編程

    Spring是一個廣泛應(yīng)用的框架,SpringAOP則是Spring提供的一個標(biāo)準(zhǔn)易用的aop框架,依托Spring的IOC容器,提供了極強(qiáng)的AOP擴(kuò)展增強(qiáng)能力,對項(xiàng)目開發(fā)提供了極大地便利
    2022-07-07
  • SpringBoot實(shí)現(xiàn)各種參數(shù)校驗(yàn)總結(jié)(建議收藏!)

    SpringBoot實(shí)現(xiàn)各種參數(shù)校驗(yàn)總結(jié)(建議收藏!)

    本文深入解析了Spring?Validation的使用方法、實(shí)現(xiàn)原理及最佳實(shí)踐,詳細(xì)介紹了各種參數(shù)校驗(yàn)場景,如requestBody和requestParam/PathVariable的使用,并探討了分組校驗(yàn)、嵌套校驗(yàn)和自定義校驗(yàn)的高級應(yīng)用,需要的朋友可以參考下
    2024-09-09
  • Spring BeanName 的自動生成原理示例詳解

    Spring BeanName 的自動生成原理示例詳解

    這篇文章主要介紹了Spring BeanName 的自動生成原理示例詳解,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)徹底理解關(guān)于KMP算法

    Java數(shù)據(jù)結(jié)構(gòu)徹底理解關(guān)于KMP算法

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)關(guān)于KMP算法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-09-09
  • java向多線程中傳遞參數(shù)的三種方法詳細(xì)介紹

    java向多線程中傳遞參數(shù)的三種方法詳細(xì)介紹

    但在多線程的異步開發(fā)模式下,數(shù)據(jù)的傳遞和返回和同步開發(fā)模式有很大的區(qū)別。由于線程的運(yùn)行和結(jié)束是不可預(yù)料的,因此,在傳遞和返回數(shù)據(jù)時就無法象函數(shù)一樣通過函數(shù)參數(shù)和return語句來返回數(shù)據(jù)
    2012-11-11
  • Spring定時任務(wù)中@PostConstruct被多次執(zhí)行異常的分析與解決

    Spring定時任務(wù)中@PostConstruct被多次執(zhí)行異常的分析與解決

    這篇文章主要給大家介紹了關(guān)于Spring定時任務(wù)中@PostConstruct被多次執(zhí)行異常的分析與解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法

    IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法

    這篇文章主要介紹了IntelliJ IDEA設(shè)置JVM運(yùn)行參數(shù)的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-03-03
  • Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn)

    Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Mybatis如何從數(shù)據(jù)庫中獲取數(shù)據(jù)存為List類型(存為model)

    Mybatis如何從數(shù)據(jù)庫中獲取數(shù)據(jù)存為List類型(存為model)

    這篇文章主要介紹了Mybatis如何從數(shù)據(jù)庫中獲取數(shù)據(jù)存為List類型(存為model),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01

最新評論

宝山区| 文登市| 临高县| 馆陶县| 水富县| 肇庆市| 图片| 阳西县| 镶黄旗| 当雄县| 铜陵市| 河西区| 巢湖市| 富顺县| 新巴尔虎右旗| 大兴区| 南城县| 峨眉山市| 九江县| 大新县| 达州市| 天全县| 汤阴县| 保康县| 沂南县| 肇源县| 郯城县| 普洱| 伊春市| 仲巴县| 阿合奇县| 岐山县| 万盛区| 广昌县| 五寨县| 繁昌县| 山东| 拉孜县| 新安县| 壶关县| 绥江县|