記事一覧へ
reogridspreadsheet.netexcelperformancelazy-loadingc#

ReoGridを使って大規模データを超高速に表示する方法

2025年10月21日·UNVELL Inc.

ReoGridは、.NETアプリ用のスプレッドシートコンポーネントです。Excelを依存せず、DLLひとつでアプリにExcel同様の機能をもたせることができます。

今回は、ReoGridを使って、数十万行規模の大規模データを超高速に画面に読み込み、表示する方法を紹介します。

動画デモ 👉 https://youtu.be/PospG1jddFw

なぜ超高速表示が可能なのか

ReoGridの新バージョン4には、「遅延ロード(Lazy Loading)」という新しい技術を採用しています。

遅延ロードは、最初から全てのデータを一気に読み込むのではなく、必要に応じて最小限の一部分ずつを読み込んでいきます。

従来の方法では、すべてのデータを最初に一括で読み込むため、メモリ負荷が高く、表示までに時間がかかっていました。これに対し遅延ロードでは、必要になった部分のみを都度読み込むため、初期表示が圧倒的に高速になります。

他のグリッドコンポーネントにも、仮想モードなど類似の手法がありますが、開発者自身がその制御を実装し、管理しなければなりません。--- Unknown node: hardBreak ---しかしReoGridでは、セルがいつ読み込まれるかを内部でスマートに管理しています。スクロールやズームをしたり、ワークシートの表示領域が変化した場合に、ReoGridは自動的に必要なセルを読み込みます。

さらに、数式で参照されたセル、アプリで引用するセルも含めて、あらゆるパターンでセルを管理し、必要に応じて読み込み処理を行います。--- Unknown node: hardBreak ---この高度な技術によって、ReoGrid のバージョン4では大規模なデータでもストレスなく、超高速に読み込み、表示することができます。

1760961789-kbTGt4CYq8vwIiSW63AumlDQ.png

実現方法も実はシンプル

上述のように、セルの状態管理はReoGrid バージョン4が自動的に行うため、アプリ側はデータの準備を行うだけです。

まずReoGridのデータ読み込みインターフェイス、DataSourceを作成し、ご自身のデータをそのインターフェイスを通してReoGridに渡すように実装します。

private void button1_Click(object sender, EventArgs e)
{
    // ワークシートの行数を変更
    worksheet.SetRows(logs.Count);

    // データソースを遅延読み込みモードで設定
    worksheet.AddDataSource(
        new RangePosition(0, 0, logs.Count, COLUMN_COUNT),
        new FlightLogDataSource(logs),
        // 遅延ロードを有効化
        DataSourceLoadMode.LazyLoading);
}

opy/ このように、データソースの読み込み方式を遅延ロード(DataSourceLoadMode.LazyLoading)に指定するだけで完成です。

罫線やセル書式、セルスタイルにも対応可能

データだけではなく、DataSourceのインターフェイスの中では、罫線やセル書式などの適用も実装できます。これにより、ワークシートの初期化がさらに高速化でき、よりスムーズなアプリの体験を実装できます。--- Unknown node: hardBreak ---以下のサンプルコードでは、すべてのセルの罫線を設定する例です。

public class FlightLogDataSource : IDataSource<FlightlogDataRecord>
{    
    ...

    // GetRecord の部分を以下のように変更
    public FlightlogDataRecord GetRecord(int row)
    {
        FlightlogDataRecord record = initedRecords[row];

        if (record == null)
        {
          record = new FlightlogDataRecord(this, row, Logs[row]);
          initedRecords[row] = record;

          // 行が初めてアクセスされたときに、行の罫線を設定
          Worksheet.SetRangeBorders(row, 0, 1, ColumnCount, BorderPositions.Outside, RangeBorderStyle.BlackSolid);
          Worksheet.SetRangeBorders(row, 0, 1, ColumnCount, BorderPositions.InsideVertical, RangeBorderStyle.GrayDotted);
        }

        // 行データを返却
        return record;
    }

    ...
}

copy

より詳しく

ReoGridの公式サイトでは、より詳しいドキュメントとサンプルコードを掲載しています。詳しくはドキュメントページをご参照ください。

ReoGrid バージョン4 について

ReoGridはこれまで、国内・海外の企業の様々なシステムで採用されています。特に金融システムや製造業、公共インフラシステムといった、日常的に大量のデータを取り扱うシステムへの導入実績が数多くあります。--- Unknown node: hardBreak ---ReoGrid バージョン4は、これら分野への導入・運用で得られた経験に加えてユーザー様からの声を反映した、性能・機能ともに大幅に進化した最新バージョンです。

ReoGrid バージョン4のリリース以降、すでに複数の企業に導入していただき、高速化、安定性、使いやすさの面で高い評価をいただいています。--- Unknown node: hardBreak ---今後もさらなる高性能化を目指し継続的な改善を続けるとともに、信頼性の高いサポートを提供してまいります。

▼ReoGridの詳細・ご購入はこちらから