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の依存関係を排除します。

Quickstart: 新しいワークシートを即座に追加

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

Nuget Icon今すぐ NuGet で PDF を作成してみましょう:

  1. NuGet パッケージ マネージャーを使用して IronXL をインストールします

    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を提供します。

BRACKET-i-OPEN--以下のすべてのインデックス位置は、ゼロベースのインデックスに従います--BRACKET-CLOSE--。

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

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

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

異なるシナリオでは、異なるワークシート操作が求められます。 Use CreateWorksheet when generating reports or organizing data by categories. Apply SetSheetPosition when establishing logical flow for data presentation. The RemoveWorksheet method helps clean up temporary worksheets or consolidate data. それぞれのメソッドを使用するタイミングを理解することで、ワークブックの構成とユーザーエクスペリエンスが向上します。

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

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

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

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

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

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

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

CreateWorksheetは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";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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
Excel ワークシートのタブに workSheet1-4 と新しいワークシートを作成するための Plus ボタンが表示されています.

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

SetSheetPositionメソッドは、ワークシートの位置を変更します。 このメソッドには2つのパラメータが必要です: ワークシート名をStringとして、インデックス位置をIntegerとして。

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

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

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

ワークシートを移動すると、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);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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や他の視覚化ツールでワークブックを最初に開いたときに、デフォルトで開くワークシートを指定します。 ワークシートのインデックス位置でSetActiveTabメソッドを使用してください。

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

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

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

アクティブなワークシートは、現在表示されており、対話が可能な状態です。 選択されたワークシートは、書式設定や削除などのグループ操作のために選択された複数のシートとすることができます。 IronXLのSetActiveTabは特に、ファイルを開いたときにどのワークシートが表示されるかを制御します。

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

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}");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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
ExcelのワークシートのタブをworkSheet1がアクティブな状態からworkSheet3がアクティブな状態に変更する前と後の比較.

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

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

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

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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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つのタブに減少.

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

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

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

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

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

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
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$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ファイルを開いたときにどのワークシートがアクティブになるかを制御します。このメソッドにワークシートのインデックスか参照を渡すだけで、ワークブックを開いたときに最初に表示されるシートがそのシートになります。

Chaknith Bin
ソフトウェアエンジニア
ChaknithはIronXLとIronBarcodeに取り組んでいます。彼はC#と.NETの深い専門知識を持ち、ソフトウェアの改善や顧客サポートに貢献しています。ユーザーとの対話から得られる洞察が、より良い製品、ドキュメント、および全体的な経験に寄与しています。
準備はできましたか?
Nuget ダウンロード 1,765,830 | バージョン: 2025.12 リリース