如何使用IronXL在C#中複製儲存格
IronXL透過單一Copy方法可在Excel試算表中複製儲存格、範圍、列或欄,並在不同位置或工作表間複製資料時保留所有格式和樣式。
"複製儲存格"功能會複製儲存格內容並貼上到其他儲存格中。 它會在工作表內複製資料、公式、格式和其他屬性。 無論是從頭開始建立試算表還是載入現有的Excel文件,複製功能對於高效資料操作是必不可少的。
快速入門:一行程式碼複製一欄或範圍使用一個方法呼叫從一個工作表到另一個工作表複製整個範圍-單個儲存格、列、欄或區塊。 Copy功能在使Excel自動化快速簡單的同時,保留樣式和格式。
-
1Install IronXL with NuGet Package Manager
-
2複製並運行這段程式碼片段。
workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1");workSheet.GetColumn(0).Copy(workBook.GetWorkSheet("Sheet1"), "H1") -
3部署以在您的實時環境中測試
今天就開始在您的專案中使用IronXL,透過免費試用
最小化工作流程(5步)
- 下載用於複製儲存格的C#程式庫
- 載入現有的Excel電子表格
- 選擇您想要複製的範圍、列或欄
- 在選定的範圍上調用
Copy方法 - 將目標工作表和位置傳遞給
Copy方法
如何在Excel中複製單個儲存格?
要複製選定儲存格的內容,請使用Copy方法。 將工作表物件作為第一個參數傳遞,並將起始位置作為第二個參數傳遞。 Copy方法保留所有樣式,包括字體和大小、背景圖案和顏色以及邊框和對齊。
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")複製時保留了哪些格式?
Copy方法保留了所有儲存格屬性,包括:
Cell值和公式- 數字格式(貨幣、百分比、日期)
- 字體樣式(字型、大小、粗體、斜體、顏色)
- 儲存格邊框和背景顏色
- 文字對齊(水平和垂直)
- 儲存格保護設置
這種全面的保留確保了複製的儲存格維持其原始外觀和功能,類似於在Microsoft Excel中使用Ctrl+C和Ctrl+V。

為什麼複製方法需要兩個參數?
Copy方法需要兩個參數以便精確控制:
- 工作表參數:指定目標工作表(相同工作簿中相同或不同)
- 地址參數:定義要貼上內容的開始儲存格位置
這種設計允許在同一工作表或不同工作表之間靈活地進行複製,非常適合建立摘要報告或整合多個來源的資料。
什麼時候應該使用單個儲存格複製與範圍複製?
在以下情況下選擇單個儲存格複製:
- 複製單個值或公式
- 複製標題儲存格或標籤
- 複製特定計算結果
- 處理摘要值
在以下情況下使用範圍複製:
- 移動整個資料表
- 複製多個相關的儲存格
- 複製整行或整列
- 保留資料關係
如何複製多個儲存格或範圍?
與Range類中使用,允許在任何範圍大小上執行。 在選擇範圍時,IronXL提供了靈活的複製選項:
-
複製單個儲存格(
C10):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") -
複製一行(
4):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")
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")當目標範圍過小時會發生什麼情況?
IronXL自動處理大小差異:
- 目標參數僅指定左上角的開始儲存格
- 整個來源範圍被複製,不論目標大小為何
- 目的地區域中的現有資料將被覆蓋
- 複製操作會展開以適應所有來源資料
例如,將3x3範圍複製到儲存格B1:D3,覆蓋任何現有內容。
行和列參考如何運作?
IronXL使用零起始索引來處理帶有GetColumn()方法的行和列:
GetColumn(0)指的是列AGetColumn(1)指的是列BGetRow(0)指的是行1GetRow(3)指的是行4
這種索引方式與標準C#陣列約定一致。
為什麼要使用GetRow()方法?
GetRow()方法提供:
- 性能:在整行或整列上更高效
- 清晰度:使程式碼意圖更明確
- 靈活性:返回支援所有範圍操作的
Range物件 - 便利性:不需要為完整選擇計算結束儲存格
這些方法在建立需要完整欄位複製的報告或複製列模板時表現卓越。

如何在不同工作表間複製儲存格?
第一個參數接受工作表物件,從而啟用跨不同工作表的複製和黏貼。 將不同的工作表物件作為第一個參數傳遞。 在管理多個工作表或從詳細資料中建立摘要表時,此功能證明了它的必要性。
workBook.GetWorksheet("Sheet2")
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")常見的跨工作表複製場景有哪些?
跨工作表複製經常用於這些場景:
- 建立摘要表:將詳細表中的關鍵指標複製到儀錶板
- 模板複製:將格式化的模板複製到新工作表
- 資料整合:將部門表中的資料彙集到主表中
- 報表生成:將篩選結果複製到單獨的報表工作表中
- 備份操作:將關鍵資料複製到備份表中
在處理引用其他儲存格的公式時,IronXL會根據新位置自動調整相對引用,同時保持絕對引用。
何時應該將複製到新工作表與現有工作表?
在以下情況下複製到新工作表時:
- 建立定期報告(每日、每週、每月)
- 將處理資料與原始資料隔離
- 從來源資料建立分析工作表
- 生成使用者特定資料視圖
在以下情況下複製到現有工作表時:
- 將資料附加到正在進行的日誌中
- 更新儀表板欄位
- 整合多個資料源
- 維持歷史記錄
對於涉及多個窗口的複雜場景,考慮使用IronXL的功能處理DataSet和DataTable以進行複雜的資料操作。
如何處理工作表命名衝突?
在工作表之間複製時確保適當的工作表管理:
// 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
Option Infer 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")這種方法防止運行時錯誤,並確保成功的複製操作,尤其是在生產環境中自動化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方法。整個操作可以在單行程式碼中完成。
What happens if the destination range is smaller than the source when copying cells with IronXL?
When the destination range is smaller, IronXL's `Copy` function still accommodates the full source range by overwriting any existing data in the destination area, expanding as needed to fit all copied data.
Why might I choose to copy to a new worksheet rather than an existing one?
Copying to a new worksheet is recommended for creating periodic reports, isolating processed data, building analysis sheets, and generating user-specific views. This ensures data separation and clarity in reporting.
How do row and column references work in IronXL?
IronXL uses zero-based indexing where `GetColumn(0)` refers to column A, and `GetRow(0)` refers to row 1. This aligns with C# array conventions, making it intuitive for developers familiar with standard C# practices.
What are common scenarios for cross-worksheet copying with IronXL?
Cross-worksheet copying in IronXL is commonly used for creating summary sheets, replicating templates to new sheets, consolidating data from multiple sources, generating reports, and performing backup operations of critical data.
How does IronXL handle worksheet naming conflicts during copy operations?
IronXL manages worksheet naming conflicts by allowing you to check for and create target sheets if they don't exist, ensuring safe copy operations without runtime errors, which is crucial for automating Excel processes.

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