コガネブログ

平日更新を目標にUnityやC#、Visual Studioなどのゲーム開発アレコレを書いていきます

【C#】LINQ を使用して Excel からデータを抽出できる「LinqToExcel」紹介

はじめに

「LinqToExcel」をプロジェクトに追加することで
LINQ を使用して Excel からデータを抽出できるようになります

インストール

f:id:baba_s:20180129175245p:plain

Visual Studio メニューの「ツール>NuGet パッケージ マネージャー>
ソリューションの NuGet パッケージの管理」を選択します

f:id:baba_s:20180130120231p:plain

「参照」タブを選択して、検索欄に「LinqToExcel」と入力して
表示された「LinqToExcel」を選択します

f:id:baba_s:20180130120240p:plain

インストールしたいプロジェクトをチェックして「インストール」ボタンを押します

使用例

f:id:baba_s:20180130120416p:plain

例えば上記のような Excel のファイルが存在する場合、
次のようなコードでデータを抽出することができます

using LinqToExcel;
using LinqToExcel.Attributes;
using System;
using System.Linq;

public static class Program
{
    public class Pokemon
    {
        [ExcelColumn( "ID" )] public int ID { get; set; }
        [ExcelColumn( "Name" )] public string Name { get; set; }
        [ExcelColumn( "Type1" )] public string Type1 { get; set; }
        [ExcelColumn( "Type2" )] public string Type2 { get; set; }
    }

    private static void Main()
    {
        var excel = new ExcelQueryFactory( "pokemon.xlsx" );
        var result = excel
            .Worksheet<Pokemon>()
            .ToArray()
        ;

        foreach ( var n in result )
        {
            Console.WriteLine( n.Name );
        }
    }
}

補足

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.'

プログラム実行時に上記のようなエラーが発生する場合は

https://www.microsoft.com/en-in/download/details.aspx?id=13255

こちらのページにアクセスして「Download」ボタンを押して
ダウンロードした「AccessDatabaseEngine.exe」を実行して
「Microsoft Access Database Engine 2010」をインストールする必要があります