如何在不使用 Interop 的情況下於 C# 中管理工作表
IronXL 讓您無需使用 Office Interop 即可在 C# 中管理試算表,透過簡單的函式呼叫,即可建立、刪除、移動及複製試算表。 此函式庫在消除 Interop 依賴項的同時,提供對 Excel 工作表操作的完整程式化控制。
快速入門:立即新增工作表
此範例展示如何僅用一行程式碼(無需重複的常規程式碼,也無需 Interop)透過 IronXL 建立新工作表,讓您能在 C# 中立即管理 Excel 工作簿。
簡化工作流程(5 個步驟)
- 下載 C# 函式庫以管理 Excel 工作表
- 使用
CreateWorksheet方法建立新的工作表 - 使用
SetSheetPosition方法重新排列工作表 - 使用
SetActiveTab方法設定當前工作表 - 使用
RemoveWorksheet方法移除工作表
工作表管理的基本操作有哪些?
管理工作表需要具備建立、移動及刪除工作表的能力。 IronXL 僅需一行程式碼即可完成各項操作。 與傳統的 C# Excel 互通方法不同,IronXL 提供更簡潔的 API,無需管理 COM 物件或進行明確的資源清理。
為何零基索引對工作表操作如此重要?
零基索引表示第一個工作表位於位置 0,而非 1。此慣例與 C# 陣列和集合的索引方式一致,對開發人員而言更直觀。 在管理多個工作表時,牢記這一點可避免"偏移一個位元組"的錯誤,此類錯誤可能導致操作錯誤的工作表,或引發越界例外。
何時該使用哪種試算表管理方法?
不同的情境需要不同的試算表操作。 在生成報告或按類別整理資料時,請使用 。 在建立資料呈現的邏輯流程時,請套用。 `` 方法有助於清理臨時工作表或整合資料。 了解何時使用每種方法,有助於改善工作簿的組織架構與使用者體驗。
管理多個工作表時常見哪些陷阱?
常見錯誤包括嘗試刪除所有工作表(Excel 至少需要保留一張)、建立工作表時使用重複名稱,以及在操作後忘記儲存變更。 此外,在載入現有試算表時,執行操作前務必先驗證工作表是否存在,以避免發生執行時例外。
如何建立新的工作表?
`` 方法會建立一個新的工作表。 它僅需工作表名稱作為唯一參數。 此方法會傳回所建立的工作表物件,讓您能在建立後立即執行合併儲存格等後續操作。
如果我使用重複的工作表名稱會發生什麼情況?
當您嘗試建立名稱已存在的試算表時,IronXL 會自動在名稱後方加上數字,以確保其唯一性。 例如,若"Sheet1"已存在,建立新工作表時會自動命名為"Sheet1_1"。 此自動重新命名功能可避免衝突,並確保您的程式碼能持續執行而不拋出例外。
建立工作表後,該如何串接操作?
由於 ` 會傳回WorkSheet` 物件,您可以透過操作鏈來實現高效編碼。 此流暢介面模式讓您能夠建立工作表,並立即執行諸如設定儲存格值、套用格式或處理範圍等操作。 以下為範例:
// Create and immediately populate a worksheet
WorkSheet newSheet = workBook.CreateWorkSheet("Sales Data")
.SetCellValue("A1", "Product")
.SetCellValue("B1", "Revenue");
// Apply formatting
newSheet["A1:B1"].Style.Font.Bold = true;
newSheet["A1:B1"].Style.BackgroundColor = "#4472C4";
// Create and immediately populate a worksheet
WorkSheet newSheet = workBook.CreateWorkSheet("Sales Data")
.SetCellValue("A1", "Product")
.SetCellValue("B1", "Revenue");
// Apply formatting
newSheet["A1:B1"].Style.Font.Bold = true;
newSheet["A1:B1"].Style.BackgroundColor = "#4472C4";
' Create and immediately populate a worksheet
Dim newSheet As WorkSheet = workBook.CreateWorkSheet("Sales Data") _
.SetCellValue("A1", "Product") _
.SetCellValue("B1", "Revenue")
' Apply formatting
newSheet("A1:B1").Style.Font.Bold = True
newSheet("A1:B1").Style.BackgroundColor = "#4472C4"
工作表的名稱規範為何?
Excel 工作表名稱長度必須在 1 至 31 個字元之間,且不得包含以下字元:\ / ? * [ ]. 此外,名稱不得為空,亦不得僅由空格組成。 IronXL 會自動驗證名稱,若偵測到無效字元則拋出例外,有助於維持與 Excel 的相容性。
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-create-worksheet.cs
using IronXL;
// Create new Excel spreadsheet
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);
// Create worksheets
WorkSheet workSheet1 = workBook.CreateWorkSheet("workSheet1");
WorkSheet workSheet2 = workBook.CreateWorkSheet("workSheet2");
WorkSheet workSheet3 = workBook.CreateWorkSheet("workSheet3");
WorkSheet workSheet4 = workBook.CreateWorkSheet("workSheet4");
workBook.SaveAs("createNewWorkSheets.xlsx");
Imports IronXL
' Create new Excel spreadsheet
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
' Create worksheets
Private workSheet1 As WorkSheet = workBook.CreateWorkSheet("workSheet1")
Private workSheet2 As WorkSheet = workBook.CreateWorkSheet("workSheet2")
Private workSheet3 As WorkSheet = workBook.CreateWorkSheet("workSheet3")
Private workSheet4 As WorkSheet = workBook.CreateWorkSheet("workSheet4")
workBook.SaveAs("createNewWorkSheets.xlsx")
如何變更工作表位置?
方法用於變更工作表的位置。 它需要兩個參數:工作表名稱(格式為)及其索引位置(格式為 ``)。
為什麼我需要重新排列工作表?
重新排列工作表可建立邏輯性的資料流,並提升導覽便利性。 針對財務報告,建議先放置摘要表,再接續詳細明細。 在專案追蹤工作簿中,依時間順序或部門分類工作表,有助於使用者快速查找資訊。 在製作供商業用途的專業試算表時,這種組織方式至關重要。
當我變更位置時,其他工作表會發生什麼情況?
當您移動工作表時,IronXL 會自動調整其他工作表的位置,以維持版面連貫性。 將工作表從位置 3 移動到位置 0,會將位置 0、1 和 2 的工作表向右 Shift 一個位置。 此自動重新索引功能可確保工作表排序無任何缺漏。
如何將工作表移至最前或最後?
移動到起始位置很簡單——使用位置 0。若要移動到結尾,請使用工作簿的工作表總數減去 1。以下是一個實際範例:
// Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0);
// Move worksheet to the end
int lastPosition = workBook.WorkSheets.Count - 1;
workBook.SetSheetPosition("ArchiveSheet", lastPosition);
// Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0);
// Move worksheet to the end
int lastPosition = workBook.WorkSheets.Count - 1;
workBook.SetSheetPosition("ArchiveSheet", lastPosition);
' Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0)
' Move worksheet to the end
Dim lastPosition As Integer = workBook.WorkSheets.Count - 1
workBook.SetSheetPosition("ArchiveSheet", lastPosition)
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-set-sheet-position.cs
using IronXL;
WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");
// Set worksheet position
workBook.SetSheetPosition("workSheet2", 0);
workBook.SaveAs("setWorksheetPosition.xlsx");
Imports IronXL
Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")
' Set worksheet position
workBook.SetSheetPosition("workSheet2", 0)
workBook.SaveAs("setWorksheetPosition.xlsx")
如何設定活動工作表?
設定"工作表"可指定當工作簿首次在 Excel 或其他視覺化工具中開啟時,預設開啟的工作表。 請使用 `` 方法,並指定工作表的索引位置。
為何設定"目前工作表"很重要?
工作簿開啟時,系統會根據當前的工作表決定使用者首先看到的内容。 這第一印象對於儀表板、報告及資料輸入表單至關重要。 透過設定適當的"工作表",您可以立即引導使用者至最相關的資訊,從而提升多工作表工作簿的易用性並減少混淆。
"目前工作表"與"選取的工作表"有何區別?
"工作表"是指目前顯示且可供互動的當前工作表。 選取的工作表可以是多張工作表,用於執行格式設定或刪除等群組操作。 IronXL 的 `` 方法可精確控制檔案開啟時顯示的單一工作表,而在執行批次操作時,工作表的選取則透過其他方法處理。
如何判斷目前哪個工作表處於活動狀態?
IronXL 提供用於識別當前活躍工作表的屬性。 這在您需要於執行操作前保留當前狀態,或驗證將顯示哪張工作表時非常有用。 您亦可於讀取 Excel 檔案時,利用此資訊來理解工作簿的預設檢視:
// Get the currently active worksheet index
int activeIndex = workBook.ActiveSheetIndex;
// Get the active worksheet object
WorkSheet activeSheet = workBook.WorkSheets[activeIndex];
Console.WriteLine($"Active worksheet: {activeSheet.Name}");
// Get the currently active worksheet index
int activeIndex = workBook.ActiveSheetIndex;
// Get the active worksheet object
WorkSheet activeSheet = workBook.WorkSheets[activeIndex];
Console.WriteLine($"Active worksheet: {activeSheet.Name}");
' Get the currently active worksheet index
Dim activeIndex As Integer = workBook.ActiveSheetIndex
' Get the active worksheet object
Dim activeSheet As WorkSheet = workBook.WorkSheets(activeIndex)
Console.WriteLine($"Active worksheet: {activeSheet.Name}")
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-set-active-tab.cs
using IronXL;
WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");
// Set active for workSheet3
workBook.SetActiveTab(2);
workBook.SaveAs("setActiveTab.xlsx");
Imports IronXL
Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")
' Set active for workSheet3
workBook.SetActiveTab(2)
workBook.SaveAs("setActiveTab.xlsx")
如何刪除工作表?
使用 `` 方法並指定工作表的索引位置來移除工作表。 若職位名稱未知,請改用工作表名稱。
如果我嘗試刪除最後一個工作表會發生什麼事?
Excel 工作簿中至少需要包含一個工作表。 若您嘗試刪除最後剩餘的工作表,IronXL 會拋出例外狀況以維持 Excel 檔案的完整性。 在移除工作表前請務必先檢查工作表數量,或將刪除程式碼包覆在適當的錯誤處理機制中:
// Safe worksheet removal with validation
if (workBook.WorkSheets.Count > 1)
{
workBook.RemoveWorkSheet("TempSheet");
}
else
{
Console.WriteLine("Cannot remove the last worksheet");
}
// Safe worksheet removal with validation
if (workBook.WorkSheets.Count > 1)
{
workBook.RemoveWorkSheet("TempSheet");
}
else
{
Console.WriteLine("Cannot remove the last worksheet");
}
' Safe worksheet removal with validation
If workBook.WorkSheets.Count > 1 Then
workBook.RemoveWorkSheet("TempSheet")
Else
Console.WriteLine("Cannot remove the last worksheet")
End If
如何有效率地刪除多個工作表?
在移除多個工作表時,請從最高索引開始倒序操作,以避免索引位移的問題。 或者,可先收集工作表名稱,再根據名稱進行移除。 此方法在清理臨時工作表或整合資料時特別有用:
// Remove multiple worksheets by collecting names first
var sheetsToRemove = workBook.WorkSheets
.Where(ws => ws.Name.StartsWith("Temp_"))
.Select(ws => ws.Name)
.ToList();
foreach (var sheetName in sheetsToRemove)
{
workBook.RemoveWorkSheet(sheetName);
}
// Remove multiple worksheets by collecting names first
var sheetsToRemove = workBook.WorkSheets
.Where(ws => ws.Name.StartsWith("Temp_"))
.Select(ws => ws.Name)
.ToList();
foreach (var sheetName in sheetsToRemove)
{
workBook.RemoveWorkSheet(sheetName);
}
Imports System.Linq
' Remove multiple worksheets by collecting names first
Dim sheetsToRemove = workBook.WorkSheets _
.Where(Function(ws) ws.Name.StartsWith("Temp_")) _
.Select(Function(ws) ws.Name) _
.ToList()
For Each sheetName In sheetsToRemove
workBook.RemoveWorkSheet(sheetName)
Next
刪除工作表前有哪些安全檢查?
在刪除工作表之前,請確認其不包含關鍵資料、其他工作表所引用的公式,或工作簿其他部分所依賴的命名範圍。 請考慮在刪除前建立備份或複製工作表,以利日後資料復原。
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-remove-worksheet.cs
using IronXL;
WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");
// Remove workSheet1
workBook.RemoveWorkSheet(1);
// Remove workSheet2
workBook.RemoveWorkSheet("workSheet2");
workBook.SaveAs("removeWorksheet.xlsx");
Imports IronXL
Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")
' Remove workSheet1
workBook.RemoveWorkSheet(1)
' Remove workSheet2
workBook.RemoveWorkSheet("workSheet2")
workBook.SaveAs("removeWorksheet.xlsx")
如何複製或複製工作表?
在同一工作簿內或跨不同工作簿複製工作表。 若要在同一工作簿內複製,請使用 方法。 若要複製到其他工作簿,請使用 方法。
何時應在工作簿內複製,何時應在工作簿之間複製?
在建立範本、備份工作表或現有資料佈局的變體時,請將內容複製至同一工作簿內。 跨工作簿複製功能在整合多來源資料、彙整不同部門的標準化報表,或將個別貢獻彙整為主工作簿時,表現尤為出色。 針對敏感資料,建議在複製後建立備份或為工作簿設定密碼保護。
複製工作表時會複製哪些內容?
IronXL 的工作表複製功能會保留所有關鍵元素:儲存格值、公式、格式、合併儲存格、欄寬、列高以及資料驗證規則。 圖表、圖片及其他嵌入式物件亦一併複製。 此全面複製功能可確保您複製的工作表完全忠實於原始內容,非常適合用於建立範本或製作歸檔副本。
複製時該如何處理公式引用?
複製工作表時,相對公式參照會自動調整以適應新的工作表環境。 然而,絕對參照與跨工作表參照需特別留意。 複製後,請檢查引用其他工作表的公式,以確保其指向正確的資料來源。 以下是處理常見情境的方式:
// Example: Copying a worksheet and updating formula references
WorkSheet original = workBook.GetWorkSheet("Original");
WorkSheet copied = original.CopySheet("Duplicate");
// Update formulas that need to reference the new sheet
foreach (var cell in copied["A1:Z100"])
{
if (cell.IsFormula)
{
// Replace references as needed
string formula = cell.Formula;
// Update formula logic here based on your needs
}
}
// Example: Copying a worksheet and updating formula references
WorkSheet original = workBook.GetWorkSheet("Original");
WorkSheet copied = original.CopySheet("Duplicate");
// Update formulas that need to reference the new sheet
foreach (var cell in copied["A1:Z100"])
{
if (cell.IsFormula)
{
// Replace references as needed
string formula = cell.Formula;
// Update formula logic here based on your needs
}
}
Imports System
' Example: Copying a worksheet and updating formula references
Dim original As WorkSheet = workBook.GetWorkSheet("Original")
Dim copied As WorkSheet = original.CopySheet("Duplicate")
' Update formulas that need to reference the new sheet
For Each cell In copied("A1:Z100")
If cell.IsFormula Then
' Replace references as needed
Dim formula As String = cell.Formula
' Update formula logic here based on your needs
End If
Next
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-copy-worksheet.cs
using IronXL;
WorkBook firstBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook secondBook = WorkBook.Create();
// Select first worksheet in the workbook
WorkSheet workSheet = firstBook.DefaultWorkSheet;
// Duplicate the worksheet to the same workbook
workSheet.CopySheet("Copied Sheet");
// Duplicate the worksheet to another workbook with the specified name
workSheet.CopyTo(secondBook, "Copied Sheet");
firstBook.SaveAs("firstWorksheet.xlsx");
secondBook.SaveAs("secondWorksheet.xlsx");
Imports IronXL
Dim firstBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim secondBook As WorkBook = WorkBook.Create()
' Select first worksheet in the workbook
Dim workSheet As WorkSheet = firstBook.DefaultWorkSheet
' Duplicate the worksheet to the same workbook
workSheet.CopySheet("Copied Sheet")
' Duplicate the worksheet to another workbook with the specified name
workSheet.CopyTo(secondBook, "Copied Sheet")
firstBook.SaveAs("firstWorksheet.xlsx")
secondBook.SaveAs("secondWorksheet.xlsx")
firstWorksheet.xlsx
secondWorksheet.xlsx
常見問題
如何在 C# 中向 Excel 檔案新增工作表?
IronXL 提供了一個簡單的 CreateWorksheet 方法,只需一行程式碼即可新增工作表。與 Office Interop 不同,您無需管理 COM 物件或處理複雜的資源清理程序——只需傳入您想要的工作表名稱並呼叫 CreateWorksheet 即可。
工作表的零基索引與一基索引有何區別?
IronXL 採用零基索引,這表示第一個工作表位於位置 0,而非 1。此設計符合標準 C# 集合的索引規則,有助於在使用 SetSheetPosition 等方法重新排序工作表時,避免發生「偏移一」錯誤。
是否可以在未安裝 Excel 的情況下,透過程式碼重新排列工作表?
是的,IronXL 的 SetSheetPosition 方法可讓您在無需安裝 Excel 的情況下重新排列工作表。此方法透過簡單的索引值,將工作表移動至工作簿中的任意位置,從而免除了對 Office Interop 的依賴。
如何從 Excel 工作簿中刪除工作表?
using IronXL 的 RemoveWorksheet 方法,可透過程式碼刪除工作表。此方法接受工作表名稱或索引位置作為參數。請注意,Excel 至少需要保留一個工作表,因此 IronXL 會防止您移除最後剩餘的工作表。
如果我嘗試建立名稱重複的工作表會發生什麼情況?
若您嘗試建立的工作表名稱與工作簿中已存在的名稱相同,IronXL 將會拋出例外。在呼叫 CreateWorksheet 方法時,請務必檢查現有工作表名稱,或採用獨特的命名規範。
如何設定開啟 Excel 檔案時顯示的工作表?
IronXL 的 SetActiveTab 方法可控制 Excel 檔案開啟時哪個工作表處於活躍狀態。只需將工作表索引或參考傳遞給此方法,該工作表便會成為使用者開啟工作簿時首先看到的工作表。

