C#でExcelワークシートを管理する方法

相互運用なしで C#35 でワークシートを管理する方法

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

IronXLはOffice Interopを使わずにC#でワークシート管理を可能にし、簡単なメソッド呼び出しでワークシートの作成、削除、移動、コピーを可能にします。 このライブラリは、Excelのワークシート操作をプログラムで完全に制御しながら、Interopの依存関係を排除します。

クイックスタート:新しいワークシートを即座に追加

この例では、C#でExcelのワークブックを管理するために、IronXLを使った新しいワークシートの作成を、定型文やInteropを使わずにたった1行で実演しています。

  1. IronXL をNuGetパッケージマネージャでインストール

    PM > Install-Package IronXL.Excel
  2. このコード スニペットをコピーして実行します。

    IronXl.WorkBook wb = IronXl.WorkBook.Create(ExcelFileFormat.XLSX).CreateWorkSheet("NewSheet");
  3. 実際の環境でテストするためにデプロイする

    今日プロジェクトで IronXL を使い始めましょう無料トライアル

    arrow pointer

ワークシート管理に不可欠な作業とは

ワークシートを管理するには、ワークシートの作成、移動、削除が必要です。 IronXLは1行のコードでそれぞれの動作を実現します。 従来のC# Excel Interopアプローチとは異なり、IronXLはCOMオブジェクトの管理や明示的なリソースのクリーンアップを必要としない、よりクリーンなAPIを提供します。

ご注意以下に言及されたすべてのインデックス位置はゼロベースインデックスです

なぜゼロベース インデックスはワークシート操作に重要なのですか

ゼロベースのインデックスとは、最初のワークシートが1ではなく0の位置にあることを意味します。この慣例は、C#の配列やコレクションのインデックスと一致しており、開発者にとって直感的です。 複数のワークシートを管理する場合、これを覚えておくと、間違ったワークシートを操作したり、境界外の例外に遭遇したりする可能性のある1つ1つのエラーを防ぐことができます。

それぞれのワークシート管理方法はいつ使うべきですか?

異なるシナリオでは、異なるワークシート操作が求められます。 レポートの作成やデータのカテゴリ別整理を行う際は、を使用してください。 データの提示における論理的な流れを確立する際は、を適用してください。 `` メソッドは、一時的なワークシートを整理したり、データを統合したりするのに役立ちます。 それぞれのメソッドを使用するタイミングを理解することで、ワークブックの構成とユーザーエクスペリエンスが向上します。

複数のワークシートを管理するときによくある落とし穴とは

よくある間違いとしては、すべてのワークシートを削除しようとすること(Excelでは少なくとも1つは必要)、ワークシートを作成するときに重複した名前を使用すること、操作後に変更を保存することを忘れることなどが挙げられます。 さらに、既存のスプレッドシートをロードするときは、実行時の例外を避けるために、操作を実行する前に必ずワークシートの存在を確認してください。

新しいワークシートを作成するには?

`` メソッドは、新しいワークシートを作成します。 これにはワークシート名が唯一のパラメーターとして必要です。 このメソッドは、作成されたワークシートオブジェクトを返すので、作成直後にセルのマージなどの追加操作を行うことができます。

重複したワークシート名を使用するとどうなりますか?

すでに存在する名前でワークシートを作成しようとすると、IronXLは自動的に数字を付加してユニークな名前にします。 たとえば、"Sheet1"がすでに存在するにもかかわらず、"Sheet1"を作成すると、"Sheet1_1"となります。 この自動リネームにより、コンフリクトを防ぎ、例外を発生させることなくコードを実行し続けることができます。

ワークシートを作成した後、どのように操作を連鎖させることができますか?

WorkSheetオブジェクトを返すため、操作を連鎖させて効率的なコーディングが可能です。 この流暢なインターフェイス パターンを使用すると、ワークシートを作成して、セルの値の設定、書式の適用、範囲の操作などのアクションをすぐに実行できます。 以下は例です:

// Create and immediately populate a worksheet
WorkSheet newSheet = workBook.CreateWorkSheet("Sales Data")
    .SetCellValue("A1", "Product")
    .SetCellValue("B1", "Revenue");

// Apply formatting
newSheet["A1:B1"].Style.Font.Bold = true;
newSheet["A1:B1"].Style.BackgroundColor = "#4472C4";
// Create and immediately populate a worksheet
WorkSheet newSheet = workBook.CreateWorkSheet("Sales Data")
    .SetCellValue("A1", "Product")
    .SetCellValue("B1", "Revenue");

