ワークシートからすべてのマージされた細胞を得ることができ、あなたがマージされた範囲を見つけることができます ので、特定のセルを使用してに属し次
public string GetMergedRange(ExcelWorksheet worksheet, string cellAddress)
{
ExcelWorksheet.MergeCellsCollection mergedCells = worksheet.MergedCells;
foreach (var merged in mergedCells)
{
ExcelRange range = worksheet.Cells[merged];
ExcelCellAddress cell = new ExcelCellAddress(cellAddress);
if (range.Start.Row<=cell.Row && range.Start.Column <= cell.Column)
{
if (range.End.Row >= cell.Row && range.End.Column >= cell.Column)
{
return merged.ToString();
}
}
}
return "";
}
更新:
だけで次の操作を行い、EPPLUSを使ってもっと簡単な方法があることが判明:
例えば
var mergedadress = worksheet.MergedCells[row, column];
、B1は、マージされた範囲内であれば、「A1:C1」:
var mergedadress = worksheet.MergedCells[1, 2]; //value of mergedadress will be "A1:C1"
これは機能しません。私は恐れています。 'merged'は単なる文字列なので' .Contains(cellAddress) 'は" B1 "が" A1:C3 "の部分文字列であるかどうかをチェックします。空文字列を返しますが、" A1:C3 " –
更新された答えを確認してください、私は多くの例でそれをテストし、それは動作します –