
ReoGrid は、WinForms および WPF アプリケーションに Excel ライクなスプレッドシート機能を組み込める .NET コンポーネントです。
このたびリリースいたしました ReoGrid 4.4 は、API の互換性を維持したまま、処理性能を大幅に改善したバージョンです。お客様より多くお寄せいただいておりました「大量データ処理時の応答性」「ソート処理の所要時間」に関するご要望に対応し、4.3 系で時間を要していた処理を大きく高速化いたしました。
本記事では、4.4 における主な改善点を、v4.3.13 と v4.4.0 を同一環境で計測した実測値とともにご紹介いたします。
SetRangeData による 20 万セルの一括ロード: 約 3 倍高速化バージョンを 4.3.13 から 4.4.0 へアップグレードしていただくのみで、既存コードの変更は不要です。
| 項目 | 内容 |
|---|---|
| CPU | AMD Ryzen 9 9900X (12 コア / 24 スレッド) |
| OS | Windows 11 Pro |
| Runtime | .NET 8.0 (x64, Release ビルド) |
| 比較対象 | v4.3.13 ↔ v4.4.0 |
| 測定方法 | 各シナリオ warmup 1 回 + 計測 3 回、min / median を採用 |
シナリオ: A1:A5000 に「値が 100 を超えた場合に文字色を赤にする」条件付き書式を 1 件設定し、5000 セルに値を順次書き込む処理。
| バージョン | 所要時間 |
|---|---|
| v4.3.13 | 70,175 ms(約 70 秒) |
| v4.4.0 | 6 ms |
sheet.ConditionalStyles.Add(new Rule("THIS > 100", "A1:A5000", new WorksheetRangeStyle
{
Flag = PlainStyleFlag.TextColor,
TextColor = SolidColor.Red,
}));
for (int r = 0; r < 5000; r++)
{
sheet[r, 0] = r;
}
業務上の効果: 条件付き書式を設定済みの帳票テンプレートに対し、外部システムから取得したデータを流し込むような処理が、滞りなく実行できるようになります。
シナリオ: 1 万行 × 5 列のランダム整数を A 列で昇順ソート。
| バージョン | 所要時間 |
|---|---|
| v4.3.13 | 397 ms |
| v4.4.0 | 39 ms |
sheet.SortColumn(0, new RangePosition(0, 0, 10000, 5), SortOrder.Ascending);
業務上の効果: Excel と同等の操作感で、画面上のグリッドに対する大規模データの並べ替えを行うことができます。
シナリオ: 10,000 行 × 20 列(合計 20 万セル)の 2 次元配列を SetRangeData() にて一括投入。
| バージョン | 所要時間 |
|---|---|
| v4.3.13 | 326 ms |
| v4.4.0 | 104 ms |
var data = new object[10000, 20];
// ... データを設定 ...
sheet.SetRangeData(new RangePosition(0, 0, 10000, 20), data);
業務上の効果: データベースや CSV から取得したレコードをグリッドへ反映する初期ロード処理の所要時間が短縮されます。
主なバグ修正は以下のとおりです。
=+D25-F8-F14)'BS(円)'!B3、'My Sheet'!A1)ClearConditionalStyles におけるルール解除順序の不具合を修正互換性への影響は最小限ですが、以下の API が変更されております。
Worksheet.ConditionalStyleApplyCells プロパティConditionalStyleApplyCellCollection クラス代替として、以下のメソッドをご利用ください。
bool hasStyle = worksheet.HasConditionalStyle(row, col);
bool hasStyle = worksheet.HasConditionalStyle(new CellPosition("A1"));
bool hasStyle = cell.HasConditionalStyles;
ReoGrid V4 以降は有償版でのご提供となっております。最新版のアセンブリは、弊社ポータルサイトにログインのうえダウンロードいただけます。
既存プロジェクトにおきましては、ダウンロードしたアセンブリへの参照を差し替えていただくのみでアップグレードが完了し、コードの変更は不要です。
なお、ConditionalStyleApplyCells を直接ご参照されていた場合のみ、上記 HasConditionalStyle() への置き換えをお願いいたします。
ReoGrid 4.4 は、新機能の追加よりも、既存ユーザーの皆様にとって影響の大きい性能課題の解消 に注力したリリースでございます。
ご紹介いたしました数値は、すべて同一環境・同一コードで v4.3.13 と v4.4.0 を比較した実測値です。
これまで処理時間の長さからご利用を見送られていたケースがございましたら、ぜひ 4.4 にてお試しいただけますと幸いです。