Excel

【C#】無料で使えるExcelライブラリ ExcelDataReader

はじめに

C#で無料で使えるエクセルライブラリ「ExcelDataReader」をご紹介します。
細かい処理はライブラリにお任せにできるので、エクセルを読み込みたい時は便利に使えると思います。

この記事の内容
  • ExcelDataReaderの概要
  • ライセンス・人気度
  • サンプルコード

ExcelDataReaderにエクセルファイルの出力機能はありません。
「読み込み」のみ行うことができます。

ExcelDataReaderの概要

2019年に公開されたやや新しいライブラリです。「軽量で高速なExcelライブラリ」と公式サイトにうたわれています。

Excelファイルはもちろんのこと、xlsx形式で出力したLibroOfficeのファイルも読み込むことができます。
旧形式のエクセルファイル(.xls,)、新形式ののエクセルファイル(xlsx)の両方に対応しています。

更新については、最終リリースが9ヶ月前と活発ではないようですが、NuGetのダウンロード数も多く人気のライブラリです。

こんなことに使える

エクセルの読み込みが簡単に行えるので、以下のような応用も利くかと思います。

  • エクセルデータ集計を自動化する
  • エクセルデータを読み込んで、DBに保存する
  • エクセルデータを読み込んで、アプリで解析・グラフ描画する

ライセンス・人気度

ライセンスMIT   
.NET バージョン2.0~ ※
NuGetダウンロード数11.7M
GitHub Star数2.7k
公開日2019年5月2日     

※.NET 1.5でも使えるようですが、内部で使用しているライブラリとの依存関係に注意が必要です。

公式ページ

以下のGitHubのプロジェクトページが公式となっています。

https://github.com/ExcelDataReader/ExcelDataReader

サンプルコード

公式ページに掲載されているサンプルコードを紹介します(コメントは日本語に意訳)
エクセルファイルを読み込むサンプルですが、テキストファイルを扱うような感覚でExcelファイルを扱うことができます。

サンプルでは、以下2つの読み取り方法が掲載されています。

  1. readerを使う方法

    ReadLine() のように、エクセルを1行読み取り、各セルにアクセスします。
  2. データオプションを使う方法

    AsDataSetを使って、データテーブル配列で各セルにアクセスします。
using (var stream = File.Open(filePath, FileMode.Open, FileAccess.Read))
{
    // Auto-detect format, supports:
    //  - バイナリ形式のエクセルファイル (2.0-2003 format; *.xls)
    //  - OpenXml形式のエクセルファイル(2007 format; *.xlsx, *.xlsb)
    using (var reader = ExcelReaderFactory.CreateReader(stream))
    {
        // 1,2 いずれかを選択します。

        // 1. reader を使用する方法です
        do
        {
            while (reader.Read())
            {
                // エクセルの行(横一列)の各セルをDoubleとして取得します。
                // reader.GetDouble(0);
            }
        } while (reader.NextResult());

        // 2. AsDataSet のエクステンションを使う方法です。
        // AsDataSetを使うためにはNuGetで「ExcelDataReader.DataSet」をインストールする必要があります。
        var result = reader.AsDataSet();

        // 各スプレッドシートの結果(内容)は、result.dataTablesに格納されています。
    }
}

まとめ

C#で無料で使えるエクセルライブラリ「ExcelDataReader」をご紹介しました。
書き込みができないのが本当に残念ですが、エクセルから読み込んだ後はWeb等のDBで保存したり、PythonやC#で高度な解析するといった使い方もいいんじゃないでしょうか。

※ 2021/05/28
調査の中で、エクセルの読み込み / 書き込み・操作が出来るフリーのライブラリをみつけました。
 書き込みや操作がしたい!という方は以下の記事も参考をご覧ください。

【C#】C#でExcelの出力・読み込み・操作をする新しい方法 【SpreadsheetLight】 はじめに C#でExcelを扱うのには、Microsoft.Office.Interop.Excel・ClosedXML・NPO...

応援・要望お待ちしてます

ブログを見ていて「この辺を詳しく知りたい」「このライブラリの使い方を知りたい」「こんなことで困ってる」...etc があれば、コメント・問い合わせ・Twitterで教えてください。質問・ご要望に合わせて解説記事を作ります。

ブログを気に入っていただけたり、「応援してもいいよ」という方がいたら、ブログやSNSでの紹介をお願いします。 あたたかい応援は、中の人の更新の大きな励みになります。

ABOUT ME
えす
現役のソフトウェアエンジニアです。 C++ C# Python を使ってます。10年ちょい設計/開発部門にいましたが、今はQAエンジニアっぽいことをしています。

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です