Пытаюсь вставить строку в '*.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);
var rows = sheetData.Elements<Row>().ToArray();
uint idx = 0;
//here I set a sequentional RowIndex for each row
// if I do not use this code error described below remains
foreach (var r in rows)
r.RowIndex = ++idx;
}
Я хочу добавить новую строку после 5-й строки. НЕо когда я открываю сгенерированный файл в Excel 2016, я получаю вот такую ошибку:
Я могу открыть этот файл в LibreOffice Calc 6.4.3.2, но в нём нет добавленной строки.
Если использовать `sheetData.Append(row);` вместо `sheetData.InsertAfter(row, retRow);`, то это работает, и файл можно открыть в Excel. Но такой способ позволяет добавлять строки только в конец файла, а не в середину.
Может быть кто-то знает, как можно правильно вставлять строки в сущестующие .xlsx файлы? Заранее спасибо!