I've got lots of XLSX files and I need to append a new row after the last one in the file. I'm using OpenXML and so far I know how to open/create spreadsheet, but my search for adding new rows to existing files returned nothing. Any ideas ?
Asked
Active
Viewed 2.9k times
2 Answers
24
If all you need to do is add a blank row to the end and you don't care if a row already exists at the row index, then the following should work for you:
public static void InsertRow(WorksheetPart worksheetPart)
{
SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
Row lastRow = sheetData.Elements<Row>().LastOrDefault();
if (lastRow != null)
{
sheetData.InsertAfter(new Row() { RowIndex = (lastRow.RowIndex + 1) }, lastRow);
}
else
{
sheetData.Insert(new Row() { RowIndex = 0 });
}
}
For OpenXML SDK 2.5 (Runtime) v4.0.30319 there is no Insert
method, thus use InsertAt
as follows:
...
}
else
{
sheetData.InsertAt(new Row() { RowIndex = 0 }, 0);
}
}
-
6For OpenXML SDK 2.5 (Runtime) v4.0.30319 there is no Insert method, thus used InsertAt as follows: `sheetData.InsertAt(new Row() { RowIndex = 0 }, 0);` – Janis S. Jul 12 '16 at 13:32
-
2@JanisS. 's comment seems fairly relevant. Maybe it can be added to the answer? – Panzercrisis May 19 '17 at 12:47
-
1@Panzercrisis, added as answer, thanks! – Janis S. May 19 '17 at 13:02
-
Thanks, it is still working as this way – balron May 12 '20 at 15:22
7
If you use OpenXML SDK 2.5 (Runtime) v4.0.30319 there is no Insert
method, but one can use InsertAt
instead as follows:
sheetData.InsertAt(new Row() { RowIndex = 0 }, 0);

Janis S.
- 2,526
- 22
- 32