はじめに
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つの読み取り方法が掲載されています。
- readerを使う方法
ReadLine() のように、エクセルを1行読み取り、各セルにアクセスします。 - データオプションを使う方法
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の代わりに以下のライブラリの使用も検討してみてください。
お知らせ
今月号のSoftware Designは「もっとTypeScriptの力を引き出そう」
JavaScriptの拡張言語でしょ?と思っているかたへ、Union型などTypeScriptの持つ秘めたる力を解説する特集となっています。
個人的には第2特集の「Ubuntuの現代的な使い方」がの方が気になりました。より詳しい内容は以下のリンクからご覧ください。
自分でコードを打つ時間がない時は
『自分でやるには時間がない、でも頼める人もいない』と悩んでいるあなたに「ココナラ」があります。
登録者数は約200万。専門家・フリーランスも多く、制作サンプルやレビューを見て自分にあった人を選ぶことができます。特に人気の「Python」なら絶対数が多いので「デキる人」も見つけやすいです。登録は無料なのでどんな人・チームがいるか確認してみてください。
(HP製作・動画製作・面倒な業務文書の作成代行も依頼もできますよ)
1分以内に完了!無料会員登録はこちら質問・要望 大歓迎です
「こんな解説記事作って」「こんなことがしたいけど、〇〇で困ってる」など、コメント欄で教えてください。 質問・要望に、中の人ができる限り対応します。
使えたよ・設定できたよの一言コメントも大歓迎。気軽に足跡を残してみてください。記事を紹介したい方はブログ、SNSにバシバシ貼ってもらってOKです。