// Apply formatting
newSheet["A1:B1"].Style.Font.Bold = true;
newSheet["A1:B1"].Style.BackgroundColor = "#4472C4";
' Create and immediately populate a worksheet
Dim newSheet As WorkSheet = workBook.CreateWorkSheet("Sales Data") _
    .SetCellValue("A1", "Product") _
    .SetCellValue("B1", "Revenue")

' Apply formatting
newSheet("A1:B1").Style.Font.Bold = True
newSheet("A1:B1").Style.BackgroundColor = "#4472C4"
$vbLabelText   $csharpLabel

ワークシートの命名規則は何ですか?

Excelワークシート名は1~31文字で、以下の文字は使用できません:\ / ? * [ ]。 また、空白やスペースだけの名前は使用できません。 IronXLは自動的に名前を検証し、無効な文字が検出された場合は例外を発生させ、Excelとの互換性を維持します。

:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-create-worksheet.cs
using IronXL;

// Create new Excel spreadsheet
WorkBook workBook = WorkBook.Create(ExcelFileFormat.XLSX);

// Create worksheets
WorkSheet workSheet1 = workBook.CreateWorkSheet("workSheet1");
WorkSheet workSheet2 = workBook.CreateWorkSheet("workSheet2");
WorkSheet workSheet3 = workBook.CreateWorkSheet("workSheet3");
WorkSheet workSheet4 = workBook.CreateWorkSheet("workSheet4");


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

' Create new Excel spreadsheet
Private workBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)

' Create worksheets
Private workSheet1 As WorkSheet = workBook.CreateWorkSheet("workSheet1")
Private workSheet2 As WorkSheet = workBook.CreateWorkSheet("workSheet2")
Private workSheet3 As WorkSheet = workBook.CreateWorkSheet("workSheet3")
Private workSheet4 As WorkSheet = workBook.CreateWorkSheet("workSheet4")


workBook.SaveAs("createNewWorkSheets.xlsx")
$vbLabelText   $csharpLabel
新しいワークシートを作成するためのプラスボタンがあるworkSheet1-4を示すExcelワークシートタブ

ワークシートの位置を変更するには?

メソッドは、ワークシートの位置を変更します。 これには2つのパラメータが必要です。1つは形式のインデックス位置です。

なぜワークシートを並べ替える必要があるのでしょうか

ワークシートの順序を変更することで、論理的なデータフローを作成し、ナビゲーションを改善します。 財務報告書の場合、最初にサマリーシートを配置し、次に詳細な内訳を配置することがあります。 プロジェクト追跡ワークブックでは、シートを時系列または部署別に整理することで、ユーザーが情報をすばやく見つけることができます。 この構成は、ビジネス用のプロフェッショナルなスプレッドシートを作成するときに重要になります。

ポジションを変更すると、他のワークシートはどうなりますか?

ワークシートを移動すると、IronXLは自動的に他のワークシートの位置を調整し、連続性を維持します。 ワークシートを3の位置から0の位置に移動すると、0、1、2の位置のワークシートが右に1つ移動します。 この自動索引付けにより、ワークシートの順序にずれが生じません。

ワークシートを先頭または末尾に移動するには?

先頭への移動は簡単で、位置0を使用します。末尾への移動は、ワークブックのワークシート数から1を引いた値を使用します。以下は実際の例です:

// Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0);

// Move worksheet to the end
int lastPosition = workBook.WorkSheets.Count - 1;
workBook.SetSheetPosition("ArchiveSheet", lastPosition);
// Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0);

// Move worksheet to the end
int lastPosition = workBook.WorkSheets.Count - 1;
workBook.SetSheetPosition("ArchiveSheet", lastPosition);
' Move worksheet to the beginning
workBook.SetSheetPosition("ImportantSheet", 0)

' Move worksheet to the end
Dim lastPosition As Integer = workBook.WorkSheets.Count - 1
workBook.SetSheetPosition("ArchiveSheet", lastPosition)
$vbLabelText   $csharpLabel
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-set-sheet-position.cs
using IronXL;

WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");

// Set worksheet position
workBook.SetSheetPosition("workSheet2", 0);

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

Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")

' Set worksheet position
workBook.SetSheetPosition("workSheet2", 0)

workBook.SaveAs("setWorksheetPosition.xlsx")
$vbLabelText   $csharpLabel
Excelのワークシートのタブで、workSheet1が4つのタブの中で1番目から3番目に移動していることを示しています。

