在日常開發中,我們經常需要對 Excel 文件進行各種操作,而不僅僅是寫入或讀取數據。比如在處理報表時,可能需要 添加新的工作表、刪除不需要的表、複製或移動表格內容,甚至對工作表進行重命名和調整順序。掌握這些操作能讓你的 Excel 文件更加靈活,結構更清晰。
本文演示如何在 同一個工作簿內 完成多種工作表管理操作,包括添加、刪除、複製、移動、重命名以及移動工作表。所有操作都基於同一個示例文件,便於截圖展示效果。
本文使用免費的 Free Spire.XLS for .NET,可通過 NuGet 安裝:
Install-Package FreeSpire.XLS
1. 初始化工作簿
新建的 Workbook 默認包含三個工作表(Sheet1、Sheet2、Sheet3)。我們從這裏開始操作。
using Spire.Xls;
using System.Drawing;
Workbook workbook = new Workbook();
Worksheet sheet1 = workbook.Worksheets[0];
sheet1.Name = "默認工作表1";
sheet1.Range["A1"].Text = "這是第一個默認工作表";
説明:
Workbook類表示 Excel 文件。Worksheets集合存放了該工作簿中的所有工作表。- 默認就有三個工作表,不需要手動添加。
2. 添加工作表
可以通過 Worksheets.Add() 方法添加新的工作表。
Worksheet newSheet = workbook.Worksheets.Add("新增工作表");
newSheet.Range["A1"].Text = "這是新建的工作表";
應用場景:
- 在現有報表中擴展新的數據區。
- 生成臨時的計算表或結果表。
3. 刪除工作表
如果不需要某個工作表,可以直接刪除。這裏我們刪除第三個默認工作表(Sheet3)。
workbook.Worksheets[2].Remove(); // 刪除第三個默認工作表
説明:刪除後,工作簿中的工作表總數會減少,後續的索引也會自動調整。
4. 複製工作表
複製一個已有的工作表到新的位置。這裏我們複製第一個工作表。
Worksheet copiedSheet = workbook.Worksheets.Add("複製的表");
copiedSheet.CopyFrom(sheet1);
copiedSheet.Range["A2"].Text = "這是複製自第一個工作表的副本";
場景:
- 保留原始表的同時,生成一個副本用於實驗或修改。
- 避免重複手動設置表格格式。
5. 移動工作表
可以改變工作表在工作簿中的順序。這裏把“新增工作表”移動到第一個位置。
Worksheet sheetToMove = workbook.Worksheets["新增工作表"];
sheetToMove.MoveWorksheet(0); // 移動到第一個位置
説明:MoveWorksheet() 方法允許把指定的表移動到目標索引位置。索引從 0 開始。
6. 重命名工作表
工作表命名在報表管理中非常重要,合理命名有助於區分內容。這裏我們把第二個工作表改名為“銷售數據”。
workbook.Worksheets[2].Name = "銷售數據";
workbook.Worksheets[2].Range["A1"].Text = "這裏是銷售數據表";
場景:將默認的 “Sheet1”、“Sheet2” 改為業務相關的名稱,如“財務報表”、“年度統計”。
7. 複製內容到其他工作表
除了移動整個工作表,也可以將某些單元格區域複製或移動到其他表。這裏我們將“銷售數據”的 A2:C3 區域複製到“複製數據工作表”的 A2 開始的區域。
Worksheet source = workbook.Worksheets["銷售數據"];
Worksheet target = workbook.Worksheets.Add("複製數據工作表");
target.Range["A1"].Text = "這是用於複製數據的工作表";
// 在源表中填充一些示例數據
source.Range["A2"].Text = "產品";
source.Range["B2"].Text = "數量";
source.Range["C2"].Text = "金額";
source.Range["A3"].Text = "電腦";
source.Range["B3"].NumberValue = 10;
source.Range["C3"].NumberValue = 50000;
source.Range["A2:C3"].Style.Color = Color.LightGray;
// 將源表的 A1:C2 區域複製到目標表的 A1
source.Range["A2:C3"].Copy(target.Range["A2"]);
説明:
- 使用
Copy()可以將區域內容(包括數據與格式)複製到另一個表。 - 適合拆分數據或彙總數據時使用。
10. 將工作表複製到其他工作簿
有時我們需要將某個工作表從當前工作簿轉移到另一個文件中,便於拆分數據或單獨保存。下面演示如何把“銷售數據”工作表複製到新的工作簿,並保存為單獨文件。
// 獲取要複製的工作表
Worksheet sheetToCopy = workbook.Worksheets["銷售數據"];
// 新建一個目標工作簿
Workbook newWorkbook = new Workbook();
// 清空默認生成的工作表,避免混亂
newWorkbook.Worksheets.Clear();
// 在新工作簿中添加並複製工作表
Worksheet newSheet1 = newWorkbook.Worksheets.Add("銷售數據副本");
newSheet1.CopyFrom(sheetToCopy);
// 刪除原工作表即可完成移動
//sheetToCopy.Remove();
説明:
newWorkbook.Worksheets.Clear()用於清空新建工作簿中默認的三個工作表。CopyFrom()可以完整複製源表的數據和格式。- 刪除原工作表即可完成移動操作工作表到新工作簿的操作。
8. 保存文件
最後,將工作簿保存為 Excel 文件以便查看結果。
workbook.SaveToFile("工作表操作示例.xlsx", ExcelVersion.Version2016);
newWorkbook.SaveToFile("複製到新工作簿示例.xlsx", ExcelVersion.Version2016);
生成的文件中包含:
- 已新增、複製和重命名的工作表;
- 刪除了一個不需要的默認表;
- 調整了工作表順序;
- 複製了部分單元格到其他工作表。
生成的 Excel 工作簿預覽:
複製的新工作簿預覽:
9. 關鍵方法總結
| 操作類型 | 方法/屬性 | 説明 |
|---|---|---|
| 添加表 | Worksheets.Add("name") |
新建一個工作表 |
| 刪除表 | Worksheets[index].Remove() |
刪除指定索引的工作表 |
| 複製表 | copiedSheet.CopyFrom(sourceSheet) |
將現有工作表複製到新表 |
| 移動表 | Worksheets.MoveWorksheet(positionIndex) |
調整工作表在工作簿中的順序 |
| 重命名錶 | Worksheet.Name |
設置或獲取工作表的名稱 |
| 移動單元格 | sourceRange.Copy(targetRange) |
將指定單元格區域複製到其他表 |
通過以上操作,你已經可以靈活地用 C# 操作 Excel 工作簿中的工作表。這些操作在日常文檔管理和自動化處理中非常實用,能讓 Excel 文件的組織更加清晰高效。
更多 Excel 文件操作技巧請查看 Spire.XLS for .NET 教程。