C#でExcelセルをコピーする方法: xlsxファイル対応 Excel操作 C# ガイド
IronXLはxlsxファイルのExcelスプレッドシートのセル、範囲、行、列を単一のCopyメソッドでコピーすることができます。 スプレッドシート作成においてデータや書式を効率的に複製するExcel操作 C# の基本機能です。
セルのコピー"機能は、セルの内容を複製し、他のセルに貼り付けます。 ワークシート内のデータ、数式、書式、その他の属性を複製します。 Whether creating spreadsheets from scratch or loading existing Excel files, the copy functionality is essential for efficient data manipulation.
クイックスタート: 1行で列または範囲をコピー
単一のセル、行、列、またはブロックなどの範囲全体を、1つのメソッド呼び出しでシートから別のシートにコピーします。 Copy 関数は、Excel の自動化を迅速かつシンプルにする一方で、スタイルと書式を保持します。
最小限のワークフロー(5ステップ)
- セルをコピーするためのC#ライブラリをダウンロードする
- 既存のExcelスプレッドシートをロードする
- コピーしたい範囲、行、または列を選択してください
- Invoke the `Copy` method on the selected range
- Pass a destination worksheet and position to the `Copy` method
Excelで1つのセルをコピーするには?
選択したセルの内容をコピーするには、Copyメソッドを使用します。 ワークシートオブジェクトを最初のパラメーターとして渡し、開始位置を2番目のパラメーターとして渡します。 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 メソッドは、以下のようなすべてのセル プロパティを保持します:
セルの値と数式- 数値フォーマット(通貨、パーセンテージ、日付)
- フォントスタイリング(書体、サイズ、太字、斜体、色)
- セルの枠線と背景色
- テキストアライメント(水平および垂直)
- セル保護設定
この包括的な保存により、Microsoft ExcelでC#とCtrl+Vを使用するのと同様に、コピーされたセルが元の外観と機能を維持することが保証されます。
なぜコピー メソッドは 2 つのパラメータを取るのですか
Copyメソッドは、正確な制御のために2つのパラメータを必要とします:
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:
-
1つのセル(
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 -
2次元の範囲(
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")
一般的なクロスワークシートコピーシナリオとは
このようなシナリオでは、ワークシート間のコピーが頻繁に使用されます:
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 で 1 つのセルをコピーするにはどうすればよいですか?
IronXLではCopyメソッドを使って一つのセルをコピーすることができます。コピーしたいセル(例えばworkSheet["A1"])を選択し、コピー先のワークシートとコピー先のセルアドレスをパラメータとしてCopyメソッドを呼び出すだけです。IronXLはコピー操作の間、フォント、色、枠線、数式を含むすべての書式を保持します。
セルをコピーする際、どのような書式が保持されますか?
IronXLのコピーメソッドは、セルの値や数式、数値フォーマット(通貨、パーセンテージ、日付)、フォントスタイル(書体、サイズ、太字、斜体、色)、セルの境界線と背景色、テキストの配置(水平方向と垂直方向)、セルの保護設定を含むすべてのセルプロパティを保持します。これにより、コピーされたセルは元の外観と機能を維持します。
列や範囲全体を一度にコピーできますか?
はい、IronXLでは一回の操作で列、行、範囲全体をコピーすることができます。GetColumn(0).Copy()のようなメソッドを使って列全体をコピーしたり、セル範囲を選択して複数のセルを一度にコピーすることができます。Copy メソッドは、単一のセルからワークシート全体まで、どのような選択サイズでも動作します。
異なるワークシート間でセルをコピーする方法を教えてください。
IronXLではワークシート間のセルのコピーが簡単にできます。Copyメソッドを使用する場合、最初のパラメータとしてコピー先のワークシートを指定し(例えば、workBook.GetWorkSheet("Sheet2"))、2番目のパラメータとしてコピー先のセル・アドレスを指定します。これにより、同じワークブック内の異なるシート間でデータをコピーできます。
Excelでセルをコピーするために最低限必要な手順は何ですか?
IronXLを使えば、セルのコピーはわずか5ステップで完了します:1) IronXL C#ライブラリをダウンロードする、2) 既存のExcelスプレッドシートを読み込む、3) コピーしたい範囲、行、列を選択する、4) 選択した範囲でCopyメソッドを呼び出す、5) コピー先のワークシートと位置をCopyメソッドに渡す。すべての操作は、1行のコードで行うことができます。

