どうも。ひっくです。
今回は表題の通り、ExcelDataReaderを使用してCSVデータを読み取る方法について
紹介しようと思います。
→ 関連記事 はこちら ExcelDataReaderでExcelを高速に読み込む
ExcelDataReaderの使用用途、メリット・デメリット
前回記事 ExcelDataReaderでExcelを高速に読み込む でExcelを読み込む際の使用用途等を記載しています。
CSVの場合もExcelと似た使用用途、メリット・デメリットとなるかと思うので、そちらを参照してください。
動作環境と公式GitHubについて
動作環境
.NET Framework 2.0以降
.NET Standard 1.3 and .NET Standard 2.0
公式GitHubのURL
実際に使用してみる
今回確認は以下で実施しています。
OS: Windows11
Target Framework: .NetCore3.1
VisualStudio: 2022 Community
導入手順は以下の通りです。
NuGetから「ExcelDataReader」「ExcelDataReader.DataSet」をインストールします。
ExcelDataReaderを参照し、読み込み用メソッドを用意しておきます。
以下サンプルを使用してCSVファイルを読み込むと、DataTable型でCSVのデータを取得することができます。
Excelの読み込みとあまり変わりないですが、CSVを読み込む際は「CreateCsvReader」を使用するのがポイントです。
読み込み時のエンコーディング指定やセパレータ指定は「ExcelReaderConfiguration」のプロパティに
CSV読み込み専用のプロパティが用意されているので、そちらを適宜利用してください。
using ExcelDataReader;
using System;
using System.Data;
using System.IO;
using System.Text;
namespace ExcelDataReaderTest
{
public class ExcelCsvDataReader
{
public DataTable ReadCsvData(string path, bool isUseHeaderRow = false)
{
DataTable data = null;
try
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
using var stream = File.Open(path, FileMode.Open, FileAccess.Read);
var excelReaderConfig = new ExcelReaderConfiguration();
// 必要に応じて、各プロパティに対し設定を行う(デフォルトの値で問題ない場合は特に変更しない)
//excelReaderConfig.AutodetectSeparators = new char[','];
//excelReaderConfig.FallbackEncoding = Encoding.UTF8;
//excelReaderConfig.AnalyzeInitialCsvRows = 0;
using var reader = ExcelReaderFactory.CreateCsvReader(stream, excelReaderConfig);
var conf = new ExcelDataSetConfiguration
{
ConfigureDataTable = (_) => new ExcelDataTableConfiguration
{
UseHeaderRow = isUseHeaderRow
}
};
DataSet ds = reader.AsDataSet(conf);
data = ds.Tables[0];
}
catch (Exception)
{
throw;
}
return data;
}
}
}
読み込みCSV(例)
今回は厚生労働省のオープンデータ(新型コロナウイルス 新規陽性者数の推移(日別))を題材にしてみました。
変数「ds」をビジュアライザーで開いたのが以下になります。
呼び出し時に第二引数「isUseHeaderRow」を「true」を設定すると、1行目をヘッダとして読み取ります。
この時、テーブルの列名には以下のように1行目の項目が設定されます。
1行目をヘッダ扱いしない場合、以下のように1行目の項目もデータとして読み取られます。
まとめ
以上、ExcelDataReaderを使用してCSVを読み込む方法について、まとめました。
CSVの読み込み処理は比較的簡単に実装可能な部類と思いますが、より楽に読み込み処理を用意できるのではないでしょうか。
前回紹介したExcelと合わせて、利用してみてください。
今回はこのへんで。ではまた!
0 件のコメント:
コメントを投稿