ClosedXMLつこうて感想メモ
①Row().Deleteする際はRow内各セルに関連する結合をすべて解除する
private static void RemoveMergedRangeInRow(IXLWorksheet sheet, int row)
{
for (int j = 1; j <= sheet.LastColumnUsed().ColumnNumber(); j++)
{
var vvv = GetMergedRange(sheet, row, j);
if (vvv != null)
{
sheet.MergedRanges.Remove(vvv);
}
}
}
private static IXLRange GetMergedRange(IXLWorksheet sheet, int row, int col)
{
foreach (var ml in sheet.MergedRanges)
{
if (IsInRange(row, col, ml))
{
return ml;
}
}
return null;
}
private static bool IsInRange(int row, int col, IXLRange ml)
{
var ad = ml.RangeAddress;
var r1 = ad.FirstAddress;
var r2 = ad.LastAddress;
var aaa1 = r1.RowNumber;
var aaa2 = r2.RowNumber;
var bbb1 = r1.ColumnNumber;
var bbb2 = r2.ColumnNumber;
return bbb1 <= col && col <= bbb2 && aaa1 <= row && row <= aaa2;
}
②Rows().Deleteメソッドが欲しいなぁ。
上記①めんどくさいし。結合セル丸ごと含む行を一気に削除できれば楽。