如何使用IronXL在 C# 中複製儲存格:XLSX檔案操作
IronXL能夠使用單一方法完成XLSX檔案操作,在 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 電子表格
- 選擇要複製的範圍、行或列。
- Invoke the `Copy` method on the selected range
- Pass a destination worksheet and position to the `Copy` method
如何在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 方法需要兩個參數才能精確控制:
1.工作表參數:指定目標工作表(可以是工作簿中的相同工作表,也可以是不同的工作表)。
2.位址參數:定義貼上內容的起始儲存格位置
這種設計允許在同一工作表內或不同工作表之間靈活複製,非常適合建立匯總報告或整合來自多個來源的資料。
何時應該使用單一儲存格複製,何時應該使用範圍複製?
選擇單一儲存格複製的情況:
- 重複單一值或公式
- 複製標題儲存格或標籤
- 重現特定計算結果
- 使用總計值
何時使用範圍複製:
- 移動整個資料表
- 複製多個相關細胞
- 複製整行或整列
- 維繫數據關係
如何複製多個儲存格或區域?
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")
-複製一列(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")
-複製一行(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")
-複製二維範圍 (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")
: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可自動處理尺寸差異:
- 目標參數僅指定左上角的起始儲存格
- 複製整個來源範圍,無論目標大小為何
目標區域中的現有資料將被覆蓋
複製操作會擴展到容納所有來源資料。
例如,將 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.
在下列範例中,Copy 方法的第一個參數是"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")
常見的跨工作表複製場景有哪些?
跨工作表複製通常用於以下場景:
1.建立匯總表:將詳細資料表中的關鍵指標複製到儀表板中
2.範本複製:將格式化的範本複製到新的工作表中
3.資料整合:將部門表中的資料匯總到主表中
4.產生報表:將篩選後的結果複製到單獨的報表工作表中
5.備份作業:將關鍵資料複製到備份表
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,您可以使用複製方法複製單一單元格。只需選擇要複製的單元格 (例如 workSheet["A1"]),然後調用複製方法,並傳入目標工作表和目標單元格位址作為參數即可。在複製操作中,IronXL 會保留所有格式,包括字型、顏色、邊框和公式。
複製單元格時會保留哪些格式?
IronXL 的複製方法可保留所有儲存格屬性,包括儲存格值和公式、數字格式 (貨幣、百分比、日期)、字型樣式 (字型、大小、粗體、斜體、顏色)、儲存格邊框和背景顏色、文字對齊方式 (水平和垂直),以及儲存格保護設定。這可確保複製的單元組保持其原始外觀和功能。
我可以一次複製整列或整個範圍嗎?
是的,IronXL 允許您在單一操作中複製整列、行或範圍。您可以使用 GetColumn(0).Copy() 等方法複製整列,或選擇單元格範圍,一次複製多個單元格。Copy 方法適用於任何選取大小,從單一單元格到整個工作表。
如何在不同的工作表之間複製單元格?
IronXL 可以輕鬆地在工作表之間複製單元格。使用複製方法時,請指定目標工作表為第一個參數 (例如 workBook.GetWorkSheet("Sheet2")),並指定目標儲存格位址為第二個參數。這可讓您在同一工作簿的不同工作表之間複製資料。
在 Excel 中複製單元格至少需要哪些步驟?
使用 IronXL,複製單元只需 5 個步驟:1) 下載 IronXL.Excel C# 函式庫;2) 載入您現有的 Excel 試算表;3) 選擇您想要複製的範圍、行或列;4) 在選取的範圍上啟動複製方法;5) 傳送目的地工作表和位置給複製方法。整個操作只需一行代碼即可完成。

