我想遍历Excel单元格以使用C#获取数据

时间:2016-12-12 02:58:13

标签: c# excel-2010

我想遍历Excel单元格以获取数据,但单元格不规则。例如:由多行合并的红色单元格。如何遍历所有行?

enter image description here

我想遍历行以获取数据,如下所示:

  1. 081701-B-AAAA-γ;
  2. 081702-C-AAAA-γ;
  3. 081704-d-AAAA-γ;
  4. 081703-E-FFFF-K;
  5. ...
  6. 有没有很好的方法来实现它?

1 个答案:

答案 0 :(得分:1)

我会推荐EPPlus:http://epplus.codeplex.com/

var package = new ExcelPackage(new FileInfo("sample.xlsx"));

ExcelWorksheet workSheet = package.Workbook.Worksheets[1];

for (int i = workSheet.Dimension.Start.Column;
        i <= workSheet.Dimension.End.Column;
        i++)
{
    for (int j = workSheet.Dimension.Start.Row;
            j <= workSheet.Dimension.End.Row;
            j++)
    {
        object cellValue = GetCellValueFromPossiblyMergedCell(workSheet,i, j);
    }
}

在合并单元格的情况下,我相信你通过其左上角的单元格引用来引用合并的单元格。以下辅助方法将获取合并单元格的值。

static string GetCellValueFromPossiblyMergedCell(ExcelWorksheet wks, int row, int col)
    {
        var cell = wks.Cells[row, col];
        if (cell.Merge)                                              //(1.)
        {
            var mergedId = wks.MergedCells[row, col];                //(2.)
            return wks.Cells[mergedId].First().Value.ToString();     //(3.)
        }
        else
        {
            return cell.Value.ToString();
        }
    }

Helper方法来自:How to use Epplus with cells containing few rows