どのようにアクティブなワークシートを設定しますか?

アクティブなワークシートの設定は、Excelや他の視覚化ツールでワークブックを最初に開いたときに、デフォルトで開くワークシートを指定します。 ワークシートのインデックス位置を指定して、`` メソッドを使用してください。

なぜアクティブなワークシートの設定が重要なのですか

アクティブなワークシートは、ユーザーがワークブックを開いたときに最初に表示されるものを決定します。 ダッシュボード、レポート、データ入力フォームでは、この第一印象が重要です。 適切なアクティブワークシートを設定することで、ユーザーを最も関連性の高い情報に即座に誘導し、ユーザビリティを向上させ、複数シートのワークブックにおける混乱を軽減します。

アクティブなワークシートと選択されたワークシートの違いは何ですか?

アクティブなワークシートは、現在表示されており、対話が可能な状態です。 選択されたワークシートは、書式設定や削除などのグループ操作のために選択された複数のシートとすることができます。 IronXLの``は、ファイルを開いた際にどのワークシートを表示するかを具体的に制御しますが、バッチ処理を行う際のワークシートの選択は他のメソッドを通じて行われます。

どのワークシートが現在アクティブかを判断するには?

IronXLは現在アクティブなワークシートを識別するプロパティを提供します。 これは、操作の前にアクティブな状態を保持したり、どのワークシートが表示されるかを検証したりする必要がある場合に便利です。 Excelファイルを読むときにこの情報を使用して、ワークブックのデフォルトのビューを理解することもできます:

// Get the currently active worksheet index
int activeIndex = workBook.ActiveSheetIndex;

// Get the active worksheet object
WorkSheet activeSheet = workBook.WorkSheets[activeIndex];
Console.WriteLine($"Active worksheet: {activeSheet.Name}");
// Get the currently active worksheet index
int activeIndex = workBook.ActiveSheetIndex;

// Get the active worksheet object
WorkSheet activeSheet = workBook.WorkSheets[activeIndex];
Console.WriteLine($"Active worksheet: {activeSheet.Name}");
' Get the currently active worksheet index
Dim activeIndex As Integer = workBook.ActiveSheetIndex

' Get the active worksheet object
Dim activeSheet As WorkSheet = workBook.WorkSheets(activeIndex)
Console.WriteLine($"Active worksheet: {activeSheet.Name}")
$vbLabelText   $csharpLabel
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-set-active-tab.cs
using IronXL;

WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");

// Set active for workSheet3
workBook.SetActiveTab(2);

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

Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")

' Set active for workSheet3
workBook.SetActiveTab(2)

workBook.SaveAs("setActiveTab.xlsx")
$vbLabelText   $csharpLabel
workSheet1がアクティブなExcelワークシートのタブが、workSheet3がアクティブな状態に変化する前と後の比較。

ワークシートを削除するにはどうすればよいですか?

ワークシートのインデックス位置を指定して、`` メソッドを使用してワークシートを削除します。 ポジションが不明な場合は、代わりにワークシート名を使用してください。

最後のワークシートを削除しようとするとどうなりますか?

Excelでは、ワークブックの中に少なくとも1つのワークシートが必要です。 最後に残ったワークシートを削除しようとすると、IronXLはExcelファイルの整合性を保つために例外をスローします。 削除する前に必ずワークシート数をチェックするか、削除コードを適切なエラー処理でラップしてください:

// Safe worksheet removal with validation
if (workBook.WorkSheets.Count > 1)
{
    workBook.RemoveWorkSheet("TempSheet");
}
else
{
    Console.WriteLine("Cannot remove the last worksheet");
}
// Safe worksheet removal with validation
if (workBook.WorkSheets.Count > 1)
{
    workBook.RemoveWorkSheet("TempSheet");
}
else
{
    Console.WriteLine("Cannot remove the last worksheet");
}
' Safe worksheet removal with validation
If workBook.WorkSheets.Count > 1 Then
    workBook.RemoveWorkSheet("TempSheet")
Else
    Console.WriteLine("Cannot remove the last worksheet")
End If
$vbLabelText   $csharpLabel

複数のワークシートを効率的に削除するには?

複数のワークシートを削除する場合は、インデックスのずれの問題を避けるために、最も高いインデックスから逆算してください。 または、最初にワークシート名を収集し、次に名前で削除します。 このアプローチは、一時的なワークシートのクリーンアップやデータの統合に特に役立ちます:

