如何使用 IronXL 在 C# 中複製儲存格
IronXL 透過單一 Copy 方法,讓您能在 Excel 試算表中複製儲存格、範圍、列或欄,並在任何位置或工作表之間複製資料時,完整保留所有格式與樣式。
"複製儲存格"功能會複製儲存格內容,並將其貼上至其他儲存格。 它會複製工作表中的資料、公式、格式及其他屬性。 Whether creating spreadsheets from scratch or loading existing Excel files, the copy functionality is essential for efficient data manipulation.
快速入門:在一行內複製欄位或範圍
透過單一方法呼叫,即可將整個範圍(單一儲存格、列、欄或區塊)從一個工作表複製到另一個工作表。 Copy 函式在保留樣式與格式的同时,能讓 Excel 自動化操作變得快速且簡單。
簡化工作流程(5 個步驟)
- 下載用於複製儲存格的 C# 函式庫
- 載入現有的 Excel 試算表
- 選取您要複製的範圍、列或欄
- 對選取的範圍呼叫
Copy方法 - 將目標工作表和位置傳遞給
Copy方法
如何在 Excel 中複製單一儲存格?
若要複製選取儲存格的內容,請使用 Copy 方法。 請將工作表物件作為第一個參數傳入,並將起始位置作為第二個參數傳入。 The Copy method retains all styling including font and size, background patterns and colors, and borders and alignment.
:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-single-cell.cs
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet1"), "B3");
workBook.SaveAs("copySingleCell.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet1"), "B3")
workBook.SaveAs("copySingleCell.xlsx")
複製時會保留哪些格式?
Copy 方法會保留所有儲存格屬性,包括:
Cell數值與公式- 數字格式(貨幣、百分比、日期)
- 字型樣式(字體、大小、粗體、斜體、顏色)
- 儲存格邊框與背景顏色
- 文字對齊(水平與垂直)
- 儲存格保護設定
此全面保留機制可確保複製的儲存格維持原始外觀與功能,效果類似於在 Microsoft Excel 中使用 Ctrl+C 和 Ctrl+V。
為什麼 Copy 方法需要兩個參數?
Copy 方法需要兩個參數以實現精確控制:
- 工作表參數:指定目標工作表(可為同一工作簿內或不同工作簿中的工作表)
- Address 參數:定義貼上內容的起始儲存格位置
此設計允許在同一工作表內或跨不同工作表進行靈活複製,非常適合製作摘要報告或整合來自多個來源的資料。
何時該使用單一儲存格複製,何時該使用範圍複製?
請在以下情況選擇單元格複製:
- 複製個別數值或公式
- 複製標題儲存格或標籤
- 複製特定的計算結果
- 處理摘要值
請在以下情況使用範圍描述:
- 移動整個資料表
- 複製多個相關儲存格
- 複製整行或整列
- 保留資料關聯性
如何複製多個儲存格或範圍?
Like the Clear method, Copy is available in the Range class, allowing execution on any range size. When selecting ranges, IronXL provides flexible copying options:
-
複製單一儲存格 (
C10):workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")$vbLabelText $csharpLabel -
複製一欄 (
A):workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")$vbLabelText $csharpLabel -
複製一行 (
4):workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")$vbLabelText $csharpLabel -
複製二維範圍 (
D6:F8):workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")$vbLabelText $csharpLabel
:path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-cell-range.cs
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy a single cell(C10)
workSheet["C10"].Copy(workBook.GetWorkSheet("Sheet1"), "B13");
// Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
// Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15");
// Copy a two-dimensional range(D6:F8)
workSheet["D6:F8"].Copy(workBook.GetWorkSheet("Sheet1"), "H17");
workBook.SaveAs("copyCellRange.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy a single cell(C10)
workSheet("C10").Copy(workBook.GetWorkSheet("Sheet1"), "B13")
' Copy a column(A)
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1")
' Copy a row(4)
workSheet.GetRow(3).Copy(workBook.GetWorkSheet("Sheet1"), "A15")
' Copy a two-dimensional range(D6:F8)
workSheet("D6:F8").Copy(workBook.GetWorkSheet("Sheet1"), "H17")
workBook.SaveAs("copyCellRange.xlsx")
當目標範圍過小時會發生什麼情況?
IronXL 會自動處理大小差異:
- destination 參數僅指定左上角的起始儲存格
- 無論目標區域大小如何,都會複製整個來源範圍
- 目標區域中的現有資料將被覆寫
- 複製操作會擴展以涵蓋所有原始資料
例如,將 3x3 範圍複製到儲存格 B1 會填入儲存格 B1:D3,並覆寫任何現有內容。
列與列的引用是如何運作的?
IronXL 採用以零為起點的列與欄索引,並提供 GetRow() 和 GetColumn() 方法:
GetColumn(0)指 A 欄GetColumn(1)指 B 欄GetRow(0)指第 1 行GetRow(3)指第 4 行
此索引方式符合標準的 C# 陣列慣例。
為何要使用 GetColumn() 和 GetRow() 方法?
GetColumn() 和 GetRow() 方法提供:
- 效能:針對整行或整欄的處理效率更高
- 清晰度:使程式碼意圖更清晰
- 靈活性:返回一個
Range物件,支援所有範圍運算 - 便利性:無需為全選範圍計算邊界儲存格
這些方法在建立需要完整複製欄位的報表,或複製列範本時表現尤為出色。
如何在不同工作表之間複製儲存格?
第一個參數接受工作表物件,可實現跨不同工作表的複製與貼上。 將不同的工作表物件作為第一個參數傳入。 This functionality proves essential when managing multiple worksheets or creating summary sheets from detailed data.
workBook.GetWorksheet("Sheet2"):path=/static-assets/excel/content-code-examples/how-to/copy-cells-copy-to-other-worksheet.cs
using IronXL;
WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");
// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");
// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");
// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");
workBook.SaveAs("crossSheetCopy.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");
// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet2"), "B3");
workBook.SaveAs("copyAcrossWorksheet.xlsx");
using IronXL;
WorkBook workBook = WorkBook.Load("multisheet.xlsx");
WorkSheet sheet1 = workBook.GetWorkSheet("Sheet1");
WorkSheet sheet2 = workBook.GetWorkSheet("Sheet2");
// Copy entire data range from Sheet1 to Sheet2
sheet1["A1:D10"].Copy(sheet2, "A1");
// Copy with formulas intact
sheet1["E1:E10"].Copy(sheet2, "F1");
// Copy formatting from template sheet
WorkSheet templateSheet = workBook.GetWorkSheet("Template");
templateSheet["A1:Z1"].Copy(sheet2, "A15");
workBook.SaveAs("crossSheetCopy.xlsx");
Imports IronXL
Dim workBook As WorkBook = WorkBook.Load("sample.xlsx")
Dim workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")
' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet2"), "B3")
workBook.SaveAs("copyAcrossWorksheet.xlsx")
Dim workBook2 As WorkBook = WorkBook.Load("multisheet.xlsx")
Dim sheet1 As WorkSheet = workBook2.GetWorkSheet("Sheet1")
Dim sheet2 As WorkSheet = workBook2.GetWorkSheet("Sheet2")
' Copy entire data range from Sheet1 to Sheet2
sheet1("A1:D10").Copy(sheet2, "A1")
' Copy with formulas intact
sheet1("E1:E10").Copy(sheet2, "F1")
' Copy formatting from template sheet
Dim templateSheet As WorkSheet = workBook2.GetWorkSheet("Template")
templateSheet("A1:Z1").Copy(sheet2, "A15")
workBook2.SaveAs("crossSheetCopy.xlsx")
常見的跨工作表複製情境有哪些?
跨工作表複製功能常應用於以下情境:
- 建立摘要表:將關鍵指標從明細表複製到儀表板
- 範本複製:將格式化的範本複製到新的工作表
- 資料整合:將各部門試算表中的資料匯整至主試算表
- 報表生成:將篩選後的結果複製到獨立的報表工作表中
- 備份操作:將關鍵資料複製至備份表
When working with formulas that reference other cells, IronXL automatically adjusts relative references based on the new location while maintaining absolute references.
何時應複製到新工作表,何時應複製到現有工作表?
在以下情況下複製到新工作表:
- 建立定期報告(每日、每週、每月)
- 將處理後的資料與原始資料隔離
- 根據原始資料建立分析試算表
- 產生使用者專屬的資料檢視
在以下情況下複製到現有工作表:
- 將資料追加至正在記錄的日誌中
- 更新儀表板區塊
- 整合多個資料來源
- 維護歷史紀錄
For complex scenarios involving multiple sheets, consider using IronXL's ability to work with DataSets and DataTables for sophisticated data manipulation.
如何處理工作表名稱衝突?
在工作表之間複製內容時,請確保妥善管理工作表:
// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
workBook.CreateWorkSheet("TargetSheet");
}
// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
// Check if worksheet exists before copying
if (workBook.GetWorkSheet("TargetSheet") == null)
{
workBook.CreateWorkSheet("TargetSheet");
}
// Safe copy operation
WorkSheet targetSheet = workBook.GetWorkSheet("TargetSheet");
sourceSheet["A1:Z100"].Copy(targetSheet, "A1");
' Check if worksheet exists before copying
If workBook.GetWorkSheet("TargetSheet") Is Nothing Then
workBook.CreateWorkSheet("TargetSheet")
End If
' Safe copy operation
Dim targetSheet As WorkSheet = workBook.GetWorkSheet("TargetSheet")
sourceSheet("A1:Z100").Copy(targetSheet, "A1")
此方法可避免執行時錯誤並確保複製操作成功,這在生產環境中自動化 Excel 流程時尤為重要。
常見問題
如何使用 C# 在 Excel 中複製單一儲存格?
透過 IronXL,您可以使用 Copy 方法複製單一儲存格。只需選取要複製的儲存格(例如 workSheet["A1"]),並呼叫 Copy 方法,同時將目標工作表和目標儲存格位址作為參數傳入。在複製操作過程中,IronXL 會保留所有格式設定,包括字型、顏色、邊框和公式。
複製儲存格時會保留哪些格式?
IronXL 的 Copy 方法會保留所有儲存格屬性,包括儲存格值與公式、數字格式(貨幣、百分比、日期)、字型樣式(字體、大小、粗體、斜體、顏色)、儲存格邊框與背景顏色、文字對齊方式(水平與垂直),以及儲存格保護設定。這確保複製後的儲存格能維持其原始外觀與功能。
我可以一次複製整個欄位或範圍嗎?
是的,IronXL 允許您透過單一操作複製整個欄位、列或範圍。您可以使用 GetColumn(0).Copy() 等方法來複製整個欄位,或選取一組儲存格以一次複製多個儲存格。Copy 方法適用於任何選取範圍,從單一儲存格到整個工作表皆可。
如何在不同工作表之間複製儲存格?
IronXL 讓您能輕鬆地在工作表之間複製儲存格。使用 Copy 方法時,請將目標工作表指定為第一個參數(例如:workBook.GetWorkSheet("Sheet2")),並將目標儲存格位址指定為第二個參數。這讓您能夠在同一工作簿內的不同工作表之間複製資料。
在 Excel 中複製儲存格至少需要哪些步驟?
using IronXL 複製儲存格僅需 5 個步驟:1) 下載 IronXL C# 程式庫,2) 載入現有的 Excel 試算表,3) 選取要複製的範圍、列或欄,4) 對選取的範圍呼叫 Copy 方法,以及 5) 將目標工作表和位置傳遞給 Copy 方法。整個操作只需一行程式碼即可完成。

