nabehiro ブログ

開発・プログラミングに関して適当に書くブログ

CSV と Excel の読み書き用の C# のライブラリ TableIO を作りました

今更?感がありますが、年末年始で CSVExcel のようなテーブル形式のデータを
同じような方法で読み書きできるライブラリを作成しました。

github.com

仕事の都合で CSVExcel を同じようなインターフェースで扱いたい!と思っていて
最初は CsvHelper をゴニョゴニョしてやろうと思ったんですが( CsvHelper.Excel 使ったり)
やっぱり CSV 専用のライブラリなのでちょい厳しいと感じて、自作することにしました。

joshclose.github.io

使い方

1.nuget で、TableIO を取得。CSV だけじゃなく、Excel(xlsx) を扱いたいときは TableIO.ClosedXml を。

2.コードを書く。

using TableIO;

class Model
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public string Remarks { get; set; }
}

public void Main()
{
    IList<Model> models = null;

    // read file to models.
    using (var stmReader = new StreamReader("readfile.csv"))
    {
        // parameters is (textReader, hasHeader)
        var tableReader = new TableFactory().CreateCsvReader<Model>(stmReader, true);
        var models = tableReader.Read();

        Assert.AreEqual(5, models.Count);
        Assert.AreEqual(1, model[0].Id);
    }

    // write models to file.
    using (var stmWriter = new StreamWriter("writefile.csv"))
    {
        var tableWriter = new TableFactory().CreateCsvWriter<ValidCsvModel>(stmWriter);
        // parameter is (models, header)
        tableWriter.Write(models, new[] { "ID", "NAME", "PRICE", "REMARKS" });
    }
}

3.使い方の詳細は以下をご参照ください。
GitHub - nabehiro/TableIO: TableIO provides common interaface for reading and writing CSV, Excel and other table format content.