相互運用なしで C#35 でワークシートを管理する方法
IronXLはOffice Interopを使わずにC#でワークシート管理を可能にし、簡単なメソッド呼び出しでワークシートの作成、削除、移動、コピーを可能にします。 このライブラリは、Excelのワークシート操作をプログラムで完全に制御しながら、Interopの依存関係を排除します。
クイックスタート:新しいワークシートを即座に追加
この例では、C#でExcelのワークブックを管理するために、IronXLを使った新しいワークシートの作成を、定型文やInteropを使わずにたった1行で実演しています。
最小限のワークフロー(5ステップ)
- Excel ワークシートを管理するための C# ライブラリをダウンロードする
CreateWorksheetメソッドを使用して新しいワークシートを作成します。SetSheetPositionメソッドでワークシートを並べ替えるSetActiveTabメソッドを使用してアクティブなワークシートを設定します。RemoveWorksheetメソッドでワークシートを削除する
ワークシート管理に不可欠な作業とは
ワークシートを管理するには、ワークシートの作成、移動、削除が必要です。 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"
ワークシートの命名規則は何ですか?
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")
ワークシートの位置を変更するには?
メソッドは、ワークシートの位置を変更します。 これには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)
: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")
どのようにアクティブなワークシートを設定しますか?
アクティブなワークシートの設定は、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}")
: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")
ワークシートを削除するにはどうすればよいですか?
ワークシートのインデックス位置を指定して、`` メソッドを使用してワークシートを削除します。 ポジションが不明な場合は、代わりにワークシート名を使用してください。
最後のワークシートを削除しようとするとどうなりますか?
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
複数のワークシートを効率的に削除するには?
複数のワークシートを削除する場合は、インデックスのずれの問題を避けるために、最も高いインデックスから逆算してください。 または、最初にワークシート名を収集し、次に名前で削除します。 このアプローチは、一時的なワークシートのクリーンアップやデータの統合に特に役立ちます:
// 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
ワークシートを削除する前の安全確認は何ですか
ワークシートを削除する前に、重要なデータ、他のシートから参照される数式、またはワークブックの他の部分が依存している 名前付き範囲 が含まれていないことを確認してください。 データ復旧のため、削除する前にバックアップを作成するか、ワークシートをコピーすることを検討してください。
: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")
ワークシートをコピーまたは複製するにはどうすればよいですか?
同じワークブック内または異なるワークブック間でワークシートをコピーします。 同じワークブック内で複製するには、メソッドを使用します。 別のワークブックにコピーするには、 メソッドを使用します。
いつワークブック内とワークブック間でコピーすべきですか?
テンプレート、バックアップシート、または既存のデータレイアウトのバリエーションを作成する場合は、同じワークブック内でコピーしてください。 クロスワークブックコピーは、複数のソースからのデータを統合したり、異なる部門から標準化されたレポートを作成したり、個々の貢献からマスターワークブックを構築したりする場合に優れています。 機密データについては、コピー後にバックアップを作成するか、ワークブックをパスワードで保護することを検討してください。
ワークシートを複製すると何がコピーされますか?
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
: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")
firstWorksheet.xlsx
secondWorksheet.xlsx
よくある質問
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ファイルを開いたときにどのワークシートがアクティブになるかを制御します。このメソッドにワークシートのインデックスか参照を渡すだけで、ワークブックを開いたときに最初に表示されるシートがそのシートになります。

