NPOI v2.3.0 解决重复多次合并单元格造成的低效率问题
问题背景:现存在一个含有多列的sheet,比较同列相邻上下两个单元格,若内容相同则将其合并。
原方法:
/// <summary>
/// 合并单元格并返回(此方法效率极低,已弃用)
/// </summary>
/// <param name="sheet"></param>
/// <param name="mergedCell">可能是某个Region内的单元格,也可以是独立的单元格</param>
/// <param name="iCell">必须是独立的单元格</param>
private static CellRangeAddress MergeRegion(ISheet sheet, ICell mergedCell, ICell iCell)
{
var firstRow = mergedCell.RowIndex;
var firstCol = mergedCell.ColumnIndex;
var lastRow = iCell.RowIndex;
var lastCol = iCell.ColumnIndex;
CellRangeAddress region;
var index = GetMergedRegion(sheet, firstRow, firstCol);
if (index >= 0)
{
region = sheet.GetMergedRegion(index);
firstRow = region.FirstRow;
firstCol = region.FirstColumn;
//MergedRegion不允许重叠,因此要先移除旧Region,再添加新Region
sheet.RemoveMergedRegion(index);
}
//firstRow<=lastRow 并且 firstCol<=lastCol
region = new CellRangeAddress(firstRow, lastRow, firstCol, lastCol);
sheet.AddMergedRegion(region)