C# 删除行会打断合并的单元格

C# 删除行会打断合并的单元格,c#,merge,delete-row,epplus,cells,C#,Merge,Delete Row,Epplus,Cells,我正在删除某一行,该行后合并单元格的地址错误。 例如,存在合并单元格“A78:C78”。如果我这样做 地址 worksheet.Cells[77,1] worksheet.Cells[78,1] 是“A77”。但是 为空,但应为“A77:C77” 地址 worksheet.Cells[77,1] worksheet.Cells[78,1] 是“A78”。但是 是“A77:C77”,但应为空。 有趣而奇怪的是,在*.xlsx中保存的文档中有合并的单元格“A77:C77”。 我不明白为什么会

我正在删除某一行,该行后合并单元格的地址错误。 例如,存在合并单元格“A78:C78”。如果我这样做

地址

worksheet.Cells[77,1]
worksheet.Cells[78,1]
是“A77”。但是

为空,但应为“A77:C77”

地址

worksheet.Cells[77,1]
worksheet.Cells[78,1]
是“A78”。但是

是“A77:C77”,但应为空。 有趣而奇怪的是,在*.xlsx中保存的文档中有合并的单元格“A77:C77”。 我不明白为什么会这样。
可能有必要在删除行后以某种方式更新工作表,以获得合并单元格的正确地址?

覆盖此问题的解决方案是在再次获取合并单元格地址之前保存文件,我已在您提供的同一示例上尝试了以下代码,在打包.Save()后结果似乎是正确的

我使用了EPPLUS v4.1.1.0

worksheet.MergedCells[78,1]
 using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
            var address = worksheet.Cells[78, 1];//address is "A78"
            var mergedadress = worksheet.MergedCells[78, 1];//address is "A78:C78"
            worksheet.DeleteRow(5);
            address = worksheet.Cells[77, 1];//address is "A77"
            mergedaddress = worksheet.MergedCells[77, 1];//null
            address = worksheet.Cells[78, 1];//address is "A78"
            mergedaddress = worksheet.MergedCells[78, 1];//address is"A77:C77"
            package.Save();
        }

 using (var package = new ExcelPackage(new System.IO.FileInfo(filePath)))
        {
            ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
            var address = worksheet.Cells[77, 1];//address is "A77"
            var mergedaddress = worksheet.MergedCells[77, 1];//Address is "A77:C77"
            address = worksheet.Cells[78, 1];//address is "A78"
            mergedaddress = worksheet.MergedCells[78, 1];//null

            package.Save();
        }