EPPlus - Excelテーブルを読む
EPPlusを使って、エクセルの表を読み、各カラムの内容をすべて対応するList
に格納したいです。テーブルの見出しを認識し、それに基づいてコンテンツを分類したい。
例えば、私のエクセルテーブルが以下のようなものだとします:
Id Name Gender
1 John Male
2 Maria Female
3 Daniel Unknown
List`にデータを格納したいのですが、ここで
public class ExcelData
{
public string Id { get; set; }
public string Name { get; set; }
public string Gender { get; set; }
}
というように、見出し名で内容を呼び出せるようにしたい。例えば、こうすると
foreach (var data in ThatList)
{
Console.WriteLine(data.Id + data.Name + data.Gender);
}
このように出力されます:
1JohnMale
2MariaFemale
3DanielUnknown
本当にこれだけしか出ませんでした:
var package = new ExcelPackage(new FileInfo(@"C:\ExcelFile.xlsx"));
ExcelWorksheet sheet = package.Workbook.Worksheets[1];
var table = sheet.Tables.First();
table.Columns.Something //I guess I can use this to do what I want
助けてください :( この件に関して、サンプルコードから学ぼうと思い、長い時間をかけて検索したのですが、無駄でした。また、ExcelToLinQはなんとかなっているようですが、テーブルを認識することができないようです。
23
5
理由はわかりませんが、上記のソリューションはどれも機能しません。 だから何がうまくいったかを共有します。
ネイティブはいないけど、この記事に載せたものを使ったらどうだろう:
https://stackoverflow.com/questions/33436525/how-to-parse-excel-rows-back-to-types-using-epplus
もし、テーブルだけを対象にしたい場合は、修正する必要があります。 このようなものでよいでしょう:
テスト方法はこちらです:
コンソールにこう表示されました:
Idフィールドが数値や文字列の場合は、クラスが文字列を想定しているため、注意が必要です。
これは、私の作業バージョンです。リゾルバのコードは表示されていませんが、私の実装をアレンジしたもので、各ワークシートで列の名前が微妙に異なっていても解決できるようにしています。
以下のコードは、エクセルデータをデータテーブルに読み込んで、データローリストに変換します。
最初の回答にエラーが表示されたので、コード行を変更しました。
新しいコードを試してみてください。
この関数を呼び出す方法? 以下のコードを表示してください。
FundraiserStudentListModel here: