使用LINQ和Open XML(Excel)

时间:2012-07-30 13:42:42

标签: c# linq openxml

我有一张excel表,我正在使用 Open XML SDK 2.0 进行处理。方案是,有一个列包含我的Excel工作表中的日期。我需要从该列中获取最大和最小日期。

我可以通过循环并到达那个单元格,进行比较并找到所需的答案来做到这一点。

但由于最优性,我希望通过 LINQ 来获取最小和最大日期。

有可能这样做吗?如果是,那怎么样?

4 个答案:

答案 0 :(得分:1)

您可以看到如何从列中获取所有单元格的IEnumerable:Read excel sheet data in columns using OpenXML,并在其上使用Max()。

答案 1 :(得分:0)

您需要查看LINQ Min()Max()函数。如果您需要返回整个Cell对象,则可以使用OrderByDescending()

答案 2 :(得分:0)

你可以阅读Eric White撰写的这篇文章Open XML SDK and LINQ to XML(Eric写了很多关于OpenXML和LINQ的帖子)。然后,您将能够使用LINQ查询Excel文件数据。您可能希望在The Open XML SDK Productivity Tool中看到电子表格对象结构,它可以为您生成源代码。您可以使用此代码了解如何以编程方式访问所需的数据。

答案 3 :(得分:0)

感谢所有

我用过这样的

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];