C# PR

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

記事内に商品プロモーションを含む場合があります

はじめに

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

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

読み込み・書き込み、両方したい方は「Spreadsheet Light」をおすすめします。

ExcelDataReaderの概要

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

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

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

  • 2019年公開「軽量・高速なエクセルライブラリ」
  • LibroOffice・xls・xlsxに対応
  • 最終版の更新は2019年5月
こんなことに使える

エクセルの読み込みが簡単に行えるので、以下の用途に使えます。

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

ライセンス・人気度

ライセンスMIT   
.NET バージョン2.0~ ※
NuGetダウンロード数22.2M
GitHub Star数3.1k
最終更新日2019年5月2日     

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

※ 数字は2022年7月現在時点のものです。

公式ページ

以下の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
エクセルの読み込み / 書き込み / 操作 がすべて出来る無料MITライセンスのライブラリ「SpreadsheetLight」をみつけました。

書き込みや、操作(罫線・グラフの操作など)までできる優れものなので、ExcelDataReaderの代わりに以下のライブラリの使用も検討してみてください。

【C# エクセル 】無料でExcelの出力・読み込み・操作がすべて可能な新しいライブラリ「SpreadsheetLight」のアイキャッチ
【C# エクセル 】無料でExcelの出力・読み込み・操作がすべて可能な新しいライブラリ「SpreadsheetLight」 はじめに 無料で使えてエクセルも不要、「読み込み」「書き込み」「操作」ができるエクセルライブラリ「SpreadSheetLigh...

お知らせ

今月号の『Software Design』はドメイン駆動設計(DDD)。実例を交えたDDDの手法の解説が特集されています。

編集:Software Design 編集部
¥1,562 (2024/03/13 12:59時点 | Amazon調べ)

自分でコードを打つ時間がない時は

『自分でやるには時間がない、でも頼める人もいない』と悩んでいるあなたに「ココナラ」があります。

登録者数は約200万。専門家・フリーランスも多く、制作サンプルやレビューを見て自分にあった人を選ぶことができます。特に人気の「Python」なら絶対数が多いので「デキる人」も見つけやすいです。登録は無料なのでどんな人・チームがいるか確認してみてください。

(HP製作・動画製作・面倒な業務文書の作成代行も依頼もできますよ)

1分以内に完了!無料会員登録はこちら

質問・要望 大歓迎です

「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。

使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。

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

COMMENT

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