当我们想获取合并单元格的值的时候,例如想得到第二行A列的值的时候,如果我们直接用wSheet.Cells[2,1].value来获取值的话,得到的结果是空,因为合并单元格的值是放在合并区域的第一格的位置的,即图中的第一行A列。那么在利用EPPlus读取这些合并单元格位置的值的时候改怎么做呢,请参考一下代码。
注:该代码远行环境为EPPlus v4.0.4.0
public static string GetMegerValue(ExcelWorksheet wSheet, int row, int column)
{
string range = wSheet.MergedCells[row, column];
if (range == null)
if (wSheet.Cells[row, column].Value != null)
return wSheet.Cells[row, column].Value.ToString();
else
return "";
object value =
wSheet.Cells[(new ExcelAddress(range)).Start.Row, (new ExcelAddress(range)).Start.Column].Value;
if (value != null)
return value.ToString();
else
return "";
}
该函数的参数wSheet是你所需要读取的单元格所在的sheet, row和column分别是你要读取的单元格的行列号。另外,由于在读取的过程中,我们是按照顺序for循环往下读的,所以我们不知道某一单元格是否属于Merge Cells,所以在函数里面会进行判断,如果不是Merge Cell则直接返回单元格的值,否则返回Merge Value.