如何使用IronXL複製單元格

如何使用IronXL在C#中複製儲存格

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronXL透過單一Copy方法可在Excel試算表中複製儲存格、範圍、列或欄,並在不同位置或工作表間複製資料時保留所有格式和樣式。

"複製儲存格"功能會複製儲存格內容並貼上到其他儲存格中。 它會在工作表內複製資料、公式、格式和其他屬性。 無論是從頭開始建立試算表還是載入現有的Excel文件,複製功能對於高效資料操作是必不可少的。

快速入門:一行程式碼複製一欄或範圍

使用一個方法呼叫從一個工作表到另一個工作表複製整個範圍-單個儲存格、列、欄或區塊。 Copy功能在使Excel自動化快速簡單的同時,保留樣式和格式。

  1. 使用NuGet套件管理器安裝https://www.nuget.org/packages/IronXL.Excel

    PM > Install-Package IronXL.Excel
  2. 複製並運行這段程式碼片段。

    workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");
  3. 部署以在您的實時環境中測試

    今天就開始在您的專案中使用IronXL,透過免費試用

    arrow pointer


如何在Excel中複製單個儲存格?

要複製選定儲存格的內容,請使用Copy方法。 將工作表物件作為第一個參數傳遞,並將起始位置作為第二個參數傳遞。 Copy方法保留所有樣式,包括字體和大小背景圖案和顏色以及邊框和對齊

: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");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet1"), "B3")

workBook.SaveAs("copySingleCell.xlsx")
$vbLabelText   $csharpLabel

複製時保留了哪些格式?

Copy方法保留了所有儲存格屬性,包括:

  • Cell值和公式
  • 數字格式(貨幣、百分比、日期)
  • 字體樣式(字型、大小、粗體、斜體、顏色)
  • 儲存格邊框和背景顏色
  • 文字對齊(水平和垂直)
  • 儲存格保護設置

這種全面的保留確保了複製的儲存格維持其原始外觀和功能,類似於在Microsoft Excel中使用Ctrl+C和Ctrl+V。

試算表顯示選中A1儲存格,箭頭指向包含已複製值的B3儲存格,演示單個儲存格複製

為什麼複製方法需要兩個參數?

Copy方法需要兩個參數以便精確控制:

  1. 工作表參數:指定目標工作表(相同工作簿中相同或不同)
  2. 地址參數:定義要貼上內容的開始儲存格位置

這種設計允許在同一工作表或不同工作表之間靈活地進行複製,非常適合建立摘要報告或整合多個來源的資料。

什麼時候應該使用單個儲存格複製與範圍複製?

在以下情況下選擇單個儲存格複製:

  • 複製單個值或公式
  • 複製標題儲存格或標籤
  • 複製特定計算結果
  • 處理摘要值

在以下情況下使用範圍複製:

  • 移動整個資料表
  • 複製多個相關的儲存格
  • 複製整行或整列
  • 保留資料關係

如何複製多個儲存格或範圍?

Range類中使用,允許在任何範圍大小上執行。 在選擇範圍時,IronXL提供了靈活的複製選項:

  • 複製單個儲存格(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");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private 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")
$vbLabelText   $csharpLabel

當目標範圍過小時會發生什麼情況?

IronXL自動處理大小差異:

  • 目標參數僅指定左上角的開始儲存格
  • 整個來源範圍被複製,不論目標大小為何
  • 目的地區域中的現有資料將被覆蓋
  • 複製操作會展開以適應所有來源資料

例如,將3x3範圍複製到儲存格B1:D3,覆蓋任何現有內容。

行和列參考如何運作?

IronXL使用零起始索引來處理帶有GetColumn()方法的行和列:

  • GetColumn(0)指的是列A
  • GetColumn(1)指的是列B
  • GetRow(0)指的是行1
  • GetRow(3)指的是行4

這種索引方式與標準C#陣列約定一致。

為什麼要使用GetRow()方法?

GetRow()方法提供:

  • 性能:在整行或整列上更高效
  • 清晰度:使程式碼意圖更明確
  • 靈活性:返回支援所有範圍操作的Range物件
  • 便利性:不需要為完整選擇計算結束儲存格

這些方法在建立需要完整欄位複製的報告或複製列模板時表現卓越。

Excel複製操作顯示箭頭從來源範圍A1:F10指向包含已複製資料的目標儲存格

如何在不同工作表間複製儲存格?

