diff --git a/OpenXmlFormats/Wordprocessing/Table.cs b/OpenXmlFormats/Wordprocessing/Table.cs index 956a78e53..2a32f2d76 100644 --- a/OpenXmlFormats/Wordprocessing/Table.cs +++ b/OpenXmlFormats/Wordprocessing/Table.cs @@ -651,6 +651,9 @@ private int GetItems1Index(Items1ChoiceType type, int p) pos++; } } + // Check if the position should be the last position when index cannot be find in for loop + if( index == -1&&pos == p) + index = items1Field.Count; return index; } private void RemoveItems1(Items1ChoiceType type, int p) diff --git a/ooxml/XWPF/Usermodel/XWPFTable.cs b/ooxml/XWPF/Usermodel/XWPFTable.cs index 5b64de3d0..7eb54223d 100644 --- a/ooxml/XWPF/Usermodel/XWPFTable.cs +++ b/ooxml/XWPF/Usermodel/XWPFTable.cs @@ -186,11 +186,6 @@ public String Text } } - public void AddNewRowBetween(int start, int end) - { - throw new NotImplementedException(); - } - /** * add a new column for each row in this table */ diff --git a/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs b/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs index 1bc83ff05..918470c02 100644 --- a/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs +++ b/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs @@ -121,6 +121,37 @@ public void TestCreateRow() xtab = new XWPFTable(new CT_Tbl(), doc); Assert.AreEqual(1, xtab.GetCTTbl().GetTrArray(0).SizeOfTcArray()); } + [Test] + public void TestInsertRow() + { + XWPFDocument doc = new XWPFDocument(); + + CT_Tbl table = new CT_Tbl(); + CT_Row r1 = table.AddNewTr(); + r1.AddNewTc().AddNewP(); + r1.AddNewTc().AddNewP(); + CT_Row r2 = table.AddNewTr(); + r2.AddNewTc().AddNewP(); + r2.AddNewTc().AddNewP(); + CT_Row r3 = table.AddNewTr(); + r3.AddNewTc().AddNewP(); + r3.AddNewTc().AddNewP(); + + XWPFTable xtab = new XWPFTable(table, doc); + Assert.AreEqual(3, xtab.NumberOfRows); + Assert.IsNotNull(xtab.GetRow(2)); + + //add a new row + xtab.CreateRow(); + Assert.AreEqual(4, xtab.NumberOfRows); + + xtab.InsertNewTableRow(0); + Assert.AreEqual(5, xtab.NumberOfRows); + xtab.InsertNewTableRow(xtab.NumberOfRows); + Assert.AreEqual(6, xtab.NumberOfRows); + + + } [Test] public void TestSetGetWidth()