C#でExcelファイルを作成する方法

C#でExcelにフリーズペインを追加する方法

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

Z'を超える50以上の行または列を持つ大規模なExcelスプレッドシートでは、ヘッダーを表示したままデータを表示することが困難になります。 C#のフリーズペイン機能は、特定の行や列を固定し、残りは自由にスクロールできるようにすることで、エレガントなソリューションを提供します。

この機能は、財務報告書、従業員データベース、または列ヘッダーや行の識別子を常に表示する必要がある在庫リストで作業する場合に不可欠になります。 IronXLのExcelライブラリを使用すると、.NETアプリケーションのデータナビゲーションとユーザーエクスペリエンスを向上させるために、プログラムでフリーズペインを追加することができます。

見出しとして:2(クイックスタート: 見出し行と列をワンラインでロックする)

シンプルなCreateFreezePane(colSplit, rowSplit)メソッドを使用して、数秒で行や列を固定できます。 複雑な設定は必要ありません。シートを読み込んで、このメソッドを呼び出すだけで、スクロールしている間、ヘッダーは上部に固定されます。

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

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

    PM > Install-Package IronXL.Excel

  2. このコード スニペットをコピーして実行します。

    workSheet.CreateFreezePane(1, 4);
  3. 実際の環境でテストするためにデプロイする

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


Excelにフリーズ ウィンドウを追加するには?

フリーズペインは、行や列を所定の位置に固定し、スクロール中も表示されたままにすることができます。 この機能は、情報をすばやく比較しながら、ヘッダーの列や行を維持します。 この機能は、大規模なデータセットを扱う場合や、広範なスプレッドシートをナビゲートしながらコンテキストを維持する必要がある場合に特に役立ちます。

IronXLのフリーズペイン機能はExcelのネイティブ機能を模倣しており、Excelのインターフェースに慣れている開発者にとっては直感的なものとなっています。 Excel Interopソリューションとは異なり、IronXLはプログラムでフリーズ・ペインを実装するための、より効率的でサーバーフレンドリーなアプローチを提供します。

CreateFreezePaneは2つのパラメータでどのように動作しますか?

フリーズペインを追加するには、CreateFreezePaneメソッドを使用し、フリーズペインの開始位置となる列と行を指定します。 指定された列と行はフリーズペインに含まれません。 例えば、workSheet.CreateFreezePane(1, 4) は、列A行1から4から始まるフリーズペインを作成します。

0列目はA列目、1列目はB列目というように、ゼロベースのインデックスを理解することが重要です。 行インデックスも同じパターンです。 この方法は、データエントリーをスクロールしながらヘッダーを表示させたいシナリオに最適です。

次のコード例は、列Bと行4から始まるフリーズペインを作成する方法を示しています:

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-add.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Create freeze pane from column(A-B) and row(1-3)
workSheet.CreateFreezePane(2, 3);

workBook.SaveAs("createFreezePanes.xlsx");
$vbLabelText   $csharpLabel

フリーズ ペインの動作はどのようなものですか?

Freeze Pane in Action

フリーズ ペインを削除するには?

RemovePaneメソッドを使用して、スプレッドシートから既存のフリーズペインをすべて削除します。 これは、ユーザーの好みやデータの変更に基づいて、ビューをリセットしたり、異なるフリーズ設定を適用したりする必要がある場合に便利です。

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-remove.cs
// Remove all existing freeze or split pane
workSheet.RemovePane();
$vbLabelText   $csharpLabel

高度なフリーズ ペイン オプションとは何ですか

CreateFreezePaneメソッドは、事前スクロール機能を備えたフリーズペインを作成する高度なオプションを提供します。 この機能は、フリーズペインの機能を維持しながら、スプレッドシートの特定の領域に注意を向けたい場合に便利です。

高度なフリーズ ペインに 4 つのパラメータを使用するのはいつですか?

このメソッドでは、指定された開始列と行に基づいてフリーズペインを追加できます。 さらに、この方法を使用してワークシートにスクロールを適用できます。 これは、フォーマットされたExcelレポートで作業する際に、最初のビューを正確に制御する必要がある場合に特に有益です。

たとえば、workSheet.CreateFreezePane(5, 2, 6, 7)を使用すると、列A~E行1~2にまたがるフリーズペインが作成されます。 これには1列と5行のスクロールが含まれます。 ワークシートを開くと、列A-E, G-...行1-2, 8-...が表示されます。

:path=/static-assets/excel/content-code-examples/how-to/add-freeze-panes-advance.cs
using IronXL;
using System.Linq;

WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.WorkSheets.First();

// Overwriting freeze or split pane to column(A-E) and row(1-5) as well as applying prescroll
// The column will show E,G,... and the row will show 5,8,...
workSheet.CreateFreezePane(5, 5, 6, 7);

workBook.SaveAs("createFreezePanes.xlsx");
$vbLabelText   $csharpLabel

高度なフリーズ ペインとはどのようなものですか?

フリーズ ペインの実用的な使用例

フリーズ・ペインは、さまざまなビジネス・シナリオにおいて非常に貴重です:

1.財務レポート: 年間データをスクロールしている間、月/四半期のヘッダーが見えるようにする。 2.従業員データベース:パフォーマンス指標を見ながら従業員の名前と ID をロックする 3.在庫管理:在庫レベルを確認しながら、製品コードと製品名を修正する。 4.セールスダッシュボード:地域の販売データを分析しながら、製品カテゴリの可視性を維持します。

