Не могу вставить строку в существующий Excel файл с помощью OpenXmlSDK

Пытаюсь вставить строку в '*.xlsx' файл использую для этого OpenXml SDK. Мой код:

using var document = SpreadsheetDocument.Open("dspreadsheet.xlsx", true);
WorksheetPart worksheetPart = document.WorkbookPart.WorksheetParts.First();
var sheetData = worksheetPart.Worksheet.Elements<SheetData>().First();
InsertRow(sheetData, 5);
worksheetPart.Worksheet.Save();


static void InsertRow(SheetData sheetData, uint rowIndex)
{
    Row row = new Row();    

    Cell newCell = new Cell { DataType = CellValues.InlineString };            
    var inlineString = new InlineString();
    var text = new Text { Text = "some text for cell" };
    inlineString.Append(text);
    newCell.AppendChild(inlineString);
    row.AppendChild(newCell);        

    var retRow = sheetData.Elements<Row>().ElementAt((int)rowIndex);    
    sheetData.InsertAfter(row, retRow);        
}

Я хочу добавить новую строку после 5-й строки. Но когда я открываю сгенерированный файл в Excel 2016, добавленной строки там нет. Может быть кто-то знает, как можно правильно вставлять строки в существующие .xlsx файлы? Заранее спасибо!


Ответы (1 шт):

Автор решения: Андрей Войтик
static void InsertRow(SheetData sheetData, uint rowIndex)
{
    Row row = new Row();    

    Cell newCell = new Cell { DataType = CellValues.InlineString };            
    var inlineString = new InlineString();
    var text = new Text { Text = "some text for cell" };
    inlineString.Append(text);
    newCell.AppendChild(inlineString);
    row.AppendChild(newCell);        

    var retRow = sheetData.Elements<Row>().Last();    
    sheetData.InsertAfter(row, retRow);        
}
→ Ссылка