基本的に必要なのは、次のような構造にコピーされた Excel ファイル (空白でないセル) の内容ですIEnumerable<IEnumerable<string>> contents;
。最初の IEnumerable は行用で、2 番目は列用です。
私がすでに取り組んでいるのは、次を使用してファイルをロードすることです:
var excel = new ExcelQueryFactory("file.xls");
よろしくお願いします。
基本的に必要なのは、次のような構造にコピーされた Excel ファイル (空白でないセル) の内容ですIEnumerable<IEnumerable<string>> contents;
。最初の IEnumerable は行用で、2 番目は列用です。
私がすでに取り組んでいるのは、次を使用してファイルをロードすることです:
var excel = new ExcelQueryFactory("file.xls");
よろしくお願いします。
答えは次のとおりです。
var excel = new ExcelQueryFactory("file.xls");
var result = excel.WorksheetNoHeader().ToList().Select(x => x.Select(y => y.ToString()).AsEnumerable());
助けてくれてありがとう。
最初にデータをデータテーブルのようなものに入れてから、as Enumarable を使用してそこから選択しますか?
var x = _xlData.Tables[0].Rows
.Cast<DataRow>()
.Where(row => !row.ItemArray.All(field => field is System.DBNull ||
string.Compare((field as string).Trim(),
string.Empty) == 0))
.AsEnumerable();
このようなことを試すことができます。追加のロジックを自分で記述して、フィールドデータを取得することはできません = to string.Empty ファイルパスをファイルパスの場所がある場所に置き換えます
Linq to Excel オープン ソース プロジェクト (code.google.com/.../linqtoexcel) を使用して、Excel からデータを簡単に取得することもできます。OleDB 接続を処理し、where 句を使用できます。Excel の列名に対応するプロパティを持つクラスを作成するだけです。次に例を示します。
IExcelRepository<Client> repo = new ExcelRepository<Client>(@"C:\file.xls");
var largeClients = from c in repo.Worksheet
where c.Employees > 200
select c;
foreach (Client client in largeClients)
{
Console.WriteLine(client.ClientName);
}
ドキュメントによると、解決策は次のように簡単です。
var excel = new ExcelQueryFactory("file.xls");
var result = excel.Worksheet()
.Select(x => x.Select(y => y.ToString()));