Excelの数式と組み合わせると、フリーズペインはデータ分析の効率を大幅に高めます。

完全な例:フリーズペインを使ったデータレポートの作成

以下は、フリーズペインを使用した書式付きレポートの作成方法を示す包括的な例です:

using IronXL;
using IronXL.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
using IronXL;
using IronXL.Styles;

// Create a new workbook
WorkBook workBook = WorkBook.Create();
WorkSheet workSheet = workBook.CreateWorkSheet("Sales Report");

// Add headers
workSheet["A1"].Value = "Product ID";
workSheet["B1"].Value = "Product Name";
workSheet["C1"].Value = "Q1 Sales";
workSheet["D1"].Value = "Q2 Sales";
workSheet["E1"].Value = "Q3 Sales";
workSheet["F1"].Value = "Q4 Sales";
workSheet["G1"].Value = "Total";

// Style headers
var headerRange = workSheet["A1:G1"];
headerRange.Style.Font.Bold = true;
headerRange.Style.BackgroundColor = "#4472C4";
headerRange.Style.Font.Color = "#FFFFFF";

// Add sample data
for (int i = 2; i <= 50; i++)
{
    workSheet[$"A{i}"].Value = $"P{i-1:D3}";
    workSheet[$"B{i}"].Value = $"Product {i-1}";
    workSheet[$"C{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"D{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"E{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"F{i}"].Value = Random.Shared.Next(1000, 5000);
    workSheet[$"G{i}"].Formula = $"=SUM(C{i}:F{i})";
}

// Apply freeze pane to keep headers visible
workSheet.CreateFreezePane(0, 1);

// Auto-size columns for better visibility
workSheet.AutoSizeColumn(0, 6);

// Save the workbook
workBook.SaveAs("SalesReportWithFreezePanes.xlsx");
$vbLabelText   $csharpLabel

この例では、フリーズ・ペインがセル・スタイル数式とどのように連動してプロフェッショナルなレポートを作成するかを示します。 ユーザーが50行の売上データをスクロールしても、ヘッダー行は表示されたままです。

パフォーマンスの考慮事項

大規模なスプレッドシートでフリーズペインを実装する場合:

  • 最適なパフォーマンスを実現するために、データを入力した後にフリーズペインを適用します。
  • 条件付き書式を使用して、凍結されたセクションの重要なデータを強調することを検討してください。
  • スムーズなスクロールのパフォーマンスを保証するために、目標のデータ量でテストしてください。

膨大なデータセットを扱うアプリケーションでは、異なるフォーマットへのエクスポートや、フリーズ ペインと並行してページネーション戦略を実装することを検討してください。

フリーズペインの設定は1つしか適用できません。 追加のフリーズペインを作成する場合は、前の設定が上書きされます。 フリーズペインは、Microsoft Excelのバージョン97-2003(.xls)では動作しません。

よくある質問

フリーズペイン機能とは何ですか?

フリーズペイン機能は、特定の行や列を固定し、大きなスプレッドシートをスクロールしている間でも表示された状態を維持します。これは、財務報告書、従業員データベース、在庫リストのヘッダーの可視性を維持するために特に有用です。IronXLはC#アプリケーションでこの機能をプログラムで実装するための簡単なCreateFreezePaneメソッドを提供しています。

C#でヘッダー行をロックするフリーズペインをすばやく追加する方法を教えてください。

IronXLでは、CreateFreezePaneメソッドを使用することで、たった1行のコードでヘッダー行をロックすることができます。workSheet.CreateFreezePane(1,4)を呼び出すだけで、列と行がフリーズします。これにより、列 A と行 1 ~ 4 が固定され、スプレッドシートの残りの部分は自由にスクロールできるようになります。

CreateFreezePaneで2つのパラメータを使用する場合と4つのパラメータを使用する場合の違いは何ですか。

IronXLのCreateFreezePaneメソッドには2つのオプションがあります。2つのパラメータ(colSplit, rowSplit)を使用すると、指定された位置から基本的なフリーズペインを作成し、4つのパラメータを使用すると、表示領域をより高度に制御するために、事前にスクロールされた位置でフリーズペインを追加することができます。

フリーズ・ペインを設定する際、ゼロベース・インデックスはどのように機能しますか?

IronXLのCreateFreezePaneメソッドでは、インデックスはゼロベースです。列0は列Aを、列1は列Bを、といった具合です。たとえば、CreateFreezePane(1, 4)は、列Aから始まり、行1から4を含むフリーズペインを作成します。

フリーズペイン用のExcel Interopの代わりに、なぜこのライブラリを使用する必要があるのですか?

IronXLはExcel Interopソリューションと比較して、より効率的でサーバーフレンドリーなアプローチを提供します。Excelをサーバーにインストールする必要がなく、大規模なデータセットでも優れたパフォーマンスを発揮し、Excelのネイティブ機能を模倣しながら.NETアプリケーション向けに最適化された直感的なAPIを提供します。

フリーズペインを含むスプレッドシートを異なるファイル形式にエクスポートできますか。

はい、IronXLのCreateFreezePaneメソッドでフリーズ・ペインを追加した後、フリーズ・ペインの機能を維持したままスプレッドシートをさまざまなファイル形式にエクスポートできます。ライブラリは、サポートされているExcel形式に保存する際にこれらの設定を保持します。

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

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

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

準備はできましたか?
Nuget ダウンロード 1,802,965 | バージョン: 2025.12 リリース