Удаление строк приводит к разрыву объединенных ячеек

Я удаляю некоторую строку, и адрес объединенной ячейки после этой строки неверен. Например, есть объединенные ячейки «A78:C78». Если я сделаю

worksheet.DeleteRow(5)

Адрес

worksheet.Cells[77,1]

"А77". Но

worksheet.MergedCells[77,1]

имеет значение null, но должно быть "A77:C77".

Адрес

worksheet.Cells[78,1]

это "А78". Но

worksheet.MergedCells[78,1]

"A77:C77", но он должен быть нулевым. Что интересно и странно, в сохраненном документе в формате *.xlsx есть объединенные ячейки "A77:C77". Я не могу понять, почему это происходит. Может нужно как-то обновить лист после удаления строк для правильного адреса объединенных ячеек?


person Alexander Kotelnikov    schedule 24.04.2017    source источник


Ответы (1)


Решение для преодоления этой проблемы заключается в сохранении файла перед повторным получением адреса mergedcell. Я попробовал следующий код на том же примере, который вы предоставили, и после 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();
        }

Я использовал EPPLUS v4.1.1.0

person Yahya Hussein    schedule 24.01.2018