1. ホーム
  2. c#

[解決済み】C#からExcelファイルを読み込む

2022-04-04 22:19:21

質問

C#プログラムからExcelファイル(.xls)を直接読み込むためのフリーまたはオープンソースのライブラリはありますか?

あまり凝ったものでなく、ワークシートを選択してデータを文字列として読み込むだけでよいのです。これまでは、エクセルのユニコードテキストへのエクスポート機能を使い、できた(タブ区切りの)ファイルをパースしていましたが、手作業のステップをなくしたいのです。

どのように解決するのですか?

var fileName = string.Format("{0}\\fileNameHere", Directory.GetCurrentDirectory());
var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

var adapter = new OleDbDataAdapter("SELECT * FROM [workSheetNameHere$]", connectionString);
var ds = new DataSet();

adapter.Fill(ds, "anyNameHere");

DataTable data = ds.Tables["anyNameHere"];

これは私がいつも使っているものです。 テーブルの編集にAsEnumerable()を貼り付けているので、少し違います。

var data = ds.Tables["anyNameHere"].AsEnumerable();

これにより、LINQ を使用してフィールドから構造体を検索して構築することができるためです。

var query = data.Where(x => x.Field<string>("phoneNumber") != string.Empty).Select(x =>
                new MyContact
                    {
                        firstName= x.Field<string>("First Name"),
                        lastName = x.Field<string>("Last Name"),
                        phoneNumber =x.Field<string>("Phone Number"),
                    });