// Remove multiple worksheets by collecting names first
var sheetsToRemove = workBook.WorkSheets
    .Where(ws => ws.Name.StartsWith("Temp_"))
    .Select(ws => ws.Name)
    .ToList();

foreach (var sheetName in sheetsToRemove)
{
    workBook.RemoveWorkSheet(sheetName);
}
// Remove multiple worksheets by collecting names first
var sheetsToRemove = workBook.WorkSheets
    .Where(ws => ws.Name.StartsWith("Temp_"))
    .Select(ws => ws.Name)
    .ToList();

foreach (var sheetName in sheetsToRemove)
{
    workBook.RemoveWorkSheet(sheetName);
}
Imports System.Linq

' Remove multiple worksheets by collecting names first
Dim sheetsToRemove = workBook.WorkSheets _
    .Where(Function(ws) ws.Name.StartsWith("Temp_")) _
    .Select(Function(ws) ws.Name) _
    .ToList()

For Each sheetName In sheetsToRemove
    workBook.RemoveWorkSheet(sheetName)
Next
$vbLabelText   $csharpLabel

ワークシートを削除する前の安全確認は何ですか

ワークシートを削除する前に、重要なデータ、他のシートから参照される数式、またはワークブックの他の部分が依存している 名前付き範囲 が含まれていないことを確認してください。 データ復旧のため、削除する前にバックアップを作成するか、ワークシートをコピーすることを検討してください。

:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-remove-worksheet.cs
using IronXL;

WorkBook workBook = WorkBook.Load("createNewWorkSheets.xlsx");

// Remove workSheet1
workBook.RemoveWorkSheet(1);

// Remove workSheet2
workBook.RemoveWorkSheet("workSheet2");

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

Private workBook As WorkBook = WorkBook.Load("createNewWorkSheets.xlsx")

' Remove workSheet1
workBook.RemoveWorkSheet(1)

' Remove workSheet2
workBook.RemoveWorkSheet("workSheet2")

workBook.SaveAs("removeWorksheet.xlsx")
$vbLabelText   $csharpLabel
ワークシートの削除を示すExcelのビフォーアフタースクリーンショット - 4つのタブが2つのタブに減少

ワークシートをコピーまたは複製するにはどうすればよいですか?

同じワークブック内または異なるワークブック間でワークシートをコピーします。 同じワークブック内で複製するには、メソッドを使用します。 別のワークブックにコピーするには、 メソッドを使用します。

いつワークブック内とワークブック間でコピーすべきですか?

テンプレート、バックアップシート、または既存のデータレイアウトのバリエーションを作成する場合は、同じワークブック内でコピーしてください。 クロスワークブックコピーは、複数のソースからのデータを統合したり、異なる部門から標準化されたレポートを作成したり、個々の貢献からマスターワークブックを構築したりする場合に優れています。 機密データについては、コピー後にバックアップを作成するか、ワークブックをパスワードで保護することを検討してください。

ワークシートを複製すると何がコピーされますか?

IronXLのワークシートコピーは、セルの値、数式、書式、マージされたセル、列の幅、行の高さ、データ検証ルールなど、すべての重要な要素を保持します。 図表、画像、その他の埋め込みオブジェクトもコピーされます。 この包括的な複製は、コピーしたワークシートがオリジナルに完全に忠実であることを保証し、テンプレートやアーカイブコピーの作成に最適です。

コピーするときに数式参照をどのように扱えばよいですか?

ワークシートをコピーすると、相対数式参照が新しいワークシートのコンテキストに自動的に調整されます。 ただし、絶対参照とクロスシート参照には注意が必要です。 コピー後、他のワークシートを参照している数式が正しいデータソースを指していることを確認します。 ここでは、一般的なシナリオの処理方法について説明します:

// Example: Copying a worksheet and updating formula references
WorkSheet original = workBook.GetWorkSheet("Original");
WorkSheet copied = original.CopySheet("Duplicate");

// Update formulas that need to reference the new sheet
foreach (var cell in copied["A1:Z100"])
{
    if (cell.IsFormula)
    {
        // Replace references as needed
        string formula = cell.Formula;
        // Update formula logic here based on your needs
    }
}
// Example: Copying a worksheet and updating formula references
WorkSheet original = workBook.GetWorkSheet("Original");
WorkSheet copied = original.CopySheet("Duplicate");

// Update formulas that need to reference the new sheet
foreach (var cell in copied["A1:Z100"])
{
    if (cell.IsFormula)
    {
        // Replace references as needed
        string formula = cell.Formula;
        // Update formula logic here based on your needs
    }
}
Imports System