第一個參數接受工作表物件,從而啟用跨不同工作表的複製和黏貼。 將不同的工作表物件作為第一個參數傳遞。 在管理多個工作表或從詳細資料中建立摘要表時,此功能證明了它的必要性。

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("sample.xlsx");
WorkSheet workSheet = workBook.GetWorkSheet("Sheet1");

// Copy cell content
workSheet["A1"].Copy(workBook.GetWorkSheet("Sheet2"), "B3");

workBook.SaveAs("copyAcrossWorksheet.xlsx");
Imports IronXL

Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.GetWorkSheet("Sheet1")

' Copy cell content
workSheet("A1").Copy(workBook.GetWorkSheet("Sheet2"), "B3")

workBook.SaveAs("copyAcrossWorksheet.xlsx")
$vbLabelText   $csharpLabel

常見的跨工作表複製場景有哪些?

跨工作表複製經常用於這些場景:

  1. 建立摘要表:將詳細表中的關鍵指標複製到儀錶板
  2. 模板複製:將格式化的模板複製到新工作表
  3. 資料整合:將部門表中的資料彙集到主表中
  4. 報表生成:將篩選結果複製到單獨的報表工作表中
  5. 備份操作:將關鍵資料複製到備份表中

在處理引用其他儲存格的公式時,IronXL會根據新位置自動調整相對引用,同時保持絕對引用。

何時應該將複製到新工作表與現有工作表?

在以下情況下複製到新工作表時:

  • 建立定期報告(每日、每週、每月)
  • 將處理資料與原始資料隔離
  • 從來源資料建立分析工作表
  • 生成使用者特定資料視圖

在以下情況下複製到現有工作表時:

  • 將資料附加到正在進行的日誌中
  • 更新儀表板欄位
  • 整合多個資料源
  • 維持歷史記錄

對於涉及多個窗口的複雜場景,考慮使用IronXL的功能處理DataSet和DataTable以進行複雜的資料操作。

如何處理工作表命名衝突?

在工作表之間複製時確保適當的工作表管理:

:path=/static-assets/excel/content-code-examples/how-to/copy-cells-5.cs
// 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");
Option Strict On



' 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")
$vbLabelText   $csharpLabel

這種方法防止運行時錯誤,並確保成功的複製操作,尤其是在生產環境中自動化Excel流程時至關重要。

常見問題

如何在Excel中使用C#複製單個單元格?

使用IronXL,您可以使用Copy方法複製單個單元格。只需選擇您想要複製的單元格(例如,workSheet["A1"]),然後調用Copy方法,將目標工作表和目標單元格地址作為參數傳遞。IronXL在複製操作中保持所有格式,包括字體、顏色、邊框和公式。

在複製單元格時保留哪些格式?

IronXL的Copy方法保留所有單元格屬性,包括單元格值和公式、數字格式(貨幣、百分比、日期)、字體樣式(字型、大小、粗體、斜體、顏色)、單元格邊框和背景顏色、文字對齊(水平和垂直)、以及單元格保護設置。這確保複製後的單元格保持其原始外觀和功能。

我可以一次複製整個列或範圍嗎?

是的,IronXL允許您在一次操作中複製整個列、行或範圍。您可以使用類似GetColumn(0).Copy()的方法來複製整個列,或者選擇一個單元格範圍一次性複製多個單元格。Copy方法可以處理任何選擇大小,從單個單元格到整個工作表。

如何在不同工作表之間複製單元格?

IronXL使得在工作表之間複製單元格變得簡單。在使用Copy方法時,指定目標工作表為第一個參數(例如,workBook.GetWorkSheet("Sheet2")),而目標單元格地址作為第二個參數。這允許您在同一工作簿的不同工作表之間複製資料。

在Excel中複製單元格需要哪些最少步驟?

使用IronXL,複製單元格只需5個步驟:1) 下載IronXL C#程式庫,2) 載入現有的Excel電子表格,3) 選擇您想要複製的範圍、行或列,4) 在選定的範圍上調用Copy方法,5) 將目標工作表和位置傳遞給Copy方法。整個操作可以在單行程式碼中完成。

Curtis Chau
技術作家

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。

除了開發,Curtis對物聯網(IoT)有濃厚的興趣,探索創新的方法來整合硬體和軟體。在空閒時間,他喜歡玩遊戲和建立Discord機器人,結合他對技術的熱愛與創造力。

準備好開始了嗎?
Nuget 下載 2,134,203 | 版本: 2026.7 剛剛發布
Still Scrolling Icon

仍在滾動嗎?

想要快速證明嗎? PM > Install-Package IronXL.Excel
運行一個範例 觀看您的資料成為試算表。