From 100ab8db9c868c272a21b3e424a176536807aff9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E8=BB=92=E7=AB=B9?= Date: Fri, 6 Jan 2023 15:58:18 +0800 Subject: [PATCH 1/4] Fix row cannot insert to the last position of the table --- OpenXmlFormats/Wordprocessing/Table.cs | 2 ++ .../ooxml/XWPF/UserModel/TestXWPFTable.cs | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/OpenXmlFormats/Wordprocessing/Table.cs b/OpenXmlFormats/Wordprocessing/Table.cs index 956a78e53..b9630e48a 100644 --- a/OpenXmlFormats/Wordprocessing/Table.cs +++ b/OpenXmlFormats/Wordprocessing/Table.cs @@ -651,6 +651,8 @@ private int GetItems1Index(Items1ChoiceType type, int p) pos++; } } + if(pos == p && index == -1) + index = items1Field.Count; return index; } private void RemoveItems1(Items1ChoiceType type, int p) diff --git a/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs b/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs index 1bc83ff05..fac359af8 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 TestInsertCreateRow() + { + 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() From 468d5b24c244b4e1a11ff08cca14d9a40104e285 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E8=BB=92=E7=AB=B9?= Date: Fri, 6 Jan 2023 16:00:09 +0800 Subject: [PATCH 2/4] Rename test --- testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs b/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs index fac359af8..918470c02 100644 --- a/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs +++ b/testcases/ooxml/XWPF/UserModel/TestXWPFTable.cs @@ -122,7 +122,7 @@ public void TestCreateRow() Assert.AreEqual(1, xtab.GetCTTbl().GetTrArray(0).SizeOfTcArray()); } [Test] - public void TestInsertCreateRow() + public void TestInsertRow() { XWPFDocument doc = new XWPFDocument(); From e7f04177a5cfdc94c507014a45e4f42fbad88ced Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E8=BB=92=E7=AB=B9?= Date: Fri, 6 Jan 2023 16:11:10 +0800 Subject: [PATCH 3/4] Fix format --- OpenXmlFormats/Wordprocessing/Table.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/OpenXmlFormats/Wordprocessing/Table.cs b/OpenXmlFormats/Wordprocessing/Table.cs index b9630e48a..2a32f2d76 100644 --- a/OpenXmlFormats/Wordprocessing/Table.cs +++ b/OpenXmlFormats/Wordprocessing/Table.cs @@ -651,7 +651,8 @@ private int GetItems1Index(Items1ChoiceType type, int p) pos++; } } - if(pos == p && index == -1) + // 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; } From 6ba4635344808843b466d9e4a5fcdec27ce5cdb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E8=BB=92=E7=AB=B9?= Date: Fri, 6 Jan 2023 17:35:20 +0800 Subject: [PATCH 4/4] Remove AddNewRowBetween because the POI document said it is deprecated. Ref: https://poi.apache.org/apidocs/4.1/org/apache/poi/xwpf/usermodel/XWPFTable.html#addNewRowBetween-int-int- --- ooxml/XWPF/Usermodel/XWPFTable.cs | 5 ----- 1 file changed, 5 deletions(-) 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 */