Excel シートがあり、Open XML SDK 2.0を使用して処理しています。シナリオは、私のExcelシートに日付を含む列があります。その列から最大日付と最小日付を取得する必要があります。
これを行うには、ループしてそのセルに到達し、比較を行い、目的の答えを見つけます。
しかし、最適性のために、 LINQを使用して最小日付と最大日付を取得することでこれを行いたいと考えています。
そうすることは可能ですか?はいの場合、どのように?
ありがとうございます
私はこのように使用しました
IEnumerable<Cell> cells = workSheetPart.Worksheet.Descendants<Cell>().Where(c => string.Compare(GetColumnName(c.CellReference.Value), strIndex, false) == 0).OrderBy(c => c.CellValue.Text);
そして、このような最小値と最大値を取得します
int cellCount = cells.Count();
Cell MaxCell = cells.ToArray()[0];
Cell MinCell = cells.ToArray()[cellCount - 1];
そこの列からすべてのセルの IEnumerable を取得する方法を確認できます: OpenXML を使用して列の Excel シート データを読み取り、その上で Max() を使用します。
Min()
LINQとMax()
関数を見てみましょう。Cell
オブジェクト全体を返す必要がある場合は、 OrderByDescending()
.
Eric White によるこの投稿Open XML SDK and LINQ to XML を読むことができます(Eric は OpenXML と LINQ に関する多くの投稿を書いています)。そして、LINQ を使用して Excel ファイル データのクエリを実行できるようになります。The Open XML SDK Productivity Toolでスプレッドシート オブジェクトの構造を確認すると、ソース コードが生成されます。このコードを使用して、必要なデータにプログラムでアクセスする方法を理解できます。