如在 Java 中分割 Excel 工作表

葡萄城技术团队發表於2024-04-01

前言

在Excel中建立的大多數商業報告不是單頁的文件,而是包含了多個上下文相關的資訊,這些資訊被儲存在多個工作表中。例如我們的一些地區銷售報告、按部門分類的員工記錄、每家店鋪的庫存清單等。

然而,隨著Excel檔案中工作表數量的增加,要在單一文件內導航和管理資料會變得十分具有挑戰性。此外,因為這些Excel文件包含了並非所有相關方都應看到的資訊,所以在不同的相關方之間共享這樣的Excel文件不是一個合理的方案。因此,有必要將這些多工作表的Excel文件分割成若干個較小的文件,以便更容易管理、提高效率和資料隔離。

儘管Excel在功能上佔據主導地位,但它不提供原生的函式來分割工作表。你需要手動進行此操作,或者使用VBA。雖然手動方法效率低且容易出錯,但VBA方法會使檔案變得容易受攻擊。

GrapeCity Documents for Excel(以下簡稱 GcExcel )提供了幾種透過Java語言程式設計的方法,可以將Excel檔案中的多個工作表分割成獨立的Excel文件,例如:

  • 透過從源工作簿複製到目標工作簿來分割工作表
  • 透過從源工作簿移動到目標工作簿來分割工作表
  • 透過從原始檔刪除不需要的工作表並將其另存為新文件來分割工作表
  • 透過從源到目標工作簿複製並貼上內容等方式分割工作表

在這篇部落格中,小編將為大家介紹如何透過程式設計方法將工作表從源工作簿複製到目標工作簿來實現分割。

應用案例

假設你現在作為你公司的首席銷售官,準備了一個Excel報表,其中按區域分別在不同的工作表上包含了銷售分析資訊。你想要將這份報告分享給區域銷售經理們。但是,你希望將各個工作表分離成獨立的Excel檔案,以隔離不同區域的分析細節,如下圖所示:

讓我們看看如何透過使用GcExcel透過3個簡單的步驟為每個工作表生成獨立的Excel檔案。

我們需要在遵循GcExcel的產品文件中描述的規則的情況下於IDEA中使用GcExcel。

步驟1- 初始化工作簿

第一步是載入你想要拆分工作表的源工作簿。使用GcExcel,你可以透過IWorkbook介面的Open方法載入Excel檔案,如下所示:

Workbook workbook = new Workbook();
workbook.open("input.xlsx");

步驟2 - 新增拆分Excel工作表的邏輯

完成第一步後,緊接著是新增拆分源工作簿中工作表的邏輯,包括:

  • 建立一個迴圈,遍歷源工作簿中的每個工作表,並按需進行拆分
  • 初始化一個臨時工作簿
  • 使用IWorksheets介面的Copy方法將當前工作表從源工作簿複製到臨時工作簿的末尾
  • 刪除臨時工作簿中的預設工作表
//建立一個迴圈
for (IWorksheet worksheet : workbook.getWorksheets()) {
    //初始化一個臨時工作簿,貼上工作表,刪除臨時工作表
    Workbook tempWorkbook = new Workbook();
    worksheet.copy(tempWorkbook);
    tempWorkbook.getWorksheets().get("Sheet1").delete();
}

步驟3 - 儲存拆分的Excel工作表

最後,使用IWorkbook介面的Save方法將拆分的工作表儲存為獨立的Excel或其他格式的檔案,如下所示:

tempWorkbook.save(worksheet.getName()+".xlsx",SaveFileFormat.Xlsx);// Excel檔案
tempWorkbook.save(worksheet.getName()+".pdf",SaveFileFormat.Pdf);// PDF檔案

完整的程式碼片段如下所述:

Workbook workbook = new Workbook();
workbook.open("test.xlsx");
for (IWorksheet worksheet : workbook.getWorksheets()) {
    Workbook tempWorkbook = new Workbook();
    worksheet.copy(tempWorkbook);
    tempWorkbook.getWorksheets().get("Sheet1").delete();
    tempWorkbook.save(worksheet.getName()+".xlsx",SaveFileFormat.Xlsx);
}

除此之外,GcExcel還提供了一些來自IWorksheets介面的其他方法,比如CopyAfter和CopyBefore,以滿足特定Excel需求的工作表拆分。此外,它還提供了Move、MoveAfter和MoveBefore方法,透過將工作表從源Excel檔案移動到目標Excel檔案來拆分工作表。

總結

Excel檔案解決方案工具(GcExcel)是一個強大的工具,設計用於使用Java簡化Excel文件的建立、讀取和編輯。它提供了一種簡單高效的方式來以程式設計方式處理Excel文件。有了現成的API,你可以僅用幾行程式碼就完成所需的Excel操作,如拆分工作表一樣。程式設計方式處理Excel文件可以節省寶貴的時間和確保資料的精確性。如果您想了解更多的資訊,歡迎點選這裡檢視。

擴充套件連結:

輕鬆構建低程式碼工作流程:簡化繁瑣任務的利器

資料驅動創新:以Java程式設計方式定製資料透視表

Java批次操作Excel檔案實踐

相關文章