我想遍历Excel单元格以获取数据,但单元格不规则。例如:由多行合并的红色单元格。如何遍历所有行?
我想遍历行以获取数据,如下所示:
有没有很好的方法来实现它?
答案 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();
}
}