8

我使用 EPPlus 来阅读工作表。在此工作表中,我需要的数据位于 columns 中B-D。在列A中有静态值,我会忽略。col 中的值A被填充到 until 中Row 1000。但是,我需要的数据只会在那里,例如Row 450。目前我使用

int endRow = workSheet.Dimension.End.Row;

计算要读取的最后一行,但这会返回我的值1000。有没有办法让我得到 endRow 的价值450,而忽略 col A

4

3 回答 3

8

这是另一种选择,它应该更有效率,因为它从最后一行倒数

int colB = 2;
int colD = 4;

int lastRow = workSheet.Dimension.End.Row;
while(lastRow >= 1) {
    var range = sheet.Cells[row, colB , row, colD ]
    if(range.Any(c => c.value != null))) {
        break;
    }
    lastRow --;
}
于 2013-05-31T18:05:46.830 回答
5

您也可以检查该值是否为空。

if(worksheet.cells[row,column].value != null)
   {
         //ok to proceed
   }
于 2012-09-25T01:26:06.640 回答
1

我会使用 Linq 查询来获取您需要的信息。

using (ExcelPackage exPackage = new ExcelPackage(aFile))
        {
            ExcelWorksheet sheet = exPackage.Workbook.Worksheets["Sheet1"];

            List<String> checkCol = new List<String>();
            checkCol.Add("B");
            checkCol.Add("C");
            checkCol.Add("D");

            int longestColumn = 0;

            foreach (String col in checkCol)
            {
                var cells = from c in sheet.Cells[col + ":" + col]
                            where c.Value != null & c.Text.ToString() != ""
                            select c;

                if (cells.Count() > longestColumn) longestColumn = cells.Count();

            }


            MessageBox.Show("The endpoint is: " + longestColumn.ToString());
        }
于 2012-09-11T15:39:16.680 回答