7

LinqToExcel ライブラリを使用しています。特定の行でクエリを開始する必要があることを除いて、これまでのところうまく機能しています。これは、クライアントからの Excel スプレッドシートが、データが実際に開始される前に、Excel ファイルの上部にある画像と「ヘッダー」情報を使用するためです。

ExcelQueryFactoryデータ自体は読みやすく、かなり汎用的です。必要なのは、特定の行から開始するように指示する方法を知ることだけです。

私はオプションを認識していますが、ファイルの読み取りを開始するWorksheetRange<Company>("B3", "G10")場所だけで、終了行を指定したくありません。

C# で LinqToExcel の最新バージョンを使用する

4

5 に答える 5

4

私はこのコードを試したところ、うまく機能しているようでした。

var book = new LinqToExcel.ExcelQueryFactory(@"E:\Temporary\Book1.xlsx");

var query =
    from row in book.WorksheetRange("A4", "B16384")
    select new
    {
        Name = row["Name"].Cast<string>(),
        Age = row["Age"].Cast<int>(),
    };

データを含む行のみを取得しました。

于 2012-09-03T01:28:54.420 に答える
4

あなたはすでにこれを解決したと思いますが、おそらく他の人にとっては-使用できるようです

var excel = new ExcelQueryFactory(path);
var allRows = excel.WorksheetNoHeader();

//start from 3rd row (zero-based indexing), length = allRows.Count() or computed range of rows you want
for (int i = 2; i < length; i++)
{
    RowNoHeader row = allRows.ElementAtOrDefault(i);
    //process the row - access columns as you want - also zero-based indexing
}

いくつかの Range("B3", ...) を指定するほど単純ではありませんが、その方法もあります。これが少なくとも誰かに役立つことを願っています;)

于 2013-12-16T17:01:16.150 に答える
1

やってみましたWorksheetRange<Company>("B3", "G")

于 2012-08-31T18:22:19.887 に答える
0

残念ながら、現時点では、LinqToExcel フレームワークの反復では、これを行う方法はないようです。

これを回避するには、Excel ドキュメント内の独自の「シート」にデータをアップロードする必要があります。最初の行のヘッダー行とその下のデータ。「メタデータ」が必要な場合は、これを別のシートに含める必要があります。以下は、特定のシートからクエリを実行する方法に関するLinqToExcel ドキュメントの例です。

var excel = new ExcelQueryFactory("excelFileName");
var oldCompanies = from c in repo.Worksheet<Company>("US Companies") //worksheet name = 'US Companies'
                   where c.LaunchDate < new DateTime(1900, 0, 0)
                   select c;
于 2012-09-02T14:10:17.387 に答える