Deleting rows breaks the merged cells
I am deleting some line and the merged cell address after this line is wrong. For example, cells "A78: C78" are merged. If i do
worksheet.DeleteRow(5)
Address
worksheet.Cells[77,1]
- "A77". But
worksheet.MergedCells[77,1]
is null, but it should be "A77: C77".
Address
worksheet.Cells[78,1]
- "A78". But
worksheet.MergedCells[78,1]
- "A77: C77", but it must be zero. Interestingly and strangely, the saved document in * .xlsx contains merged cells "A77: C77". I don't understand why this is happening. Maybe you need to somehow update the sheet after deleting rows for the correct address of the merged cells?
+3
source to share
1 answer
The solution to override this problem is to save the file before getting the merged cell address again, I tried the following code in the same example you provided and the results seem to be correct after package.Save ().
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();
}
I used EPPLUS v4.1.1.0
+1
source to share