C#からExcel操作方法のメモ
ライブラリ | .xls | .xlsx | 読み | 書き | ライセンス |
---|---|---|---|---|---|
ClosedXML | × | 〇 | 〇 | 〇 | MIT |
ExcelDataReader | 〇 | 〇 | 〇 | × | MIT |
NPOI | 〇 | 〇 | 〇 | 〇 | Apache 2.0 |
EPPlus | × | 〇 | 〇 | 〇 | Polyform Noncommercial License 1.0.0 |
ClosedXML、ExcelDataReader、EPPlus、NPOIのドキュメント・チュートリアル
Excel(COM)、ClosedXML、ExcelDataReader、NPOI、EPPlusを使えるようにする
早見表
項目 | Excel(COM) | ClosedXML | EPPlus | ExcelDataReader | NPOI |
---|---|---|---|---|---|
ファイルパスオープン | 〇 | 〇 | 〇 | × | × |
FileInfoオープン | × | × | 〇 | × | × |
FileStreamオープン | × | 〇 | 〇 | 〇 | 〇 |
行列番号 | 1~ | 1~ | 1~ | 0~ | 0~ |
シート番号 | 1~ | 1~ | 0~ | 0~ | 0~ |
シート取得 | Sheets変数[ ] | Worksheet() | Worksheets() | - | GetSheetAt()/GetSheet() |
存在しないシート | 例外 | 例外 | null | null | null |
ワークブック
処理 | Excel(COM) | ClosedXML | EPPlus | ExcelDataReader | NPOI |
---|---|---|---|---|---|
ブックを作成 | 〇 | 〇 | 〇 | × | 〇 |
ブックを開く | 〇 | 〇 | 〇 | 〇 | 〇 |
ブックを開く(読み取り専用) | 〇 | 〇 | 〇 | 〇 | 〇 |
ブックを開く(書き込みパスワード付き) | 〇 | × | × | × | × |
ブックを開く(開くパスワード付き) | 〇 | × | × | × | × |
ブックを保存(名前をつけて保存) | 〇 | 〇 | 〇 | × | 〇 |
上書き保存 | 〇 | 〇 | 〇 | × | 〇 |
ワークシート
処理 | Excel(COM) | ClosedXML | EPPlus | ExcelDataReader | NPOI |
---|---|---|---|---|---|
シートの数を取得する | 〇 | 〇 | 〇 | 〇 | 〇 |
全てのシートを取得しその名前を出力する | 〇 | 〇 | 〇 | 〇 | 〇 |
シート名を変更 | 〇 | 〇 | 〇 | × | 〇 |
シートを追加する(一番最後) | 〇 | 〇 | 〇 | × | 〇 |
シートの削除 | 〇 | 〇 | 〇 | × | 〇 |
ワークシートの参照 | 〇 | 〇 | 〇 | 〇 | 〇 |
アクティブなシートを取得/設定 | 〇 | 〇 | 〇 | × | 〇 |
表示倍率の取得 | 〇 | 〇 | 〇 | × | × |
表示倍率の設定 | 〇 | 〇 | 〇 | × | 〇 |
シートの保護 | 〇 | 〇 | 〇 | × | 〇 |
シートの解除 | 〇 | 〇 | 〇 | × | △ |
(補足)シートの解除は、NPOIだとパス無し保護は解除できても、パス有り保護は解除できなさそう
セル
処理 | Excel(COM) | ClosedXML | EPPlus | ExcelDataReader | NPOI |
---|---|---|---|---|---|
A1形式でセルの値取得 | 〇 | 〇 | 〇 | × | × |
R1C1形式でセルの値取得 | 〇 | 〇 | 〇 | 〇 | 〇 |
複数のセルを範囲で取得し、1つずつ取り出し値を出力 | 〇 | 〇 | 〇 | 〇 | 〇 |
セルのアドレス | 〇 | 〇 | 〇 | × | × |
セルに値を設定する | 〇 | 〇 | 〇 | × | 〇 |
参考
ClosedXML, ExcelDataReader, EPPlus, NPOIがパスワード解除について
Officeのサーバー上でのCOM経由による自動操作について