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経由による自動操作について