' Example: Copying a worksheet and updating formula references
Dim original As WorkSheet = workBook.GetWorkSheet("Original")
Dim copied As WorkSheet = original.CopySheet("Duplicate")

' Update formulas that need to reference the new sheet
For Each cell In copied("A1:Z100")
    If cell.IsFormula Then
        ' Replace references as needed
        Dim formula As String = cell.Formula
        ' Update formula logic here based on your needs
    End If
Next
$vbLabelText   $csharpLabel
:path=/static-assets/excel/content-code-examples/how-to/manage-worksheet-copy-worksheet.cs
using IronXL;

WorkBook firstBook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkBook secondBook = WorkBook.Create();

// Select first worksheet in the workbook
WorkSheet workSheet = firstBook.DefaultWorkSheet;

// Duplicate the worksheet to the same workbook
workSheet.CopySheet("Copied Sheet");

// Duplicate the worksheet to another workbook with the specified name
workSheet.CopyTo(secondBook, "Copied Sheet");

firstBook.SaveAs("firstWorksheet.xlsx");
secondBook.SaveAs("secondWorksheet.xlsx");
Imports IronXL

Dim firstBook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim secondBook As WorkBook = WorkBook.Create()

' Select first worksheet in the workbook
Dim workSheet As WorkSheet = firstBook.DefaultWorkSheet

' Duplicate the worksheet to the same workbook
workSheet.CopySheet("Copied Sheet")

' Duplicate the worksheet to another workbook with the specified name
workSheet.CopyTo(secondBook, "Copied Sheet")

firstBook.SaveAs("firstWorksheet.xlsx")
secondBook.SaveAs("secondWorksheet.xlsx")
$vbLabelText   $csharpLabel
Excel worksheet tabs showing original 'Sheet1' and newly created 'Copied Sheet' after worksheet duplication
Excel worksheet tab showing 'Copied Sheet' name with navigation controls and status bar

よくある質問

C#でExcelファイルに新しいワークシートを追加するには?

IronXLはたった1行のコードで新しいワークシートを追加するシンプルなCreateWorksheetメソッドを提供します。Office Interopとは異なり、COMオブジェクトを管理したり、複雑なリソースのクリーンアップを処理したりする必要はありません。必要なシート名を指定してCreateWorksheetを呼び出すだけです。

ワークシートのゼロベース・インデックスとワンベース・インデックスの違いは何ですか?

IronXLはゼロベースのインデックスを使用し、最初のワークシートは1ではなく0に位置します。これはC#の標準的なコレクションインデックスと一致し、SetSheetPositionのようなメソッドを使ってワークシートを並べ替えるときに1つ違いによるエラーを防ぐのに役立ちます。

Excelがインストールされていなくても、プログラムでワークシートを並べ替えることはできますか?

はい。IronXLのSetSheetPositionメソッドを使えば、Excelをインストールすることなくワークシートの並び替えができます。このメソッドは単純なインデックス値を使ってワークシートをワークブックの任意の位置に移動させるので、Office Interopの依存関係は不要です。

エクセルのワークブックからワークシートを削除する方法を教えてください。

プログラムでワークシートを削除するには、IronXLのRemoveWorksheetメソッドを使用します。このメソッドにはワークシート名かインデックスの位置を指定します。Excelでは少なくとも1つのワークシートが必要なので、IronXL.Excelは最後に残ったシートを削除しないようにする。

重複した名前でワークシートを作成しようとするとどうなりますか?

すでにワークブックに存在する名前でワークシートを作成しようとすると、IronXLは例外をスローします。CreateWorksheetメソッドを呼び出す際には、必ず既存のワークシート名を確認するか、独自の命名規則を使用してください。

Excelファイルを開いたときにどのワークシートが表示されるかを設定するにはどうすればよいですか?

IronXLのSetActiveTabメソッドはExcelファイルを開いたときにどのワークシートがアクティブになるかを制御します。このメソッドにワークシートのインデックスか参照を渡すだけで、ワークブックを開いたときに最初に表示されるシートがそのシートになります。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。

準備はできましたか?
Nuget ダウンロード 2,052,917 | バージョン: 2026.6 just released
Still Scrolling Icon

まだスクロールしていますか?

すぐに証拠が欲しいですか? PM > Install-Package IronXL.Excel
サンプルを実行する あなたのデータがスプレッドシートになるのを見る。