diff --git a/OpenXmlFormats/Wordprocessing/Styles.cs b/OpenXmlFormats/Wordprocessing/Styles.cs index 6df1cb41d..8a46dac45 100644 --- a/OpenXmlFormats/Wordprocessing/Styles.cs +++ b/OpenXmlFormats/Wordprocessing/Styles.cs @@ -140,6 +140,11 @@ public CT_DocDefaults AddNewDocDefaults() this.docDefaultsField = new CT_DocDefaults(); return this.docDefaultsField; } + + public void RemoveStyle(int pos) + { + this.styleField.RemoveAt(pos); + } } diff --git a/ooxml/XWPF/Usermodel/XWPFStyles.cs b/ooxml/XWPF/Usermodel/XWPFStyles.cs index ebb2876a0..1225598bb 100644 --- a/ooxml/XWPF/Usermodel/XWPFStyles.cs +++ b/ooxml/XWPF/Usermodel/XWPFStyles.cs @@ -164,7 +164,27 @@ public void SetStyles(CT_Styles styles) } } + public CT_Styles GetCTStyles() + { + return ctStyles; + } + + /// + /// remove the specified style if present + /// + /// + /// + public bool RemoveStyle(int pos) + { + if(pos >= 0 && pos < NumberOfStyles) + { + listStyle.RemoveAt(pos); + ctStyles.RemoveStyle(pos); + return true; + } + return false; + } /** * Checks whether style with styleID exist * @param styleID styleID of the Style in the style-Document @@ -346,6 +366,11 @@ public XWPFStyle GetStyleWithSameName(XWPFStyle style) } + public List GetStyles() + { + return listStyle; + } + /** * Get the default style which applies text runs in the document */ diff --git a/testcases/ooxml/XWPF/UserModel/TestXWPFStyles.cs b/testcases/ooxml/XWPF/UserModel/TestXWPFStyles.cs index 95bbdccc5..7bd0f712e 100644 --- a/testcases/ooxml/XWPF/UserModel/TestXWPFStyles.cs +++ b/testcases/ooxml/XWPF/UserModel/TestXWPFStyles.cs @@ -236,5 +236,20 @@ public void TestMissingStyleId() doc.Close(); } + [Test] + public void TestRemoveStyle() + { + using(XWPFDocument sampleDoc = XWPFTestDataSamples.OpenSampleDocument("Styles.docx")) + { + XWPFStyles styles = sampleDoc.GetStyles(); + ClassicAssert.AreEqual(12, styles.GetStyles().Count); + XWPFStyle removedStyle = styles.GetStyle("Standard"); + styles.RemoveStyle(styles.GetStyles().IndexOf(removedStyle)); + + XWPFDocument docIn = XWPFTestDataSamples.WriteOutAndReadBack(sampleDoc); + ClassicAssert.AreEqual(11, docIn.GetStyles().GetStyles().Count); + ClassicAssert.IsNull(docIn.GetStyles().GetStyle("Standard")); + } +} } }