V5 ドキュメントはプレビュー版です。正式リリース(2026 年 8 月 19 日)まで内容が更新されることがあります。
V4 V5

XLSX(OOXML)の読み書きは unvell.ReoGrid.IO.Excel が担当します。 外部パッケージに依存しません(Open XML SDK も EPPlus も使いません)。

One パッケージにはすべて同梱されています。

読み書き

using unvell.ReoGrid.Core;
using unvell.ReoGrid.IO.Excel;

Workbook loaded = XlsxReader.Read("book.xlsx");
XlsxWriter.Write(wb, "out.xlsx");

// ストリームからも読める
using var stream = File.OpenRead("book.xlsx");
Workbook fromStream = XlsxReader.Read(stream);

XlsxWriter.Write にもストリーム版があります。

ストリーミング読み込み

読み込みは XmlReader によるストリーミングで、スパースストアへ直接流し込みます。 メモリ使用量は実在するセル数に比例します(シートの宣言上の寸法ではありません)。

巨大ファイルの遅延ロード

// 巨大ファイルはシート単位の遅延ロードで開く
using var virtualBook = XlsxReader.OpenVirtual("large.xlsx", SheetLoadMode.OnDemand);
モード挙動
OnDemandシートを最初に表示したときにそのシートを構築する
Backgroundアクティブシートを先に構築し、残りをバックグラウンドで先読みする

VirtualWorkbookIDisposable です。元のストリームを保持するため、 使い終わったら破棄してください。

数式の扱い

読み込み時に数式は再評価されません。 Excel が保存したキャッシュ値をそのまま採用します。

var wb = XlsxReader.Read("book.xlsx");

// Excel のキャッシュ値をそのまま読むため、ロード時に再評価はしない。
// 自前で計算し直したい場合だけ明示的に呼ぶ。
foreach (var sheet in wb.Worksheets)
	sheet.Recalculate();

この設計には理由があります。V5 が実装していない関数を含むファイルでも、Excel が計算した値が そのまま表示されるためです。再評価すると #NAME? に化けてしまいます。

対応している範囲

対象読み書き
値(数値・文字列・真偽値・日付・エラー)
共有文字列・インライン文字列・リッチ文字列
スタイル(フォント・色・配置・折り返し)
数値書式
罫線
結合
行高・列幅・非表示
1900 / 1904 日付方式
条件付き書式(<conditionalFormatting> / <dxfs>
定義名(<definedNames>
アウトライン(グループ化)
画像(drawing)
ページ設定(<pageSetup>
数式○(キャッシュ値を保持)

未対応

対象備考
オートフィルタ(<autoFilter>行の表示状態は保存されるが、フィルタ設定は失われる
共有数式の展開
セルコメントV5 にコメント機能自体がない
チャート・図形同上(画像は対応)
セル型XLSX に対応する概念がないため通常のセルになる
組込名(_xlnm.Print_Area など)印刷範囲は PrintSettings で扱う
データバーの負の色・ゼロ軸・枠線OOXML の x14 拡張が必要
枠固定・ズームなどの表示状態ビューはモデルと分離されており保存対象外
cellStyleXfsxfId)のスタイル継承読み込み時に展開されない

次に読む

ページの内容は役に立ちましたか?