From 6952eb46994cdd20d1e8a42fc1326737f4289a73 Mon Sep 17 00:00:00 2001 From: lindexi Date: Thu, 1 Jul 2021 08:48:34 +0800 Subject: [PATCH 001/193] Fix code --- docs/working-with-animation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index a3607751..09a13092 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -173,9 +173,9 @@ element should be used as follows: - + - + From 9273bb779282b102fb690fa95c14878092302a7b Mon Sep 17 00:00:00 2001 From: StephenBrentPeters <101433558+StephenBrentPeters@users.noreply.github.com> Date: Tue, 21 Jun 2022 18:24:16 -0700 Subject: [PATCH 002/193] [BrokenLinksH2] fixing broken links --- ...how-to-accept-all-revisions-in-a-word-processing-document.md | 1 - docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md | 2 +- ...ocument-part-that-receives-a-relationship-id-to-a-package.md | 2 +- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md index dce33047..b5f54fa9 100644 --- a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md +++ b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md @@ -507,4 +507,3 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) -- [Accepting Revisions in Open XML Word-Processing Documents](/previous-versions/office/developer/office-2007/ee836138) diff --git a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md index 84889905..8cb0f5bc 100644 --- a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md +++ b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md @@ -760,6 +760,6 @@ comment string to the first slide in the presentation file Myppt1.pptx. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md index 82a366ea..01b58d86 100644 --- a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md @@ -301,6 +301,6 @@ The following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-tables-to-word-processing-documents.md b/docs/how-to-add-tables-to-word-processing-documents.md index e3121864..19161174 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -166,7 +166,7 @@ Before you can insert a table into a document, you must create the [Table](/dotn table.AppendChild(Of TableProperties)(props) ``` -The constructor for the **TableProperties** class allows you to specify as many child elements as you like (much like the [XElement](/dotnet/api/system.xml.linq.xelement) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder) child elements, each describing one of the border elements for the table. For each element, the code sets the **Val** and **Size** properties as part of calling the constructor. Setting the size is simple, but setting the **Val** property requires a bit more effort: this property, for this particular object, represents the border style, and you must set it to an enumerated value. To do that, create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues) as a parameter to the constructor. Once the code has set all the table border value it needs to set, it calls the [AppendChild\](/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. +The constructor for the **TableProperties** class allows you to specify as many child elements as you like (much like the [XElement](/dotnet/api/system.xml.linq.xelement) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder) child elements, each describing one of the border elements for the table. For each element, the code sets the **Val** and **Size** properties as part of calling the constructor. Setting the size is simple, but setting the **Val** property requires a bit more effort: this property, for this particular object, represents the border style, and you must set it to an enumerated value. To do that, create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues) as a parameter to the constructor. Once the code has set all the table border value it needs to set, it calls the [AppendChild\](/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. ## Fill the table with data From 7002d692ab4abc629d617ef6a0214fc2bf2910c8 Mon Sep 17 00:00:00 2001 From: StephenBrentPeters <101433558+StephenBrentPeters@users.noreply.github.com> Date: Tue, 21 Jun 2022 18:31:49 -0700 Subject: [PATCH 003/193] [BrokenLinksH2] fixing broken links --- ...how-to-accept-all-revisions-in-a-word-processing-document.md | 2 +- docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md | 2 -- ...ocument-part-that-receives-a-relationship-id-to-a-package.md | 1 + docs/how-to-add-tables-to-word-processing-documents.md | 1 + 4 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md index b5f54fa9..12015514 100644 --- a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md +++ b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md @@ -506,4 +506,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md index 8cb0f5bc..8d6837c2 100644 --- a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md +++ b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md @@ -759,7 +759,5 @@ comment string to the first slide in the presentation file Myppt1.pptx. ## See also - - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) - diff --git a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md index 01b58d86..cad271eb 100644 --- a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md @@ -302,5 +302,6 @@ The following is the complete code example in both C\# and Visual Basic. - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) + diff --git a/docs/how-to-add-tables-to-word-processing-documents.md b/docs/how-to-add-tables-to-word-processing-documents.md index 19161174..8a2703af 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -382,3 +382,4 @@ The following is the complete **AddTable** code sample in C\# and Visual Basic. ## See also - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) + From c78162f9b9d932567d00eccf1522590a78d7bf1c Mon Sep 17 00:00:00 2001 From: Ilton ingui Date: Tue, 28 Jun 2022 11:14:47 +0100 Subject: [PATCH 004/193] Update how-to-parse-and-read-a-large-spreadsheet.md Changed comment "Open the document for editing" to "Open the document as read-only" according to the example the it's describing --- docs/how-to-parse-and-read-a-large-spreadsheet.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/how-to-parse-and-read-a-large-spreadsheet.md b/docs/how-to-parse-and-read-a-large-spreadsheet.md index 7d5eee59..4c786d41 100644 --- a/docs/how-to-parse-and-read-a-large-spreadsheet.md +++ b/docs/how-to-parse-and-read-a-large-spreadsheet.md @@ -60,7 +60,7 @@ this example, the parameter is **false** because the document is opened as read-only. ```csharp - // Open the document for editing. + // Open the document as read-only. using (SpreadsheetDocument spreadsheetDocument = SpreadsheetDocument.Open(fileName, false)) { @@ -69,7 +69,7 @@ because the document is opened as read-only. ``` ```vb - ' Open the document for editing. + ' Open the document as read-only. Using spreadsheetDocument As SpreadsheetDocument = _ SpreadsheetDocument.Open(filename, False) ' Code removed here. From b08160941ec988f5752e5739c8cff04af6422472 Mon Sep 17 00:00:00 2001 From: Blake Hollingsworth Date: Fri, 15 Jul 2022 09:40:55 -0400 Subject: [PATCH 005/193] Fixed misspelling of Styles --- ...pply-a-style-to-a-paragraph-in-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md index faf6f4ec..c4409875 100644 --- a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md +++ b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md @@ -204,7 +204,7 @@ the instance, as shown in the following code example. Dim pPr As ParagraphProperties = p.Elements(Of ParagraphProperties)().First() ``` -## Add the atyles part +## Add the Styles part With the paragraph found and the paragraph properties element present, now ensure that the prerequisites are in place for applying the style. From 9b4ecdc456a68c8acb3a608cc56c1c74fc98d79c Mon Sep 17 00:00:00 2001 From: mohitp930 <103079000+mohitp930@users.noreply.github.com> Date: Thu, 21 Jul 2022 17:48:56 -0400 Subject: [PATCH 006/193] [BrokenLinksH2] --- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- docs/how-to-apply-a-theme-to-a-presentation.md | 2 +- ...w-to-change-text-in-a-table-in-a-word-processing-document.md | 2 +- ...how-to-change-the-fill-color-of-a-shape-in-a-presentation.md | 2 +- ...hange-the-print-orientation-of-a-word-processing-document.md | 2 +- ...processing-document-from-the-docm-to-the-docx-file-format.md | 2 +- ...s-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md | 2 +- docs/how-to-create-a-package.md | 2 +- ...o-create-a-presentation-document-by-providing-a-file-name.md | 2 +- ...e-and-add-a-character-style-to-a-word-processing-document.md | 2 +- ...e-and-add-a-paragraph-style-to-a-word-processing-document.md | 2 +- docs/how-to-delete-a-slide-from-a-presentation.md | 2 +- ...by-all-or-a-specific-author-in-a-word-processing-document.md | 2 +- docs/how-to-extract-styles-from-a-word-processing-document.md | 2 +- .../how-to-get-all-the-external-hyperlinks-in-a-presentation.md | 2 +- docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md | 2 +- docs/how-to-insert-a-table-into-a-word-processing-document.md | 2 +- docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md | 2 +- .../how-to-move-a-paragraph-from-one-presentation-to-another.md | 2 +- docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md | 2 +- .../how-to-open-a-presentation-document-for-read-only-access.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/how-to-add-tables-to-word-processing-documents.md b/docs/how-to-add-tables-to-word-processing-documents.md index e3121864..19161174 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -166,7 +166,7 @@ Before you can insert a table into a document, you must create the [Table](/dotn table.AppendChild(Of TableProperties)(props) ``` -The constructor for the **TableProperties** class allows you to specify as many child elements as you like (much like the [XElement](/dotnet/api/system.xml.linq.xelement) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder) child elements, each describing one of the border elements for the table. For each element, the code sets the **Val** and **Size** properties as part of calling the constructor. Setting the size is simple, but setting the **Val** property requires a bit more effort: this property, for this particular object, represents the border style, and you must set it to an enumerated value. To do that, create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues) as a parameter to the constructor. Once the code has set all the table border value it needs to set, it calls the [AppendChild\](/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. +The constructor for the **TableProperties** class allows you to specify as many child elements as you like (much like the [XElement](/dotnet/api/system.xml.linq.xelement) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder) child elements, each describing one of the border elements for the table. For each element, the code sets the **Val** and **Size** properties as part of calling the constructor. Setting the size is simple, but setting the **Val** property requires a bit more effort: this property, for this particular object, represents the border style, and you must set it to an enumerated value. To do that, create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues) as a parameter to the constructor. Once the code has set all the table border value it needs to set, it calls the [AppendChild\](/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. ## Fill the table with data diff --git a/docs/how-to-apply-a-theme-to-a-presentation.md b/docs/how-to-apply-a-theme-to-a-presentation.md index 42dd69b9..0ec6c01c 100644 --- a/docs/how-to-apply-a-theme-to-a-presentation.md +++ b/docs/how-to-apply-a-theme-to-a-presentation.md @@ -674,7 +674,7 @@ would see the same theme of the file Myppt9-theme.pptx. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md b/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md index 04e0c8af..fb42a460 100644 --- a/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md +++ b/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md @@ -259,7 +259,7 @@ Following is the complete code example. ## See also -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [How to: Change Text in a Table in a Word Processing Document](https://msdn.microsoft.com/library/documentformat.openxml.wordprocessing.table(office.14).aspx) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) [Extension Methods (C\# Programming Guide)](https://msdn.microsoft.com/library/bb383977.aspx) diff --git a/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md b/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md index eff149d0..6e94302d 100644 --- a/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md +++ b/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md @@ -347,7 +347,7 @@ change in the fill color. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md b/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md index a551c8ee..ff100e47 100644 --- a/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md +++ b/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md @@ -528,4 +528,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md b/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md index 079b7487..17e2fe43 100644 --- a/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md +++ b/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md @@ -334,4 +334,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md index 44fdbcf2..207d2786 100644 --- a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md +++ b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md @@ -276,7 +276,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index eb32b632..c1c1ae73 100644 --- a/docs/how-to-create-a-package.md +++ b/docs/how-to-create-a-package.md @@ -311,7 +311,7 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md b/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md index 324e2de2..64f03c44 100644 --- a/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md @@ -787,4 +787,4 @@ presentation, given a file path. [How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md b/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md index 6957de6d..81cf518c 100644 --- a/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md +++ b/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md @@ -629,4 +629,4 @@ The following is the complete **CreateAndAddCharacterStyle** code sample in both ## See also [How to: Apply a style to a paragraph in a word processing document (Open XML SDK)](how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md) -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md b/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md index 98b0bd09..8fa0c998 100644 --- a/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md +++ b/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md @@ -731,4 +731,4 @@ C\# and Visual Basic. ## See also - [Apply a style to a paragraph in a word processing document (Open XML SDK)](how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md) -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-a-slide-from-a-presentation.md b/docs/how-to-delete-a-slide-from-a-presentation.md index ac03d574..85173178 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -718,4 +718,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md b/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md index 30a8fbb9..5046bdcb 100644 --- a/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md +++ b/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md @@ -483,4 +483,4 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-extract-styles-from-a-word-processing-document.md b/docs/how-to-extract-styles-from-a-word-processing-document.md index 000b1c86..6a3cf8b6 100644 --- a/docs/how-to-extract-styles-from-a-word-processing-document.md +++ b/docs/how-to-extract-styles-from-a-word-processing-document.md @@ -338,4 +338,4 @@ The following is the complete **ExtractStylesPart** code sample in C\# and Visua ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md index c12d310e..6cfe6dbd 100644 --- a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md +++ b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md @@ -356,4 +356,4 @@ get the list of URIs in your presentation. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md index 26f0e72b..ce835395 100644 --- a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md +++ b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md @@ -631,4 +631,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-table-into-a-word-processing-document.md b/docs/how-to-insert-a-table-into-a-word-processing-document.md index 1a84e776..ecf19f2a 100644 --- a/docs/how-to-insert-a-table-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-table-into-a-word-processing-document.md @@ -399,7 +399,7 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Object Initializers: Named and Anonymous Types (Visual Basic .NET)](https://msdn.microsoft.com/library/bb385125.aspx) diff --git a/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md b/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md index 8162b326..7d5a087c 100644 --- a/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md +++ b/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md @@ -580,7 +580,7 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md index 0f875012..1e76b88b 100644 --- a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md +++ b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md @@ -479,4 +479,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md index bebe33bb..beddf820 100644 --- a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md +++ b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md @@ -637,4 +637,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-presentation-document-for-read-only-access.md b/docs/how-to-open-a-presentation-document-for-read-only-access.md index 68994fc8..dd2038ea 100644 --- a/docs/how-to-open-a-presentation-document-for-read-only-access.md +++ b/docs/how-to-open-a-presentation-document-for-read-only-access.md @@ -379,4 +379,4 @@ The following is the complete code listing in C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) From daee029ebeb035d0e0427d205774277db103161b Mon Sep 17 00:00:00 2001 From: mohitp930 <103079000+mohitp930@users.noreply.github.com> Date: Fri, 22 Jul 2022 12:28:59 -0400 Subject: [PATCH 007/193] [BrokenLinksH2] --- docs/how-to-remove-a-document-part-from-a-package.md | 2 +- ...how-to-remove-hidden-text-from-a-word-processing-document.md | 2 +- ...e-the-headers-and-footers-from-a-word-processing-document.md | 2 +- ...to-replace-the-styles-parts-in-a-word-processing-document.md | 2 +- ...etrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md | 2 +- ...eve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md | 2 +- ...how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md | 2 +- ...plication-property-values-from-a-word-processing-document.md | 2 +- .../how-to-retrieve-comments-from-a-word-processing-document.md | 2 +- ...-retrieve-the-number-of-slides-in-a-presentation-document.md | 2 +- docs/how-to-set-the-font-for-a-text-run.md | 2 +- docs/how-to-validate-a-word-processing-document.md | 2 +- docs/includes/addinsnote.md | 2 +- docs/introduction-to-markup-compatibility.md | 2 +- docs/working-with-slide-masters.md | 2 +- 15 files changed, 15 insertions(+), 15 deletions(-) diff --git a/docs/how-to-remove-a-document-part-from-a-package.md b/docs/how-to-remove-a-document-part-from-a-package.md index bc7dba08..41b6f6cb 100644 --- a/docs/how-to-remove-a-document-part-from-a-package.md +++ b/docs/how-to-remove-a-document-part-from-a-package.md @@ -221,4 +221,4 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-remove-hidden-text-from-a-word-processing-document.md b/docs/how-to-remove-hidden-text-from-a-word-processing-document.md index cfc28b38..ec4ea0cc 100644 --- a/docs/how-to-remove-hidden-text-from-a-word-processing-document.md +++ b/docs/how-to-remove-hidden-text-from-a-word-processing-document.md @@ -262,4 +262,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md b/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md index d28fed36..52d5956c 100644 --- a/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md +++ b/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md @@ -366,4 +366,4 @@ Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md index 39c0b527..ec8e5657 100644 --- a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md @@ -500,4 +500,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md b/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md index c1a98fff..f4ada4ee 100644 --- a/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md @@ -231,4 +231,4 @@ The following is the complete **GetDefinedNames** code sample in C\# and Visual ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md b/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md index 63ac2bee..09f6c687 100644 --- a/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md @@ -363,4 +363,4 @@ The following is the complete **GetHiddenRowsOrCols** code sample in C\# and Vis ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md b/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md index d8cce05e..fc6215f3 100644 --- a/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md @@ -239,4 +239,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md b/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md index af751a25..9911dad6 100644 --- a/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md +++ b/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md @@ -167,4 +167,4 @@ The following is the complete code sample in C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-comments-from-a-word-processing-document.md b/docs/how-to-retrieve-comments-from-a-word-processing-document.md index d8d4e791..ab40c50b 100644 --- a/docs/how-to-retrieve-comments-from-a-word-processing-document.md +++ b/docs/how-to-retrieve-comments-from-a-word-processing-document.md @@ -238,4 +238,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md b/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md index 6e70a0d3..34bd031a 100644 --- a/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md +++ b/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md @@ -248,4 +248,4 @@ Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-set-the-font-for-a-text-run.md b/docs/how-to-set-the-font-for-a-text-run.md index 48ad5117..438ce739 100644 --- a/docs/how-to-set-the-font-for-a-text-run.md +++ b/docs/how-to-set-the-font-for-a-text-run.md @@ -269,7 +269,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Object Initializers: Named and Anonymous Types](https://msdn.microsoft.com/library/bb385125.aspx) diff --git a/docs/how-to-validate-a-word-processing-document.md b/docs/how-to-validate-a-word-processing-document.md index bc9b3649..f060fd5b 100644 --- a/docs/how-to-validate-a-word-processing-document.md +++ b/docs/how-to-validate-a-word-processing-document.md @@ -219,4 +219,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/includes/addinsnote.md b/docs/includes/addinsnote.md index 062131ff..70918865 100644 --- a/docs/includes/addinsnote.md +++ b/docs/includes/addinsnote.md @@ -1,2 +1,2 @@ > [!NOTE] -> Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new [Office Add-ins model](/office/dev/add-ins/overview/office-add-ins.md). Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML. +> Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new [Office Add-ins model](/office/dev/add-ins/overview/office-add-ins). Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML. diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index 4852e433..0c527ae8 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -25,7 +25,7 @@ Suppose you have a Microsoft Word 2013 document that employs a feature introduce Consider also what should happen if you open that document in a hypothetical later version of Office. Here too, you want the document to work as expected. That is, you want the later version of Office to understand and support a feature employed in a document produced by Word 2013. -Open XML anticipates these scenarios. The Office Open XML File Formats specification describes facilities for achieving the above desired outcomes in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-376,%20Second%20Edition,%20Part%203%20-%20Markup%20Compatibility%20and%20Extensibility.zip). +Open XML anticipates these scenarios. The Office Open XML File Formats specification describes facilities for achieving the above desired outcomes in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/publications-and-standards/standards/ecma-376/). The Open XML SDK 2.5 supports markup compatibility in a way that makes it easy for you to achieve the above desired outcomes for and Office 2013 without having to necessarily become an expert in the specification details. diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index c52f6c92..ded5dc02 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -146,7 +146,7 @@ element. Among these classes, as shown in the following code sample, are the **C ## Open XML SDK Code Example -The following method from the article [How to: Create a presentation document by providing a file name [Open XML SDK](/office/open-xml/how-to-create-a-presentation-document-by-providing-a-file-name.md) adds a new slidemaster part to an existing presentation and creates an instance of an Open XML SDK 2.5**SlideMaster** class in the new slide master part. The **SlideMaster** class constructor creates instances of the **CommonSlideData** class and the **ColorMap**, **SlideLayoutIdList**, and **TextStyles** classes. The **CommonSlideData** class constructor creates an instance of the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, whose constructor in turn creates additional class instances: an instance of the **[NonVisualGroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx)** class, an instance of the **[GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx)** class, and an instance of the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class, among others. +The following method from the article [How to: Create a presentation document by providing a file name](/office/open-xml/how-to-create-a-presentation-document-by-providing-a-file-name) adds a new slidemaster part to an existing presentation and creates an instance of an Open XML SDK 2.5**SlideMaster** class in the new slide master part. The **SlideMaster** class constructor creates instances of the **CommonSlideData** class and the **ColorMap**, **SlideLayoutIdList**, and **TextStyles** classes. The **CommonSlideData** class constructor creates an instance of the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, whose constructor in turn creates additional class instances: an instance of the **[NonVisualGroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx)** class, an instance of the **[GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx)** class, and an instance of the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class, among others. The namespace represented by the letter *P* in the code is the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. From f6acdcaf3749e35d9f8028c88c400178bca7effc Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 22 Jul 2022 12:41:33 -0700 Subject: [PATCH 008/193] fix broken link --- docs/includes/addinsnote.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/includes/addinsnote.md b/docs/includes/addinsnote.md index 062131ff..70918865 100644 --- a/docs/includes/addinsnote.md +++ b/docs/includes/addinsnote.md @@ -1,2 +1,2 @@ > [!NOTE] -> Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new [Office Add-ins model](/office/dev/add-ins/overview/office-add-ins.md). Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML. +> Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new [Office Add-ins model](/office/dev/add-ins/overview/office-add-ins). Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML. From baf429e17faa28b1b0fb1b9268684b48c22732f1 Mon Sep 17 00:00:00 2001 From: Code-Nat <44806486+Code-Nat@users.noreply.github.com> Date: Mon, 8 Aug 2022 13:09:34 +0300 Subject: [PATCH 009/193] Fixed small typo Fixed small typo in the code missing ( at line 336 --- docs/how-to-insert-a-chart-into-a-spreadsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to-insert-a-chart-into-a-spreadsheet.md b/docs/how-to-insert-a-chart-into-a-spreadsheet.md index 4e679ff6..d78b4e9d 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -333,7 +333,7 @@ The code then iterates through each key in the **Dictionary** class. For each ke Layout layout = plotArea.AppendChild(new Layout()); BarChart barChart = plotArea.AppendChild(new BarChart(new BarDirection() { Val = new EnumValue(BarDirectionValues.Column) }, - new BarGrouping() { Val = new EnumValue BarGroupingValues.Clustered) })); + new BarGrouping() { Val = new EnumValue (BarGroupingValues.Clustered) })); uint i = 0; From 83be2c30036e35af59d5c335521a246d2c003ccf Mon Sep 17 00:00:00 2001 From: "microsoft-github-policy-service[bot]" <77245923+microsoft-github-policy-service[bot]@users.noreply.github.com> Date: Wed, 28 Sep 2022 18:56:14 +0000 Subject: [PATCH 010/193] Microsoft mandatory file --- SECURITY.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 00000000..e138ec5d --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,41 @@ + + +## Security + +Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/). + +If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below. + +## Reporting Security Issues + +**Please do not report security vulnerabilities through public GitHub issues.** + +Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report). + +If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey). + +You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). + +Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue: + + * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) + * Full paths of source file(s) related to the manifestation of the issue + * The location of the affected source code (tag/branch/commit or direct URL) + * Any special configuration required to reproduce the issue + * Step-by-step instructions to reproduce the issue + * Proof-of-concept or exploit code (if possible) + * Impact of the issue, including how an attacker might exploit the issue + +This information will help us triage your report more quickly. + +If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs. + +## Preferred Languages + +We prefer all communications to be in English. + +## Policy + +Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd). + + From 6a189f78724319ed3e407c63aa3bb42d554fe67b Mon Sep 17 00:00:00 2001 From: jimmyhu <5549662+Jimmy-Hu@users.noreply.github.com> Date: Tue, 6 Dec 2022 17:27:16 +0800 Subject: [PATCH 011/193] [Fix] balancing brackets [Fix] balancing brackets --- docs/how-to-insert-a-new-slide-into-a-presentation.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/how-to-insert-a-new-slide-into-a-presentation.md b/docs/how-to-insert-a-new-slide-into-a-presentation.md index 7718ba14..0821ed94 100644 --- a/docs/how-to-insert-a-new-slide-into-a-presentation.md +++ b/docs/how-to-insert-a-new-slide-into-a-presentation.md @@ -227,6 +227,8 @@ its properties. // Specify the group shape properties of the new slide. slide.CommonSlideData.ShapeTree.AppendChild(new GroupShapeProperties()); + + } ``` ```vb From 8f7f904830733728390506a1ab047573377eb089 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Aug 2023 13:53:02 -0700 Subject: [PATCH 012/193] fix broken links --- README.md | 2 +- ...ate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md | 2 +- ...reate-a-word-processing-document-by-providing-a-file-name.md | 2 +- ...omments-by-an-author-from-all-the-slides-in-a-presentatio.md | 2 +- docs/how-to-insert-a-comment-into-a-word-processing-document.md | 2 +- docs/how-to-insert-a-new-slide-into-a-presentation.md | 2 +- docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md | 2 +- docs/how-to-open-a-spreadsheet-document-for-read-only-access.md | 2 +- docs/how-to-replace-the-header-in-a-word-processing-document.md | 2 +- ...w-to-replace-the-theme-part-in-a-word-processing-document.md | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b61851c0..99cfe893 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Open XML documentation -This repo is the source markdown for documentation published at /office/open-xml/open-xml-sdk.md. +This repo is the source markdown for documentation published at /office/open-xml/open-xml-sdk. ## Contributing diff --git a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md index 6bb7c243..9386b984 100644 --- a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md +++ b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md @@ -821,7 +821,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) - [Language-Integrated Query (LINQ) (C#)](/dotnet/csharp/programming-guide/concepts/linq/) - [Language-Integrated Query (LINQ) (Visual Basic)](/dotnet/visual-basic/programming-guide/concepts/linq/) - [Lambda Expressions (C#)](/dotnet/csharp/language-reference/operators/lambda-expressions.md) diff --git a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md index d072c004..a74f0dd0 100644 --- a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md @@ -223,4 +223,4 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md index 48e8fd4b..f06032c6 100644 --- a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md +++ b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md @@ -443,4 +443,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-comment-into-a-word-processing-document.md b/docs/how-to-insert-a-comment-into-a-word-processing-document.md index a3b2db19..0a28eccc 100644 --- a/docs/how-to-insert-a-comment-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-comment-into-a-word-processing-document.md @@ -364,7 +364,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-insert-a-new-slide-into-a-presentation.md b/docs/how-to-insert-a-new-slide-into-a-presentation.md index 7718ba14..6cf05995 100644 --- a/docs/how-to-insert-a-new-slide-into-a-presentation.md +++ b/docs/how-to-insert-a-new-slide-into-a-presentation.md @@ -749,4 +749,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md b/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md index fe1d8448..8b910c94 100644 --- a/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md @@ -296,7 +296,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md b/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md index c5f23af6..a8a2a9ff 100644 --- a/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md +++ b/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md @@ -302,4 +302,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-header-in-a-word-processing-document.md b/docs/how-to-replace-the-header-in-a-word-processing-document.md index 04702294..cf1551cc 100644 --- a/docs/how-to-replace-the-header-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-header-in-a-word-processing-document.md @@ -240,4 +240,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference]/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference]/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md b/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md index 19d337c6..591bc4a5 100644 --- a/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md @@ -289,4 +289,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) From e8d1d82b301b176facea49c57874004d4036ad6b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Aug 2023 16:12:48 -0700 Subject: [PATCH 013/193] Fix broken link --- docs/how-to-add-custom-ui-to-a-spreadsheet-document.md | 2 +- ...to-create-a-spreadsheet-document-by-providing-a-file-name.md | 2 +- docs/how-to-get-a-column-heading-in-a-spreadsheet.md | 2 +- docs/how-to-insert-a-picture-into-a-word-processing-document.md | 2 +- docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md | 2 +- docs/how-to-open-a-spreadsheet-document-from-a-stream.md | 2 +- ...w-to-open-a-word-processing-document-for-read-only-access.md | 2 +- docs/how-to-open-a-word-processing-document-from-a-stream.md | 2 +- docs/how-to-open-and-add-text-to-a-word-processing-document.md | 2 +- docs/how-to-parse-and-read-a-large-spreadsheet.md | 2 +- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 2 +- docs/how-to-search-and-replace-text-in-a-document-part.md | 2 +- ...ow-to-set-a-custom-property-in-a-word-processing-document.md | 2 +- docs/open-xml-sdk.md | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md index 9dddafa1..a57cc208 100644 --- a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md +++ b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md @@ -253,6 +253,6 @@ The following is the complete **AddCustomUI** code sample in C\# and Visual Basi ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) - [Ribbon Designer](https://msdn.microsoft.com/library/26617206-f4da-416f-a18a-d817b2d4872d(Office.15).aspx) - [Walkthrough: Creating a Custom Tab by Using the Ribbon Designer](https://msdn.microsoft.com/library/312865e6-950f-46ab-88de-fe7eb8036bfe(Office.15).aspx) diff --git a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md index 5cb8d4b0..25ce6133 100644 --- a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md @@ -236,4 +236,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md index 6b4300da..a07aaee9 100644 --- a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md +++ b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md @@ -410,7 +410,7 @@ Following is the complete sample code in both C\# and Visual Basic. -[Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-insert-a-picture-into-a-word-processing-document.md b/docs/how-to-insert-a-picture-into-a-word-processing-document.md index 79a37629..c93a47f3 100644 --- a/docs/how-to-insert-a-picture-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-picture-into-a-word-processing-document.md @@ -411,4 +411,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md index 149d9b53..565abaa9 100644 --- a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md +++ b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md @@ -762,7 +762,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-open-a-spreadsheet-document-from-a-stream.md b/docs/how-to-open-a-spreadsheet-document-from-a-stream.md index 415154ca..7fa3dea6 100644 --- a/docs/how-to-open-a-spreadsheet-document-from-a-stream.md +++ b/docs/how-to-open-a-spreadsheet-document-from-a-stream.md @@ -280,4 +280,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-word-processing-document-for-read-only-access.md b/docs/how-to-open-a-word-processing-document-for-read-only-access.md index 9f226b14..a5dc6812 100644 --- a/docs/how-to-open-a-word-processing-document-for-read-only-access.md +++ b/docs/how-to-open-a-word-processing-document-for-read-only-access.md @@ -359,4 +359,4 @@ The following is the complete sample code in C\# and VB. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-word-processing-document-from-a-stream.md b/docs/how-to-open-a-word-processing-document-from-a-stream.md index 832c23d7..982989c8 100644 --- a/docs/how-to-open-a-word-processing-document-from-a-stream.md +++ b/docs/how-to-open-a-word-processing-document-from-a-stream.md @@ -233,4 +233,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-and-add-text-to-a-word-processing-document.md b/docs/how-to-open-and-add-text-to-a-word-processing-document.md index 15d1501b..3904d109 100644 --- a/docs/how-to-open-and-add-text-to-a-word-processing-document.md +++ b/docs/how-to-open-and-add-text-to-a-word-processing-document.md @@ -222,4 +222,4 @@ of **OpenSettings**. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-parse-and-read-a-large-spreadsheet.md b/docs/how-to-parse-and-read-a-large-spreadsheet.md index 7d5eee59..8c8ddc39 100644 --- a/docs/how-to-parse-and-read-a-large-spreadsheet.md +++ b/docs/how-to-parse-and-read-a-large-spreadsheet.md @@ -282,4 +282,4 @@ The following is the complete code sample in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md b/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md index 2bd9389a..5b721aaf 100644 --- a/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md @@ -540,4 +540,4 @@ The following is the complete **GetCellValue** code sample in C\# and Visual Bas ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-search-and-replace-text-in-a-document-part.md b/docs/how-to-search-and-replace-text-in-a-document-part.md index 6c3c4d3d..6f51f5e6 100644 --- a/docs/how-to-search-and-replace-text-in-a-document-part.md +++ b/docs/how-to-search-and-replace-text-in-a-document-part.md @@ -199,6 +199,6 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) [Regular Expressions](https://msdn.microsoft.com/library/hs600312.aspx) diff --git a/docs/how-to-set-a-custom-property-in-a-word-processing-document.md b/docs/how-to-set-a-custom-property-in-a-word-processing-document.md index 393ba450..0ecc0da7 100644 --- a/docs/how-to-set-a-custom-property-in-a-word-processing-document.md +++ b/docs/how-to-set-a-custom-property-in-a-word-processing-document.md @@ -728,4 +728,4 @@ The following is the complete **SetCustomProperty** code sample in C\# and Visua ## See also -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 93cba930..1268b4c6 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -49,7 +49,7 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. - [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) - [Understanding the Open XML file formats](understanding-the-open-xml-file-formats.md) - [How do I... (Open XML SDK)](how-do-i.md) -- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) ## See also From 992f00103839fc1f3e2ea21122dbcbe9b12c44cc Mon Sep 17 00:00:00 2001 From: Linda Cannon Date: Tue, 8 Aug 2023 16:24:07 -0700 Subject: [PATCH 014/193] Fix broken links --- ...-of-a-range-of-cells-in-a-spreadsheet-document.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md index 9386b984..d9fc60de 100644 --- a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md +++ b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md @@ -241,7 +241,7 @@ The code inserts a new cell for the result into the worksheet by calling the **I End Sub ``` To get the row index the code passes a parameter that represents the name of the cell, and creates a new regular expression to match the row -index portion of the cell name. For more information about regular expressions, see [Regular Expression Language Elements](/dotnet/standard/base-types/regular-expression-language-quick-reference.md). It gets the row index by calling the **[Regex.Match](https://msdn2.microsoft.com/library/3zy662f6)** method, and then returns the row index. +index portion of the cell name. For more information about regular expressions, see [Regular Expression Language Elements](/dotnet/standard/base-types/regular-expression-language-quick-reference). It gets the row index by calling the **[Regex.Match](https://msdn2.microsoft.com/library/3zy662f6)** method, and then returns the row index. ```csharp // Given a cell name, parses the specified cell to get the row index. @@ -266,7 +266,7 @@ index portion of the cell name. For more information about regular expressions, End Function ``` -The code then gets the column name by passing a parameter that represents the name of the cell, and creates a new regular expression to match the column name portion of the cell name. This regular expression matches any combination of uppercase or lowercase letters. It gets the column name by calling the **[Regex.Match](/dotnet/api/system.text.regularexpressions.regex.match.md)** method, and then returns the column name. +The code then gets the column name by passing a parameter that represents the name of the cell, and creates a new regular expression to match the column name portion of the cell name. This regular expression matches any combination of uppercase or lowercase letters. It gets the column name by calling the **[Regex.Match](/dotnet/api/system.text.regularexpressions.regex.match)** method, and then returns the column name. ```csharp // Given a cell name, parses the specified cell to get the column name. @@ -325,7 +325,7 @@ To compare two columns the code passes in two parameters that represent the colu End Function ``` -To insert a **SharedStringItem**, the code passes in a parameter that represents the text to insert into the cell and a parameter that represents the **SharedStringTablePart** object for the spreadsheet. If the **ShareStringTablePart** object does not contain a **[SharedStringTable](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringtable.aspx)** object then it creates one. If the text already exists in the **ShareStringTable** object, then it returns the index for the **[SharedStringItem](/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem.md)** object that represents the text. If the text does not exist, create a new **SharedStringItem** object that represents the text. It then returns the index for the **SharedStringItem** object that represents the text. +To insert a **SharedStringItem**, the code passes in a parameter that represents the text to insert into the cell and a parameter that represents the **SharedStringTablePart** object for the spreadsheet. If the **ShareStringTablePart** object does not contain a **[SharedStringTable](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringtable.aspx)** object then it creates one. If the text already exists in the **ShareStringTable** object, then it returns the index for the **[SharedStringItem](/dotnet/api/documentformat.openxml.spreadsheet.sharedstringitem)** object that represents the text. If the text does not exist, create a new **SharedStringItem** object that represents the text. It then returns the index for the **SharedStringItem** object that represents the text. ```csharp // Given text and a SharedStringTablePart, creates a SharedStringItem with the specified text @@ -385,7 +385,7 @@ To insert a **SharedStringItem**, the code passes in a parameter that represents End Function ``` -The final step is to insert a cell into the worksheet. The code does that by passing in parameters that represent the name of the column and the number of the row of the cell, and a parameter that represents the worksheet that contains the cell. If the specified row does not exist, it creates the row and append it to the worksheet. If the specified column exists, it finds the cell that matches the row in that column and returns the cell. If the specified column does not exist, it creates the column and inserts it into the worksheet. It then determines where to insert the new cell in the column by iterating through the row elements to find the cell that comes directly after the specified row, in sequential order. It saves this row in the **refCell** variable. It inserts the new cell before the cell referenced by **refCell** using the **[InsertBefore](/dotnet/api/documentformat.openxml.openxmlcompositeelement.insertbefore.md)** method. It then returns the new **Cell** object. +The final step is to insert a cell into the worksheet. The code does that by passing in parameters that represent the name of the column and the number of the row of the cell, and a parameter that represents the worksheet that contains the cell. If the specified row does not exist, it creates the row and append it to the worksheet. If the specified column exists, it finds the cell that matches the row in that column and returns the cell. If the specified column does not exist, it creates the column and inserts it into the worksheet. It then determines where to insert the new cell in the column by iterating through the row elements to find the cell that comes directly after the specified row, in sequential order. It saves this row in the **refCell** variable. It inserts the new cell before the cell referenced by **refCell** using the **[InsertBefore](/dotnet/api/documentformat.openxml.openxmlcompositeelement.insertbefore)** method. It then returns the new **Cell** object. ```csharp // Given a column name, a row index, and a WorksheetPart, inserts a cell into the worksheet. @@ -824,5 +824,5 @@ The following is the complete sample code in both C\# and Visual Basic. - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) - [Language-Integrated Query (LINQ) (C#)](/dotnet/csharp/programming-guide/concepts/linq/) - [Language-Integrated Query (LINQ) (Visual Basic)](/dotnet/visual-basic/programming-guide/concepts/linq/) -- [Lambda Expressions (C#)](/dotnet/csharp/language-reference/operators/lambda-expressions.md) -- [Lambda Expressions (Visual Basic)](/dotnet/visual-basic/programming-guide/language-features/procedures/lambda-expressions.md) +- [Lambda Expressions (C#)](/dotnet/csharp/language-reference/operators/lambda-expressions) +- [Lambda Expressions (Visual Basic)](/dotnet/visual-basic/programming-guide/language-features/procedures/lambda-expressions) From c354f7bd2ccdc74d50fa2e1295023dc91b37153b Mon Sep 17 00:00:00 2001 From: Linda Cannon Date: Tue, 8 Aug 2023 16:44:49 -0700 Subject: [PATCH 015/193] Update working-with-slide-masters.md --- docs/working-with-slide-masters.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index ded5dc02..1058d227 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -7,7 +7,6 @@ api_type: ms.assetid: 7dfd78a3-e233-4abd-8c17-1e384780d3ec title: Working with slide masters (Open XML SDK) ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual From ddc60d2bf350b57cd94cf9c8f05f7534b65915e1 Mon Sep 17 00:00:00 2001 From: p-kaczynski Date: Tue, 10 Oct 2023 14:58:38 +0100 Subject: [PATCH 016/193] Update how-to-insert-a-picture-into-a-word-processing-document.md Fixed remaining invalid `https://;` as per https://github.com/dotnet/Open-XML-SDK/issues/796#issuecomment-800594426 --- docs/how-to-insert-a-picture-into-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/how-to-insert-a-picture-into-a-word-processing-document.md b/docs/how-to-insert-a-picture-into-a-word-processing-document.md index c93a47f3..0859ca71 100644 --- a/docs/how-to-insert-a-picture-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-picture-into-a-word-processing-document.md @@ -236,7 +236,7 @@ Then, append the reference to the body. The element should be in a [Run](https:/ ) With {.Preset = A.ShapeTypeValues.Rectangle} _ ) _ ) _ - ) With {.Uri = "https://schemas.openxmlformats.org/drawingml/2006/picture"} _ + ) With {.Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture"} _ ) _ ) With {.DistanceFromTop = 0UI, _ .DistanceFromBottom = 0UI, _ From a6427404dc3a571b8d970a0c839fb677c0dd717d Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 10:11:41 -0700 Subject: [PATCH 017/193] Remove explicit version reference to 2.5 --- docs/about-the-open-xml-sdk.md | 22 ++++++------ docs/getting-started.md | 8 ++--- docs/how-do-i.md | 3 +- ...revisions-in-a-word-processing-document.md | 8 ++--- ...-a-comment-to-a-slide-in-a-presentation.md | 8 ++--- ...receives-a-relationship-id-to-a-package.md | 8 ++--- ...to-add-a-new-document-part-to-a-package.md | 8 ++--- ...add-custom-ui-to-a-spreadsheet-document.md | 9 +++-- ...add-tables-to-word-processing-documents.md | 6 ++-- ...paragraph-in-a-word-processing-document.md | 10 +++--- .../how-to-apply-a-theme-to-a-presentation.md | 10 +++--- ...ange-of-cells-in-a-spreadsheet-document.md | 8 ++--- ...n-a-table-in-a-word-processing-document.md | 4 +-- ...fill-color-of-a-shape-in-a-presentation.md | 4 +-- ...ientation-of-a-word-processing-document.md | 8 ++--- ...t-from-the-docm-to-the-docx-file-format.md | 12 +++---- ...ackage-part-to-a-document-part-in-a-dif.md | 8 ++--- docs/how-to-create-a-package.md | 8 ++--- ...ation-document-by-providing-a-file-name.md | 16 ++++----- ...sheet-document-by-providing-a-file-name.md | 8 ++--- ...ssing-document-by-providing-a-file-name.md | 8 ++--- ...ter-style-to-a-word-processing-document.md | 6 ++-- ...aph-style-to-a-word-processing-document.md | 8 ++--- ...w-to-delete-a-slide-from-a-presentation.md | 8 ++--- ...or-from-all-the-slides-in-a-presentatio.md | 8 ++--- ...ic-author-in-a-word-processing-document.md | 6 ++-- ...elete-text-from-a-cell-in-a-spreadsheet.md | 8 ++--- ...-styles-from-a-word-processing-document.md | 8 ++--- ...o-get-a-column-heading-in-a-spreadsheet.md | 8 ++--- ...e-external-hyperlinks-in-a-presentation.md | 8 ++--- ...l-the-text-in-a-slide-in-a-presentation.md | 8 ++--- ...he-text-in-all-slides-in-a-presentation.md | 8 ++--- ...tents-of-a-document-part-from-a-package.md | 8 ++--- ...les-of-all-the-slides-in-a-presentation.md | 8 ++--- ...et-worksheet-information-from-a-package.md | 8 ++--- ...ow-to-insert-a-chart-into-a-spreadsheet.md | 8 ++--- ...comment-into-a-word-processing-document.md | 4 +-- ...-insert-a-new-slide-into-a-presentation.md | 8 ++--- ...sert-a-new-worksheet-into-a-spreadsheet.md | 8 ++--- ...picture-into-a-word-processing-document.md | 4 +-- ...a-table-into-a-word-processing-document.md | 4 +-- ...nsert-text-into-a-cell-in-a-spreadsheet.md | 8 ++--- ...rge-two-adjacent-cells-in-a-spreadsheet.md | 8 ++--- ...agraph-from-one-presentation-to-another.md | 8 ++--- ...ide-to-a-new-position-in-a-presentation.md | 8 ++--- ...sentation-document-for-read-only-access.md | 10 +++--- ...readsheet-document-for-read-only-access.md | 14 ++++---- ...en-a-spreadsheet-document-from-a-stream.md | 14 ++++---- ...rocessing-document-for-read-only-access.md | 14 ++++---- ...-word-processing-document-from-a-stream.md | 14 ++++---- ...-add-text-to-a-word-processing-document.md | 12 +++---- ...w-to-parse-and-read-a-large-spreadsheet.md | 4 +-- ...o-remove-a-document-part-from-a-package.md | 10 +++--- ...en-text-from-a-word-processing-document.md | 8 ++--- ...footers-from-a-word-processing-document.md | 10 +++--- ...he-header-in-a-word-processing-document.md | 6 ++-- ...les-parts-in-a-word-processing-document.md | 8 ++--- ...heme-part-in-a-word-processing-document.md | 6 ++-- ...ry-of-all-named-ranges-in-a-spreadsheet.md | 8 ++--- ...hidden-rows-or-columns-in-a-spreadsheet.md | 6 ++-- ...-the-hidden-worksheets-in-a-spreadsheet.md | 8 ++--- ...list-of-the-worksheets-in-a-spreadsheet.md | 6 ++-- ...-values-from-a-word-processing-document.md | 6 ++-- ...omments-from-a-word-processing-document.md | 4 +-- ...er-of-slides-in-a-presentation-document.md | 6 ++-- ...ve-the-values-of-cells-in-a-spreadsheet.md | 6 ++-- ...rch-and-replace-text-in-a-document-part.md | 4 +-- ...-property-in-a-word-processing-document.md | 10 +++--- docs/how-to-set-the-font-for-a-text-run.md | 4 +-- ...-to-validate-a-word-processing-document.md | 4 +-- docs/introduction-to-markup-compatibility.md | 16 ++++----- docs/open-xml-sdk-design-considerations.md | 12 +++---- docs/open-xml-sdk.md | 18 +++++----- docs/packages-and-general.md | 4 +-- docs/presentations.md | 4 +-- docs/spreadsheets.md | 4 +-- .../structure-of-a-presentationml-document.md | 12 +++---- docs/structure-of-a-spreadsheetml-document.md | 14 ++++---- ...tructure-of-a-wordprocessingml-document.md | 12 +++---- docs/what-s-new-in-the-open-xml-sdk.md | 34 +++++++++---------- docs/word-processing.md | 4 +-- docs/working-with-animation.md | 10 +++--- docs/working-with-comments.md | 14 ++++---- docs/working-with-conditional-formatting.md | 10 +++--- docs/working-with-formulas.md | 2 +- docs/working-with-handout-master-slides.md | 16 ++++----- docs/working-with-notes-slides.md | 14 ++++---- docs/working-with-paragraphs.md | 10 +++--- docs/working-with-pivottables.md | 10 +++--- docs/working-with-presentation-slides.md | 14 ++++---- docs/working-with-presentations.md | 14 ++++---- docs/working-with-runs.md | 8 ++--- docs/working-with-sheets.md | 16 ++++----- docs/working-with-slide-layouts.md | 12 +++---- docs/working-with-slide-masters.md | 14 ++++---- docs/working-with-tables.md | 10 +++--- docs/working-with-the-calculation-chain.md | 10 +++--- docs/working-with-the-shared-string-table.md | 12 +++---- docs/working-with-wordprocessingml-tables.md | 20 +++++------ 99 files changed, 454 insertions(+), 458 deletions(-) diff --git a/docs/about-the-open-xml-sdk.md b/docs/about-the-open-xml-sdk.md index 90b330d7..b76a0ef8 100644 --- a/docs/about-the-open-xml-sdk.md +++ b/docs/about-the-open-xml-sdk.md @@ -4,7 +4,7 @@ api_name: api_type: - schema ms.assetid: 620e86b5-49f2-43dc-85d4-9c7456c09552 -title: About the Open XML SDK 2.5 for Office +title: About the Open XML SDK for Office ms.suite: office ms.author: o365devx author: o365devx @@ -13,7 +13,7 @@ ms.date: 11/01/2017 ms.localizationpriority: high --- -# About the Open XML SDK 2.5 for Office +# About the Open XML SDK for Office Open XML is an open standard for word-processing documents, presentations, and spreadsheets that can be freely implemented by multiple applications on different platforms. Open XML is designed to faithfully represent existing word-processing documents, presentations, and spreadsheets that are encoded in binary formats defined by Microsoft Office applications. The reason for Open XML is simple: billions of documents now exist but, unfortunately, the information in those documents is tightly coupled with the programs that created them. The purpose of the Open XML standard is to de-couple documents created by Microsoft Office applications so that they can be manipulated by other applications independent of proprietary formats and without the loss of data. @@ -62,24 +62,22 @@ Version 1 of the Open XML SDK simplified the manipulation of Open XML packages. - **Data update** With the Open XML object model, you can easily modify the data in multiple packages. - **Privacy** With a few lines of code, you can remove comments and other personal information from a document before it is distributed. -## Open XML SDK 2.0 for Microsoft Office - -The Open XML SDK 2.0 for Microsoft Office extended the strongly typed class support from the part classes, which are provided in version 1.0, to the XML content in each part. All functions available in version 1.0 are still supported. With version 2.0, you are able to program against the XML content inside the part. The SDK supports programming in the style of LINQ to XML which makes coding against the XML content much easier than the traditional W3C XML DOM programming model. +## Open XML SDK for Microsoft Office The SDK supports the following common tasks/scenarios: - **Strongly Typed Classes and Objects** Instead of relying on generic XML functionality to manipulate XML, which requires that you be aware of element/attribute/value spelling as well as namespaces, you can use the Open XML SDK to accomplish the same solution simply by manipulating objects that represent elements/attributes/values. All schema types are represented as strongly typed Common Language Runtime (CLR) classes and all attribute values as enumerations. - **Content Construction, Search, and Manipulation** The LINQ technology is built directly into the SDK. As a result, you are able to perform functional constructs and lambda expression queries directly on objects representing Open XML elements. In addition, the SDK allows you to easily traverse and manipulate content by providing support for collections of objects, like tables and paragraphs. -- **Validation** The Open XML SDK 2.0 for Microsoft Office provides validation functionality, enabling you to validate Open XML documents against different variations of the Open XML Format. +- **Validation** The Open XML SDK for Microsoft Office provides validation functionality, enabling you to validate Open XML documents against different variations of the Open XML Format. -## Open XML SDK 2.5 for Office +## Open XML SDK for Office -The Open XML SDK 2.5 provides the namespaces and members to support the Microsoft Office 2013. The Open XML SDK 2.5 can also read ISO/IEC 29500 Strict Format files. The Strict format is a subset of the Transitional format that does not include legacy features - this makes it theoretically easier for a new implementer to support since it has a smaller technical footprint. +The Open XML SDK provides the namespaces and members to support the Microsoft Office 2013. The Open XML SDK can also read ISO/IEC 29500 Strict Format files. The Strict format is a subset of the Transitional format that does not include legacy features - this makes it theoretically easier for a new implementer to support since it has a smaller technical footprint. The SDK supports the following common tasks/scenarios: -- **Support of Office 2013 Preview file format** In addition to the Open XML SDK 2.0 for Microsoft Office classes, Open XML SDK 2.5 provides new classes that enable you to write and build applications to manipulate Open XML file extensions of the new Office 2013 features. -- **Reads ISO Strict Document File** Open XML SDK 2.5 can read ISO/IEC 29500 Strict Format files. When the Open XML SDK 2.5 API opens a Strict Format file, each Open XML part in the file is loaded to an **OpenXmlPart** class of the Open XML SDK 2.5 by mapping `https://purl.oclc.org/ooxml/` namespaces to the corresponding `https://schemas.openxmlformats.org/` namespaces. -- **Fixes to the Open XML SDK 2.0 for Microsoft Office** Open XML SDK 2.5 includes fixes to known issues in the Open XML SDK 2.0 for Microsoft Office. These include lost whitespaces in PowerPoint presentations and an issue with the Custom UI in Word documents where a specified argument was reported as being out of the range of valid values. +- **Support of Office 2013 Preview file format** In addition to the Open XML SDK for Microsoft Office classes, Open XML SDK provides new classes that enable you to write and build applications to manipulate Open XML file extensions of the new Office 2013 features. +- **Reads ISO Strict Document File** Open XML SDK can read ISO/IEC 29500 Strict Format files. When the Open XML SDK API opens a Strict Format file, each Open XML part in the file is loaded to an **OpenXmlPart** class of the Open XML SDK by mapping `https://purl.oclc.org/ooxml/` namespaces to the corresponding `https://schemas.openxmlformats.org/` namespaces. +- **Fixes to the Open XML SDK for Microsoft Office** Open XML SDK includes fixes to known issues in the Open XML SDK for Microsoft Office. These include lost whitespaces in PowerPoint presentations and an issue with the Custom UI in Word documents where a specified argument was reported as being out of the range of valid values. -For more information about these and other new features of the Open XML SDK 2.5, see [What's new in the Open XML SDK 2.5 for Office](what-s-new-in-the-open-xml-sdk.md). +For more information about these and other new features of the Open XML SDK, see [What's new in the Open XML SDK for Office](what-s-new-in-the-open-xml-sdk.md). diff --git a/docs/getting-started.md b/docs/getting-started.md index 9b79fb18..5e273c00 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -5,7 +5,7 @@ api_name: api_type: - schema ms.assetid: 7b729dda-bbb6-437e-93d6-7bfe7b8183fa -title: Getting started with the Open XML SDK 2.5 for Office +title: Getting started with the Open XML SDK for Office ms.suite: office ms.author: o365devx @@ -15,15 +15,15 @@ ms.date: 11/01/2017 ms.localizationpriority: high --- -# Getting started with the Open XML SDK 2.5 for Office +# Getting started with the Open XML SDK for Office -The Open XML SDK 2.5 for Office simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package. The classes in the Open XML SDK 2.5 encapsulate many common tasks that developers perform on Open XML packages, so that you can perform complex operations with just a few lines of code. +The Open XML SDK for Office simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package. The classes in the Open XML SDK encapsulate many common tasks that developers perform on Open XML packages, so that you can perform complex operations with just a few lines of code. [!include[Add-ins note](./includes/addinsnote.md)] ## Using the Classes in the Open XML SDK -Using the classes in the Open XML SDK 2.5 is simple. When you have installed the Open XML SDK 2.5, open your existing project or application in Visual Studio, or create a new project or application. Then, in your project or application, add references to the following components. +Using the classes in the Open XML SDK is simple. When you have installed the Open XML SDK, open your existing project or application in Visual Studio, or create a new project or application. Then, in your project or application, add references to the following components. - **DocumentFormat.OpenXml** - **WindowsBase** diff --git a/docs/how-do-i.md b/docs/how-do-i.md index 381b16fc..6eefcc0f 100644 --- a/docs/how-do-i.md +++ b/docs/how-do-i.md @@ -16,8 +16,7 @@ ms.localizationpriority: high --- # How do I... (Open XML SDK) -This section provides how-to topics for working with the Open XML SDK -2.5 for Office. +This section provides how-to topics for working with the Open XML SDK for Office. [!include[Add-ins note](./includes/addinsnote.md)] diff --git a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md index 12015514..5706b83b 100644 --- a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md +++ b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: high # Accept all revisions in a word processing document (Open XML SDK) -This topic shows how to use the Open XML SDK 2.5 for Office to accept all revisions in a word processing document programmatically. +This topic shows how to use the Open XML SDK for Office to accept all revisions in a word processing document programmatically. The following assembly directives are required to compile the code in this topic. @@ -71,9 +71,9 @@ The basic document structure of a **WordProcessingML** document consists of the ``` -Using the Open XML SDK 2.5, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -506,4 +506,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md index 8d6837c2..4314f864 100644 --- a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md +++ b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Add a comment to a slide in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to add a comment to the first slide in a presentation programmatically. @@ -138,13 +138,13 @@ two slides denoted by the IDs 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -759,5 +759,5 @@ comment string to the first slide in the presentation file Myppt1.pptx. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md index cad271eb..466364a0 100644 --- a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Add a new document part that receives a relationship ID to a package -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to add a document part (file) that receives a relationship **Id** parameter for a word processing document. @@ -77,13 +77,13 @@ markup for a document that contains the text "Example text." ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the ISO/IEC 29500 specification. | @@ -301,7 +301,7 @@ The following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-a-new-document-part-to-a-package.md b/docs/how-to-add-a-new-document-part-to-a-package.md index 4e1f2ed6..8dfebac6 100644 --- a/docs/how-to-add-a-new-document-part-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-to-a-package.md @@ -15,7 +15,7 @@ ms.localizationpriority: medium # Add a new document part to a package (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to add a document part (file) to a word processing document programmatically. +This topic shows how to use the classes in the Open XML SDK for Office to add a document part (file) to a word processing document programmatically. The following assembly directives are required to compile the code in this topic. @@ -69,9 +69,9 @@ The basic document structure of a **WordProcessingML** document consists of the ``` -Using the Open XML SDK 2.5, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. Find these classes in the **[DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx)** namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements, +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. Find these classes in the **[DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx)** namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements, -|**WordprocessingML Element** | **Open XML SDK 2.5 Class** | **Description** | +|**WordprocessingML Element** | **Open XML SDK Class** | **Description** | |:---|:---|:---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the ISO/IEC 29500 specification. | @@ -163,4 +163,4 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md index a57cc208..de4945af 100644 --- a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md +++ b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md @@ -17,12 +17,11 @@ ms.localizationpriority: high # Add custom UI to a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically add custom UI, modifying the ribbon, to an Microsoft Excel 2010 or Microsoft Excel 2013 worksheet. It contains an example **AddCustomUI** method to illustrate +This topic shows how to use the classes in the Open XML SDK for Office to programmatically add custom UI, modifying the ribbon, to an Microsoft Excel 2010 or Microsoft Excel 2013 worksheet. It contains an example **AddCustomUI** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.0](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). Explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). Explicitly reference the following assemblies in your project: -- WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile the code in this topic. @@ -39,7 +38,7 @@ You must also use the following **using** directives or **Imports** statements t ## Creating Custom UI -Before using the Open XML SDK 2.5 to create a ribbon customization in an Excel workbook, you must first create the customization content. Describing the XML required to create a ribbon customization is beyond the scope of this topic. In addition, you will find it far easier to use the Ribbon Designer in Visual Studio 2010 to create the customization for you. For more information about customizing the ribbon by using the Visual Studio Ribbon Designer, see [Ribbon Designer](https://msdn.microsoft.com/library/26617206-f4da-416f-a18a-d817b2d4872d(Office.15).aspx) and [Walkthrough: Creating a Custom Tab by Using the Ribbon Designer](https://msdn.microsoft.com/library/312865e6-950f-46ab-88de-fe7eb8036bfe(Office.15).aspx). +Before using the Open XML SDK to create a ribbon customization in an Excel workbook, you must first create the customization content. Describing the XML required to create a ribbon customization is beyond the scope of this topic. In addition, you will find it far easier to use the Ribbon Designer in Visual Studio 2010 to create the customization for you. For more information about customizing the ribbon by using the Visual Studio Ribbon Designer, see [Ribbon Designer](https://msdn.microsoft.com/library/26617206-f4da-416f-a18a-d817b2d4872d(Office.15).aspx) and [Walkthrough: Creating a Custom Tab by Using the Ribbon Designer](https://msdn.microsoft.com/library/312865e6-950f-46ab-88de-fe7eb8036bfe(Office.15).aspx). For the purposes of this demonstration, you will need an XML file that contains a customization, and the following code provides a simple customization (or you can create your own by using the Visual Studio Ribbon Designer, and then right-click to export the customization to an XML file). Copy the following content into a text file that is named AddCustomUI.xml for use as part of this example. This XML content describes a ribbon customization that includes a button labeled "Click Me!" in a group named Group1 on the **Add-Ins** tab in Excel. When you click the button, it attempts to run a macro named **SampleMacro** in the host workbook. ```xml @@ -253,6 +252,6 @@ The following is the complete **AddCustomUI** code sample in C\# and Visual Basi ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) - [Ribbon Designer](https://msdn.microsoft.com/library/26617206-f4da-416f-a18a-d817b2d4872d(Office.15).aspx) - [Walkthrough: Creating a Custom Tab by Using the Ribbon Designer](https://msdn.microsoft.com/library/312865e6-950f-46ab-88de-fe7eb8036bfe(Office.15).aspx) diff --git a/docs/how-to-add-tables-to-word-processing-documents.md b/docs/how-to-add-tables-to-word-processing-documents.md index 8a2703af..18843079 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -16,9 +16,9 @@ ms.localizationpriority: high # Add tables to word processing documents (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically add a table to a word processing document. It contains an example **AddTable** method to illustrate this task. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically add a table to a word processing document. It contains an example **AddTable** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) @@ -381,5 +381,5 @@ The following is the complete **AddTable** code sample in C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md index faf6f4ec..70cee955 100644 --- a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md +++ b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md @@ -16,9 +16,9 @@ ms.localizationpriority: high # Apply a style to a paragraph in a word processing document -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically apply a style to a paragraph within a word processing document. It contains an example **ApplyStyleToParagraph** method to illustrate this task, plus several supplemental example methods to check whether a style exists, add a new style, and add the styles part. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically apply a style to a paragraph within a word processing document. It contains an example **ApplyStyleToParagraph** method to illustrate this task, plus several supplemental example methods to check whether a style exists, add a new style, and add the styles part. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) @@ -91,9 +91,9 @@ The basic document structure of a WordprocessingML document consists of the **do The XML namespace declaration ("xmlns") is the standard namespace declaration for WordprocessingML, which allows the file to reference elements and attributes that are part of WordprocessingML. By convention, the namespace is associated with the "w" prefix. -The root element is document, which specifies the contents of the main document part in a WordprocessingML document. Using the Open XML SDK 2.5, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You'll find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. +The root element is document, which specifies the contents of the main document part in a WordprocessingML document. Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You'll find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| **WordprocessingML Element** | **Open XML SDK 2.5 Class** | **Description** | +| **WordprocessingML Element** | **Open XML SDK Class** | **Description** | |:---|:---|:---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -875,4 +875,4 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](\/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](\/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-apply-a-theme-to-a-presentation.md b/docs/how-to-apply-a-theme-to-a-presentation.md index 0ec6c01c..f89e8c8d 100644 --- a/docs/how-to-apply-a-theme-to-a-presentation.md +++ b/docs/how-to-apply-a-theme-to-a-presentation.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Apply a theme to a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to apply the theme from one presentation to another presentation programmatically. @@ -149,13 +149,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **PresentationML** elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | Slide | Presentation Slide. It is the root element of SlidePart. | | sldLayout | SlideLayout | Slide Layout. It is the root element of SlideLayoutPart. | @@ -187,7 +187,7 @@ be useful when working with this element. The following table lists the possible child types of the Theme class. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | custClrLst | CustomColorList | Custom Color List | | extLst | ExtensionList | Extension List | @@ -674,7 +674,7 @@ would see the same theme of the file Myppt9-theme.pptx. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md index d9fc60de..d8695ce2 100644 --- a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md +++ b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md @@ -15,7 +15,7 @@ ms.localizationpriority: high # Calculate the sum of a range of cells in a spreadsheet document -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to calculate the sum of a contiguous range of cells in a spreadsheet document programmatically. +This topic shows how to use the classes in the Open XML SDK for Office to calculate the sum of a contiguous range of cells in a spreadsheet document programmatically. The following assembly directives are required to compile the code in this topic. @@ -92,9 +92,9 @@ The worksheet XML files contain one or more block level elements such as **[Shee ``` -Using the Open XML SDK 2.5, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -821,7 +821,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) - [Language-Integrated Query (LINQ) (C#)](/dotnet/csharp/programming-guide/concepts/linq/) - [Language-Integrated Query (LINQ) (Visual Basic)](/dotnet/visual-basic/programming-guide/concepts/linq/) - [Lambda Expressions (C#)](/dotnet/csharp/language-reference/operators/lambda-expressions) diff --git a/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md b/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md index fb42a460..46e99dca 100644 --- a/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md +++ b/docs/how-to-change-text-in-a-table-in-a-word-processing-document.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Change text in a table in a word processing document (Open XML SDK) -This topic shows how to use the Open XML SDK 2.5 for Office to programmatically change text in a table in an existing word processing document. +This topic shows how to use the Open XML SDK for Office to programmatically change text in a table in an existing word processing document. The following assembly directives are required to compile the code in this topic. @@ -259,7 +259,7 @@ Following is the complete code example. ## See also -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [How to: Change Text in a Table in a Word Processing Document](https://msdn.microsoft.com/library/documentformat.openxml.wordprocessing.table(office.14).aspx) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) [Extension Methods (C\# Programming Guide)](https://msdn.microsoft.com/library/bb383977.aspx) diff --git a/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md b/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md index 6e94302d..c13fe102 100644 --- a/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md +++ b/docs/how-to-change-the-fill-color-of-a-shape-in-a-presentation.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Change the fill color of a shape in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 to +This topic shows how to use the classes in the Open XML SDK to change the fill color of a shape on the first slide in a presentation programmatically. @@ -347,7 +347,7 @@ change in the fill color. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md b/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md index ff100e47..f5b505b8 100644 --- a/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md +++ b/docs/how-to-change-the-print-orientation-of-a-word-processing-document.md @@ -18,13 +18,13 @@ ms.localizationpriority: medium # Change the print orientation of a word processing document -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically set the print orientation of a Microsoft Word 2010 or Microsoft Word 2013 document. It contains an example **SetPrintOrientation** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK -2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK] +(https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -528,4 +528,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md b/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md index 17e2fe43..84703680 100644 --- a/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md +++ b/docs/how-to-convert-a-word-processing-document-from-the-docm-to-the-docx-file-format.md @@ -19,14 +19,14 @@ ms.localizationpriority: high # Convert a word processing document from the DOCM to the DOCX file format -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically convert a Microsoft Word 2010 or Microsoft Word 2013 document that contains VBA code (and has a .docm extension) to a standard document (with a .docx extension). It contains an example **ConvertDOCMtoDOCX** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK -2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK] +(https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -97,7 +97,7 @@ see [ISO/IEC 29500-2](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalog When you create and save a VBA macro in a document, Word adds a new binary part named vbaProject that contains the internal representation of your macro project. The following image from the Document Explorer in -the Open XML SDK 2.5 Productivity Tool for Microsoft Office shows the +the Open XML SDK Productivity Tool for Microsoft Office shows the document parts in a sample document that contains a macro. The vbaProject part is highlighted. @@ -163,7 +163,7 @@ The sample code next verifies that the vbaProject part exists, deletes the part End If ``` -It is not enough to delete the part from the document. You must also convert the document type, internally. The Open XML SDK 2.5 provides a way to perform this task: You can call the document **ChangeDocumentType** method and indicate the new document type (in this case, supply the *WordProcessingDocumentType.Document* enumerated value). +It is not enough to delete the part from the document. You must also convert the document type, internally. The Open XML SDK provides a way to perform this task: You can call the document **ChangeDocumentType** method and indicate the new document type (in this case, supply the *WordProcessingDocumentType.Document* enumerated value). You must also rename the file. However, you cannot do that while the file is open. The using block closes the file at the end of the block. Therefore, you must have some way to indicate to the code after the block that you have modified the file: The **fileChanged** Boolean variable tracks this information for you. @@ -334,4 +334,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md index 207d2786..9cfc8829 100644 --- a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md +++ b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Copy contents of an Open XML package part to a document part in a different package -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to copy the contents of an Open XML Wordprocessing document part to a document part in a different word-processing document programmatically. @@ -111,13 +111,13 @@ markup for a document that contains the text "Example text." ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -276,7 +276,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index c1c1ae73..3dd124ac 100644 --- a/docs/how-to-create-a-package.md +++ b/docs/how-to-create-a-package.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Create a package (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically create a word processing document package from content in the form of **WordprocessingML** XML markup. @@ -125,13 +125,13 @@ sample code creates is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements: -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -311,7 +311,7 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md b/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md index 64f03c44..b0a02240 100644 --- a/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-presentation-document-by-providing-a-file-name.md @@ -18,10 +18,10 @@ ms.localizationpriority: high # Create a presentation document by providing a file name (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 to +This topic shows how to use the classes in the Open XML SDK to create a presentation document programmatically. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -57,9 +57,9 @@ the code in this topic. A presentation file, like all files defined by the Open XML standard, consists of a package file container. This is the file that users see in their file explorer; it usually has a .pptx extension. The package file -is represented in the Open XML SDK 2.5 by the [PresentationDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.aspx) class. The +is represented in the Open XML SDK by the [PresentationDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.aspx) class. The presentation document contains, among other parts, a presentation part. -The presentation part, represented in the Open XML SDK 2.5 by the [PresentationPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationpart.aspx) class, contains the basic +The presentation part, represented in the Open XML SDK by the [PresentationPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationpart.aspx) class, contains the basic *PresentationML* definition for the slide presentation. PresentationML is the markup language used for creating presentations. Each package can contain only one presentation part, and its root element must be @@ -104,7 +104,7 @@ slide layout, slide master, and theme parts. } ``` -Using the Open XML SDK 2.5, you can create presentation structure and +Using the Open XML SDK, you can create presentation structure and content by using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the names of the classes that @@ -113,7 +113,7 @@ theme elements. The class that corresponds to the theme element is actually part of the [DocumentFormat.OpenXml.Drawing](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.aspx) namespace. Themes are common to all Open XML markup languages. -| PresentationML Element | Open XML SDK 2.5 Class | +| PresentationML Element | Open XML SDK Class | |---|---| | <presentation> | [Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentation.aspx) | | <sld> | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | @@ -775,7 +775,7 @@ presentation, given a file path. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [Structure of a PresentationML Document](structure-of-a-presentationml-document.md) @@ -787,4 +787,4 @@ presentation, given a file path. [How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md index 25ce6133..4dae0344 100644 --- a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Create a spreadsheet document by providing a file name (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically create a spreadsheet document. The following assembly directives are required to compile the code in @@ -120,13 +120,13 @@ worksheet created by the sample code. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content by using strongly-typed classes that correspond to SpreadsheetML elements. You can find these classes in the **DocumentFormat.OpenXml.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block-level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -236,4 +236,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md index a74f0dd0..1dd87a13 100644 --- a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Create a word processing document by providing a file name -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically create a word processing document. The following assembly directives are required to compile the code in @@ -118,13 +118,13 @@ example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -223,4 +223,4 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md b/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md index 81cf518c..a61412ef 100644 --- a/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md +++ b/docs/how-to-create-and-add-a-character-style-to-a-word-processing-document.md @@ -17,13 +17,13 @@ ms.localizationpriority: medium --- # Create and add a character style to a word processing document -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically create and add a character style to a word processing document. It contains an example **CreateAndAddCharacterStyle** method to illustrate this task, plus a supplemental example method to add the styles part when it is necessary. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -629,4 +629,4 @@ The following is the complete **CreateAndAddCharacterStyle** code sample in both ## See also [How to: Apply a style to a paragraph in a word processing document (Open XML SDK)](how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md) -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md b/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md index 8fa0c998..3469a079 100644 --- a/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md +++ b/docs/how-to-create-and-add-a-paragraph-style-to-a-word-processing-document.md @@ -17,14 +17,14 @@ ms.localizationpriority: high --- # Create and add a paragraph style to a word processing document -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically create and add a paragraph style to a word processing document. It contains an example **CreateAndAddParagraphStyle** method to illustrate this task, plus a supplemental example method to add the styles part when necessary. -To use the sample code in this topic, you must install the [Open XML SDK -2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK] +(https://www.nuget.org/packages/DocumentFormat.OpenXml). You must also explicitly reference the following assemblies in your project: - WindowsBase @@ -731,4 +731,4 @@ C\# and Visual Basic. ## See also - [Apply a style to a paragraph in a word processing document (Open XML SDK)](how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md) -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-a-slide-from-a-presentation.md b/docs/how-to-delete-a-slide-from-a-presentation.md index 85173178..73896f29 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Delete a slide from a presentation (Open XML SDK) -This topic shows how to use the Open XML SDK 2.5 for Office to delete a +This topic shows how to use the Open XML SDK for Office to delete a slide from a presentation programmatically. It also shows how to delete all references to the slide from any custom shows that may exist. To delete a specific slide in a presentation file you need to know first @@ -153,9 +153,9 @@ two slides denoted by the IDs 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -718,4 +718,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md index f06032c6..87a7916b 100644 --- a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md +++ b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Delete all the comments by an author from all the slides in a presentation -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to delete all of the comments by a specific author in a presentation programmatically. @@ -147,13 +147,13 @@ two slides denoted by the ID numbers 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **PresentationML** elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -443,4 +443,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md b/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md index 5046bdcb..378c41b3 100644 --- a/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md +++ b/docs/how-to-delete-comments-by-all-or-a-specific-author-in-a-word-processing-document.md @@ -17,12 +17,12 @@ ms.localizationpriority: medium --- # Delete comments by all or a specific author in a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically delete comments by all or a specific author in a word processing document, without having to load the document into Microsoft Word. It contains an example **DeleteComments** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -483,4 +483,4 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md b/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md index 27403f0c..72d0d30c 100644 --- a/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md +++ b/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md @@ -15,7 +15,7 @@ ms.localizationpriority: high --- # Delete text from a cell in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to delete text from a cell in a spreadsheet document programmatically. @@ -102,13 +102,13 @@ code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | **Description** | +| **SpreadsheetML Element** | **Open XML SDK Class** | **Description** | |:---|:---|:---| | workbook | DocumentFormat.OpenXML.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXML.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -605,7 +605,7 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) [Lambda Expressions](https://msdn.microsoft.com/library/bb531253.aspx) [Lambda Expressions (C\# Programming Guide)](https://msdn.microsoft.com/library/bb397687.aspx) diff --git a/docs/how-to-extract-styles-from-a-word-processing-document.md b/docs/how-to-extract-styles-from-a-word-processing-document.md index 6a3cf8b6..3f5f2eaa 100644 --- a/docs/how-to-extract-styles-from-a-word-processing-document.md +++ b/docs/how-to-extract-styles-from-a-word-processing-document.md @@ -17,15 +17,15 @@ ms.localizationpriority: medium --- # Extract styles from a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically extract the styles or stylesWithEffects part from a word processing document to an [XDocument](https://msdn.microsoft.com/library/Bb345449(v=VS.100).aspx) instance. It contains an example **ExtractStylesPart** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK -2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK] +(https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -338,4 +338,4 @@ The following is the complete **ExtractStylesPart** code sample in C\# and Visua ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md index a07aaee9..88af3177 100644 --- a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md +++ b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Get a column heading in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to retrieve a column heading in a spreadsheet document programmatically. @@ -112,13 +112,13 @@ Sheet1.xml file and is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | **Workbook** | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -410,7 +410,7 @@ Following is the complete sample code in both C\# and Visual Basic. -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md index 6cfe6dbd..1e1cda07 100644 --- a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md +++ b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Get all the external hyperlinks in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to get all the external hyperlinks in a presentation programmatically. @@ -143,13 +143,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **PresentationML** elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -356,4 +356,4 @@ get the list of URIs in your presentation. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md index ce835395..b11ff44b 100644 --- a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md +++ b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Get all the text in a slide in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to get all the text in a slide in a presentation programmatically. @@ -149,13 +149,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **PresentationML** elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | Slide | Presentation Slide. It is the root element of SlidePart. | | sldLayout | SlideLayout | Slide Layout. It is the root element of SlideLayoutPart. | @@ -631,4 +631,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md b/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md index c6c38521..cf05b97a 100644 --- a/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md +++ b/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Get all the text in all slides in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 to get +This topic shows how to use the classes in the Open XML SDK to get all of the text in all of the slides in a presentation programmatically. The following assembly directives are required to compile the code in @@ -151,13 +151,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **PresentationML** elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -446,5 +446,5 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library +[Open XML SDK class library reference](https://msdn.microsoft.com/library/36c8a76e-ce1b-5959-7e85-5d77db7f46d6(Office.15).aspx) diff --git a/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md b/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md index a8e33617..d974a5cd 100644 --- a/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md +++ b/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Get the contents of a document part from a package (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to retrieve the contents of a document part in a Wordprocessing document programmatically. @@ -108,13 +108,13 @@ sample code creates is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -263,5 +263,5 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library +[Open XML SDK class library reference](https://msdn.microsoft.com/library/36c8a76e-ce1b-5959-7e85-5d77db7f46d6(Office.15).aspx) diff --git a/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md b/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md index 56591774..76a5655d 100644 --- a/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md +++ b/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Get the titles of all the slides in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to get the titles of all slides in a presentation programmatically. @@ -149,13 +149,13 @@ two slides denoted by the Id's 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -675,5 +675,5 @@ Following is the complete sample code in both C\# and Visual Basic. -[Open XML SDK 2.5 class library +[Open XML SDK class library reference](https://msdn.microsoft.com/library/36c8a76e-ce1b-5959-7e85-5d77db7f46d6(Office.15).aspx) diff --git a/docs/how-to-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index 85781616..83889e42 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -15,7 +15,7 @@ ms.localizationpriority: high # Get worksheet information from an Open XML package (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically retrieve information from a worksheet in a Spreadsheet document. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve information from a worksheet in a Spreadsheet document. The following assembly directives are required to compile the code in this topic. @@ -86,10 +86,10 @@ The worksheet XML files contain one or more block level elements such as **Sheet ``` -Using the Open XML SDK 2.5, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -186,4 +186,4 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-chart-into-a-spreadsheet.md b/docs/how-to-insert-a-chart-into-a-spreadsheet.md index 4e679ff6..8144172b 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -15,7 +15,7 @@ ms.localizationpriority: high # Insert a chart into a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to insert a chart into a spreadsheet document programmatically. +This topic shows how to use the classes in the Open XML SDK for Office to insert a chart into a spreadsheet document programmatically. The following assembly directives are required to compile the code in this topic. @@ -125,13 +125,13 @@ example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXml.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx), [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx), **worksheet**, and [SheetData<](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx) elements. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | **Description** | +| **SpreadsheetML Element** | **Open XML SDK Class** | **Description** | |:---|:---|:---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -861,7 +861,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) [Lambda Expressions](https://msdn.microsoft.com/library/bb531253.aspx) [Lambda Expressions (C\# Programming Guide)](https://msdn.microsoft.com/library/bb397687.aspx) diff --git a/docs/how-to-insert-a-comment-into-a-word-processing-document.md b/docs/how-to-insert-a-comment-into-a-word-processing-document.md index 0a28eccc..975b9fe0 100644 --- a/docs/how-to-insert-a-comment-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-comment-into-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Insert a comment into a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically add a comment to the first paragraph in a word processing document. @@ -364,7 +364,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-insert-a-new-slide-into-a-presentation.md b/docs/how-to-insert-a-new-slide-into-a-presentation.md index 940848af..706130dc 100644 --- a/docs/how-to-insert-a-new-slide-into-a-presentation.md +++ b/docs/how-to-insert-a-new-slide-into-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Insert a new slide into a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 to +This topic shows how to use the classes in the Open XML SDK to insert a new slide into a presentation programmatically. The following assembly directives are required to compile the code in @@ -137,13 +137,13 @@ two slides denoted by the Id's 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -751,4 +751,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md b/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md index 8b910c94..3ca929a3 100644 --- a/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Insert a new worksheet into a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to insert a new worksheet into a spreadsheet document programmatically. @@ -119,13 +119,13 @@ code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -296,7 +296,7 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-insert-a-picture-into-a-word-processing-document.md b/docs/how-to-insert-a-picture-into-a-word-processing-document.md index c93a47f3..e429cf17 100644 --- a/docs/how-to-insert-a-picture-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-picture-into-a-word-processing-document.md @@ -17,7 +17,7 @@ ms.localizationpriority: high --- # Insert a picture into a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically add a picture to a word processing document. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically add a picture to a word processing document. The following assembly directives are required to compile the code in this topic. @@ -411,4 +411,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-insert-a-table-into-a-word-processing-document.md b/docs/how-to-insert-a-table-into-a-word-processing-document.md index ecf19f2a..7d2bcc87 100644 --- a/docs/how-to-insert-a-table-into-a-word-processing-document.md +++ b/docs/how-to-insert-a-table-into-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Insert a table into a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically insert a table into a word processing document. @@ -399,7 +399,7 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Object Initializers: Named and Anonymous Types (Visual Basic .NET)](https://msdn.microsoft.com/library/bb385125.aspx) diff --git a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md index 565abaa9..4298a1ca 100644 --- a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md +++ b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Insert text into a cell in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to insert text into a cell in a new worksheet in a spreadsheet document programmatically. @@ -120,13 +120,13 @@ Sheet1.xml file and is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -762,7 +762,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -[Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +[Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md b/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md index 7d5a087c..a91a2ca0 100644 --- a/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md +++ b/docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Merge two adjacent cells in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to merge two adjacent cells in a spreadsheet document programmatically. @@ -129,13 +129,13 @@ Sheet1.xml file and is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -| SpreadsheetML Element | Open XML SDK 2.5 Class | Description | +| SpreadsheetML Element | Open XML SDK Class | Description | |---|---|---| | workbook | DocumentFormat.OpenXML.Spreadsheet.Workbook | The root element for the main document part. | | sheets | DocumentFormat. OpenXML.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -580,7 +580,7 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) diff --git a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md index 1e76b88b..d66c9b5a 100644 --- a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md +++ b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Move a paragraph from one presentation to another (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to move a paragraph from one presentation to another presentation programmatically. @@ -137,13 +137,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -479,4 +479,4 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md index beddf820..3797ae4f 100644 --- a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md +++ b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Move a slide to a new position in a presentation (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to move a slide to a new position in a presentation programmatically. @@ -144,13 +144,13 @@ two slides denoted by the ID 267 and 256. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | | sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | @@ -637,4 +637,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-presentation-document-for-read-only-access.md b/docs/how-to-open-a-presentation-document-for-read-only-access.md index dd2038ea..b8e9ee60 100644 --- a/docs/how-to-open-a-presentation-document-for-read-only-access.md +++ b/docs/how-to-open-a-presentation-document-for-read-only-access.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Open a presentation document for read-only access (Open XML SDK) -This topic describes how to use the classes in the Open XML SDK 2.5 for +This topic describes how to use the classes in the Open XML SDK for Office to programmatically open a presentation document for read-only access. @@ -101,7 +101,7 @@ You can also use the second overload of the **Open** method, in the table above, instance of the **PresentationDocument** class based on an I/O stream. You might use this approach if you have a Microsoft SharePoint Foundation 2010 application that uses stream I/O -and you want to use the Open XML SDK 2.5 to work with a document. The +and you want to use the Open XML SDK to work with a document. The following code segment opens a document based on a stream. ```csharp @@ -122,8 +122,8 @@ following code segment opens a document based on a stream. Suppose you have an application that employs the Open XML support in the **System.IO.Packaging** namespace of the .NET -Framework Class Library, and you want to use the Open XML SDK 2.5 to -work with a package read-only. The Open XML SDK 2.5 includes a method +Framework Class Library, and you want to use the Open XML SDK to +work with a package read-only. The Open XML SDK includes a method overload that accepts a **Package** as the only parameter. There is no Boolean parameter to indicate whether the document should be opened for editing. The recommended approach is to @@ -379,4 +379,4 @@ The following is the complete code listing in C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md b/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md index a8a2a9ff..3afe7e62 100644 --- a/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md +++ b/docs/how-to-open-a-spreadsheet-document-for-read-only-access.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Open a spreadsheet document for read-only access (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to open a spreadsheet document for read-only access programmatically. @@ -99,7 +99,7 @@ The other two **Open** methods create an instance of the SpreadsheetDocument class based on an input/output stream. You might use this approach, for example, if you have a Microsoft SharePoint Foundation 2010 application that uses stream -input/output, and you want to use the Open XML SDK 2.5 to work with a +input/output, and you want to use the Open XML SDK to work with a document. The following code example opens a document based on a stream. @@ -119,8 +119,8 @@ The following code example opens a document based on a stream. Suppose you have an application that uses the Open XML support in the System.IO.Packaging namespace of the .NET Framework Class Library, and -you want to use the Open XML SDK 2.5 to work with a package as -read-only. Whereas the Open XML SDK 2.5 includes method overloads that +you want to use the Open XML SDK to work with a package as +read-only. Whereas the Open XML SDK includes method overloads that accept a **Package** as the first parameter, there is not one that takes a Boolean as the second parameter to indicate whether the document should be opened for editing. @@ -200,13 +200,13 @@ Sheet1.xml file and is as follows. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to SpreadsheetML elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -SpreadsheetML Element|Open XML SDK 2.5 Class|Description +SpreadsheetML Element|Open XML SDK Class|Description --|--|-- workbook|DocumentFormat.OpenXml.Spreadsheet.Workbook|The root element for the main document part. sheets|DocumentFormat.OpenXml.Spreadsheet.Sheets|The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. @@ -302,4 +302,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-spreadsheet-document-from-a-stream.md b/docs/how-to-open-a-spreadsheet-document-from-a-stream.md index 7fa3dea6..62fc4c58 100644 --- a/docs/how-to-open-a-spreadsheet-document-from-a-stream.md +++ b/docs/how-to-open-a-spreadsheet-document-from-a-stream.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Open a spreadsheet document from a stream (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to open a spreadsheet document from a stream programmatically. The following assembly directives are required to compile the code in @@ -40,14 +40,14 @@ this topic. ## When to Open From a Stream If you have an application, such as Microsoft SharePoint Foundation 2010, that works with documents by using stream input/output, and you -want to use the Open XML SDK 2.5 to work with one of the documents, this +want to use the Open XML SDK to work with one of the documents, this is designed to be easy to do. This is especially true if the document -exists and you can open it using the Open XML SDK 2.5. However, suppose +exists and you can open it using the Open XML SDK. However, suppose that the document is an open stream at the point in your code where you must use the SDK to work with it? That is the scenario for this topic. The sample method in the sample code accepts an open stream as a parameter and then adds text to the document behind the stream using the -Open XML SDK 2.5. +Open XML SDK. -------------------------------------------------------------------------------- @@ -135,13 +135,13 @@ code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to SpreadsheetML elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. -SpreadsheetML Element|Open XML SDK 2.5 Class|Description +SpreadsheetML Element|Open XML SDK Class|Description --|--|-- workbook|DocumentFormat.OpenXml.Spreadsheet.Workbook|The root element for the main document part. sheets|DocumentFormat.OpenXml.Spreadsheet.Sheets|The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. @@ -280,4 +280,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-word-processing-document-for-read-only-access.md b/docs/how-to-open-a-word-processing-document-for-read-only-access.md index a5dc6812..ea26026e 100644 --- a/docs/how-to-open-a-word-processing-document-for-read-only-access.md +++ b/docs/how-to-open-a-word-processing-document-for-read-only-access.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Open a word processing document for read-only access (Open XML SDK) -This topic describes how to use the classes in the Open XML SDK 2.5 for +This topic describes how to use the classes in the Open XML SDK for Office to programmatically open a word processing document for read only access. @@ -105,7 +105,7 @@ instance of the **WordprocessingDocument** class based on an input/output stream. You might employ this approach, for instance, if you have a Microsoft SharePoint Foundation 2010 application that uses stream input/output, and you want to use the Open -XML SDK 2.5 to work with a document. +XML SDK to work with a document. The following code example opens a document based on a stream. @@ -124,8 +124,8 @@ The following code example opens a document based on a stream. Suppose you have an application that employs the Open XML support in the System.IO.Packaging namespace of the .NET Framework Class Library, and -you want to use the Open XML SDK 2.5 to work with a package read only. -While the Open XML SDK 2.5 includes method overloads that accept a **Package** as the first parameter, there is not one +you want to use the Open XML SDK to work with a package read only. +While the Open XML SDK includes method overloads that accept a **Package** as the first parameter, there is not one that takes a Boolean as the second parameter to indicate whether the document should be opened for editing. @@ -190,13 +190,13 @@ shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -WordprocessingML Element|Open XML SDK 2.5 Class|Description +WordprocessingML Element|Open XML SDK Class|Description --|--|-- document|[Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) |The root element for the main document part. body|[Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) |The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. @@ -359,4 +359,4 @@ The following is the complete sample code in C\# and VB. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-a-word-processing-document-from-a-stream.md b/docs/how-to-open-a-word-processing-document-from-a-stream.md index 982989c8..7e09980f 100644 --- a/docs/how-to-open-a-word-processing-document-from-a-stream.md +++ b/docs/how-to-open-a-word-processing-document-from-a-stream.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Open a word processing document from a stream (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically open a Word processing document from a stream. @@ -39,13 +39,13 @@ this topic. If you have an application, such as a SharePoint application, that works with documents using stream input/output, and you want to employ the -Open XML SDK 2.5 to work with one of the documents, this is designed to +Open XML SDK to work with one of the documents, this is designed to be easy to do. This is particularly true if the document exists and you -can open it using the Open XML SDK 2.5. However, suppose the document is +can open it using the Open XML SDK. However, suppose the document is an open stream at the point in your code where you need to employ the SDK to work with it? That is the scenario for this topic. The sample method in the sample code accepts an open stream as a parameter and then -adds text to the document behind the stream using the Open XML SDK 2.5. +adds text to the document behind the stream using the Open XML SDK. ## Creating a WordprocessingDocument Object @@ -106,13 +106,13 @@ the WordprocessingML markup for a document that contains only the text ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body |Body |The container for the block-level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -233,4 +233,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-open-and-add-text-to-a-word-processing-document.md b/docs/how-to-open-and-add-text-to-a-word-processing-document.md index 3904d109..87015208 100644 --- a/docs/how-to-open-and-add-text-to-a-word-processing-document.md +++ b/docs/how-to-open-and-add-text-to-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Open and add text to a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically open and add text to a Word processing document. @@ -35,9 +35,9 @@ this topic. -------------------------------------------------------------------------------- ## How to Open and Add Text to a Document -The Open XML SDK 2.5 helps you create Word processing document structure +The Open XML SDK helps you create Word processing document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. This topic shows how -to use the classes in the Open XML SDK 2.5 to open a Word processing +to use the classes in the Open XML SDK to open a Word processing document and add text to it. In addition, this topic introduces the basic document structure of a **WordprocessingML** document, the associated XML elements, and their corresponding Open XML SDK classes. @@ -114,13 +114,13 @@ text." ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | +| WordprocessingML Element | Open XML SDK Class | Description | |---|---|---| | document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | @@ -222,4 +222,4 @@ of **OpenSettings**. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-parse-and-read-a-large-spreadsheet.md b/docs/how-to-parse-and-read-a-large-spreadsheet.md index 8c8ddc39..d060b582 100644 --- a/docs/how-to-parse-and-read-a-large-spreadsheet.md +++ b/docs/how-to-parse-and-read-a-large-spreadsheet.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Parse and read a large spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically read a large Excel file. For more information about the basic structure of a **SpreadsheetML** document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). @@ -282,4 +282,4 @@ The following is the complete code sample in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-remove-a-document-part-from-a-package.md b/docs/how-to-remove-a-document-part-from-a-package.md index 41b6f6cb..ed3c3d09 100644 --- a/docs/how-to-remove-a-document-part-from-a-package.md +++ b/docs/how-to-remove-a-document-part-from-a-package.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Remove a document part from a package (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to remove a document part (file) from a Wordprocessing document programmatically. @@ -105,13 +105,13 @@ sample code creates is shown in the following code example. ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -WordprocessingML Element|Open XML SDK 2.5 Class|Description +WordprocessingML Element|Open XML SDK Class|Description --|--|-- document|[Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) |The root element for the main document part. body|[Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) |The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. @@ -187,7 +187,7 @@ this example. RemovePart(document) ``` > [!NOTE] -> Before running the program on the test file, "MyPkg6.docs," for example, open the file by using the Open XML SDK 2.5 Productivity Tool for Microsoft Office and examine its structure. After running the program, examine the file again, and you will notice that the **DocumentSettingsPart** part was removed. +> Before running the program on the test file, "MyPkg6.docs," for example, open the file by using the Open XML SDK Productivity Tool for Microsoft Office and examine its structure. After running the program, examine the file again, and you will notice that the **DocumentSettingsPart** part was removed. Following is the complete code example in both C\# and Visual Basic. @@ -221,4 +221,4 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-remove-hidden-text-from-a-word-processing-document.md b/docs/how-to-remove-hidden-text-from-a-word-processing-document.md index ec4ea0cc..736872e7 100644 --- a/docs/how-to-remove-hidden-text-from-a-word-processing-document.md +++ b/docs/how-to-remove-hidden-text-from-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Remove hidden text from a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically remove hidden text from a word processing document. @@ -94,13 +94,13 @@ markup for a document that contains the text "Example text." ``` -Using the Open XML SDK 2.5, you can create document structure and +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. -WordprocessingML Element|Open XML SDK 2.5 Class|Description +WordprocessingML Element|Open XML SDK Class|Description --|--|-- document|[Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) |The root element for the main document part. body|[Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) |The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. @@ -262,4 +262,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md b/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md index 52d5956c..17979a39 100644 --- a/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md +++ b/docs/how-to-remove-the-headers-and-footers-from-a-word-processing-document.md @@ -17,12 +17,12 @@ ms.localizationpriority: medium --- # Remove the headers and footers from a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically remove all headers and footers in a word processing document. It contains an example **RemoveHeadersAndFooters** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must then explicitly reference the following assemblies in your project. - WindowsBase @@ -148,7 +148,7 @@ Be aware that the **HeaderParts** and **FooterParts** properties each return an Given a collection of references to header and footer parts, you could write code to delete each one individually, but that is not necessary -because of the Open XML SDK 2.5. Instead, you can call the [DeleteParts\](https://msdn.microsoft.com/library/office/cc562335.aspx) method, passing in the +because of the Open XML SDK. Instead, you can call the [DeleteParts\](https://msdn.microsoft.com/library/office/cc562335.aspx) method, passing in the collection of parts to be deleted─this simple method provides a shortcut for deleting a collection of parts. Therefore, the following few lines of code take the place of the loop that you would otherwise have to @@ -203,7 +203,7 @@ loops through the collection, calling the [Remove](https://msdn.microsoft.com/li that the code converts the **IEnumerable** returned by the [Descendants](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.descendants.aspx) method into a List so that it can delete items from the list, and that the [HeaderReference](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.headerreference.aspx) type that is provided by -the Open XML SDK 2.5 makes it easy to refer to elements of type **HeaderReference** in the XML content. (Without that +the Open XML SDK makes it easy to refer to elements of type **HeaderReference** in the XML content. (Without that additional help, you would have to work with the details of the XML content directly.) Once it has removed all the headers, the code repeats the operation with the footer elements. @@ -366,4 +366,4 @@ Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-header-in-a-word-processing-document.md b/docs/how-to-replace-the-header-in-a-word-processing-document.md index cf1551cc..7bb72890 100644 --- a/docs/how-to-replace-the-header-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-header-in-a-word-processing-document.md @@ -17,11 +17,11 @@ ms.localizationpriority: high --- # Replace the header in a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to replace the header in word processing document programmatically. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -240,4 +240,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference]/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference]/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md index ec8e5657..7e0b8109 100644 --- a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md @@ -17,14 +17,14 @@ ms.localizationpriority: medium --- # Replace the styles parts in a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically replace the styles in a word processing document with the styles from another word processing document. It contains an example **ReplaceStyles** method to illustrate this task, as well as the **ReplaceStylesPart** and **ExtractStylesPart** supporting methods. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -64,7 +64,7 @@ information about the Open Packaging Conventions, see [ISO/IEC 29500-2](https:// Styles are stored in dedicated parts within a word processing document package. An Microsoft Word 2010 document contains a single styles part. Microsoft Word 2013 adds a second stylesWithEffects part. The following -image from the Document Explorer in the Open XML SDK 2.5 Productivity +image from the Document Explorer in the Open XML SDK Productivity Tool for Microsoft Office shows the document parts in a sample Word 2013 document that contains styles. @@ -500,4 +500,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md b/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md index 591bc4a5..89ecb512 100644 --- a/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-theme-part-in-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Replace the theme part in a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically replace a document part in a word processing document. @@ -122,7 +122,7 @@ backgrounds, fills, and effects for different objects in a presentation. The following table lists the possible child types of the Theme class. -| PresentationML Element | Open XML SDK 2.5 Class | Description | +| PresentationML Element | Open XML SDK Class | Description | |---|---|---| | custClrLst | [CustomColorList](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.customcolorlist.aspx) |Custom Color List | | extLst | [ExtensionList](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.extensionlist.aspx) | Extension List | @@ -289,4 +289,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md b/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md index f4ada4ee..9a4287e9 100644 --- a/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md @@ -17,13 +17,13 @@ ms.localizationpriority: medium --- # Retrieve a dictionary of all named ranges in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve a dictionary that contains the names and ranges of all defined names in an Microsoft Excel 2010 or Microsoft Excel 2013 workbook. It contains an example **GetDefinedNames** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -140,7 +140,7 @@ document should be open for read-only access (the final false parameter). Given ## Retrieving the Defined Names Given the workbook part, the next step is simple. The code uses the -**Workbook** property of the workbook part to retrieve a reference to the content of the workbook, and then retrieves the **DefinedNames** collection provided by the Open XML SDK 2.5. This property returns a collection of all of the +**Workbook** property of the workbook part to retrieve a reference to the content of the workbook, and then retrieves the **DefinedNames** collection provided by the Open XML SDK. This property returns a collection of all of the defined names that are contained within the workbook. If the property returns a non-null value, the code then iterates through the collection, retrieving information about each named part and adding the key name) and value (range description) to the dictionary for each defined name. ```csharp @@ -231,4 +231,4 @@ The following is the complete **GetDefinedNames** code sample in C\# and Visual ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md b/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md index 09f6c687..752e61fb 100644 --- a/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md @@ -17,10 +17,10 @@ ms.localizationpriority: high --- # Retrieve a list of the hidden rows or columns in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically retrieve a list of hidden rows or columns in a Microsoft Excel 2010 or Microsoft Excel 2013 worksheet, without +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve a list of hidden rows or columns in a Microsoft Excel 2010 or Microsoft Excel 2013 worksheet, without loading the document into Excel. It contains an example **GetHiddenRowsOrCols** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -363,4 +363,4 @@ The following is the complete **GetHiddenRowsOrCols** code sample in C\# and Vis ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md b/docs/how-to-retrieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md index 26c14a80..e289925a 100644 --- a/docs/how-to-retrieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md @@ -16,9 +16,9 @@ ms.localizationpriority: medium # Retrieve a list of the hidden worksheets in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically retrieve a list of hidden worksheets in a Microsoft Excel 2010 or Microsoft Excel 2010 workbook, without loading the document into Excel. It contains an example **GetHiddenSheets** method to illustrate this task. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve a list of hidden worksheets in a Microsoft Excel 2010 or Microsoft Excel 2010 workbook, without loading the document into Excel. It contains an example **GetHiddenSheets** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) @@ -111,7 +111,7 @@ Next, the following code opens the specified workbook by using the **Spreadsheet ## Retrieve the collection of worksheets -The **WorkbookPart** class provides a **Workbook** property, which in turn contains the XML content of the workbook. Although the Open XML SDK 2.5 provides the **Sheets** property, which returns a collection of the **Sheet** parts, all the information that you need is provided by the **Sheet** elements within the **Workbook** XML content. +The **WorkbookPart** class provides a **Workbook** property, which in turn contains the XML content of the workbook. Although the Open XML SDK provides the **Sheets** property, which returns a collection of the **Sheet** parts, all the information that you need is provided by the **Sheet** elements within the **Workbook** XML content. The following code uses the **Descendants** generic method of the **Workbook** object to retrieve a collection of **Sheet** objects that contain information about all the sheet child elements of the workbook's XML content. ```csharp @@ -208,4 +208,4 @@ The following is the complete **GetHiddenSheets** code sample in C\# and Visual ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md b/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md index fc6215f3..7f7196d7 100644 --- a/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md @@ -17,12 +17,12 @@ ms.localizationpriority: high --- # Retrieve a list of the worksheets in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve a list of the worksheets in a Microsoft Excel 2010 or Microsoft Excel 2013 workbook, without loading the document into Excel. It contains an example **GetAllWorksheets** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -239,4 +239,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md b/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md index 9911dad6..4fd73f7a 100644 --- a/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md +++ b/docs/how-to-retrieve-application-property-values-from-a-word-processing-document.md @@ -18,9 +18,9 @@ ms.localizationpriority: medium # Retrieve application property values from a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically retrieve an application property from a Microsoft Word 2013 document, without loading the document into Word. It contains example code to illustrate this task. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve an application property from a Microsoft Word 2013 document, without loading the document into Word. It contains example code to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) @@ -167,4 +167,4 @@ The following is the complete code sample in C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-comments-from-a-word-processing-document.md b/docs/how-to-retrieve-comments-from-a-word-processing-document.md index ab40c50b..8a9b8a99 100644 --- a/docs/how-to-retrieve-comments-from-a-word-processing-document.md +++ b/docs/how-to-retrieve-comments-from-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Retrieve comments from a word processing document (Open XML SDK) -This topic describes how to use the classes in the Open XML SDK 2.5 for +This topic describes how to use the classes in the Open XML SDK for Office to programmatically retrieve the comments from the main document part in a word processing document. @@ -238,4 +238,4 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md b/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md index 34bd031a..2453a1d5 100644 --- a/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md +++ b/docs/how-to-retrieve-the-number-of-slides-in-a-presentation-document.md @@ -17,14 +17,14 @@ ms.localizationpriority: medium --- # Retrieve the number of slides in a presentation document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve the number of slides in a presentation document, either including hidden slides or not, without loading the document into Microsoft PowerPoint. It contains an example **RetrieveNumberOfSlides** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -248,4 +248,4 @@ Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md b/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md index 5b721aaf..40c9a043 100644 --- a/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md +++ b/docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md @@ -16,12 +16,12 @@ ms.localizationpriority: high # Retrieve the values of cells in a spreadsheet document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically retrieve the values of cells in a spreadsheet document. It contains an example **GetCellValue** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -540,4 +540,4 @@ The following is the complete **GetCellValue** code sample in C\# and Visual Bas ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-search-and-replace-text-in-a-document-part.md b/docs/how-to-search-and-replace-text-in-a-document-part.md index 6f51f5e6..39216166 100644 --- a/docs/how-to-search-and-replace-text-in-a-document-part.md +++ b/docs/how-to-search-and-replace-text-in-a-document-part.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Search and replace text in a document part (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically search and replace a text value in a word processing document. @@ -199,6 +199,6 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Regular Expressions](https://msdn.microsoft.com/library/hs600312.aspx) diff --git a/docs/how-to-set-a-custom-property-in-a-word-processing-document.md b/docs/how-to-set-a-custom-property-in-a-word-processing-document.md index 0ecc0da7..2f8fcf28 100644 --- a/docs/how-to-set-a-custom-property-in-a-word-processing-document.md +++ b/docs/how-to-set-a-custom-property-in-a-word-processing-document.md @@ -6,7 +6,7 @@ api_type: - schema ms.assetid: how-to-set-a-custom-property-in-a-word-processing-document title: 'How to: Set a custom property in a word processing document (Open XML SDK)' -description: 'Learn how to use the classes in the Open XML SDK 2.5 for Office to programmatically set a custom property in a word processing document.' +description: 'Learn how to use the classes in the Open XML SDK for Office to programmatically set a custom property in a word processing document.' ms.suite: office ms.author: o365devx @@ -17,9 +17,9 @@ ms.localizationpriority: high --- # Set a custom property in a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for Office to programmatically set a custom property in a word processing document. It contains an example **SetCustomProperty** method to illustrate this task. +This topic shows how to use the classes in the Open XML SDK for Office to programmatically set a custom property in a word processing document. It contains an example **SetCustomProperty** method to illustrate this task. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: +To use the sample code in this topic, you must install the [Open XML SDK](https://www.nuget.org/packages/DocumentFormat.OpenXml). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -80,7 +80,7 @@ contents of the part. Figure 1. Open XML SDK Productivity Tool for Microsoft Office - ![Open XML SDK 2.0 Productivity Tool](./media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif) + ![Open XML SDK Productivity Tool](./media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif) The relevant XML is also extracted and shown here for ease of reading. @@ -728,4 +728,4 @@ The following is the complete **SetCustomProperty** code sample in C\# and Visua ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/how-to-set-the-font-for-a-text-run.md b/docs/how-to-set-the-font-for-a-text-run.md index 438ce739..8079fc0b 100644 --- a/docs/how-to-set-the-font-for-a-text-run.md +++ b/docs/how-to-set-the-font-for-a-text-run.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Set the font for a text run (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to set the font for a portion of text within a word processing document programmatically. @@ -269,7 +269,7 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) [Object Initializers: Named and Anonymous Types](https://msdn.microsoft.com/library/bb385125.aspx) diff --git a/docs/how-to-validate-a-word-processing-document.md b/docs/how-to-validate-a-word-processing-document.md index f060fd5b..0c24ffaa 100644 --- a/docs/how-to-validate-a-word-processing-document.md +++ b/docs/how-to-validate-a-word-processing-document.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Validate a word processing document (Open XML SDK) -This topic shows how to use the classes in the Open XML SDK 2.5 for +This topic shows how to use the classes in the Open XML SDK for Office to programmatically validate a word processing document. The following assembly directives are required to compile the code in @@ -219,4 +219,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index 0c527ae8..f1c5e996 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Introduction to markup compatibility (Open XML SDK) -This topic introduces the markup compatibility features included in the Open XML SDK 2.5 for Office. +This topic introduces the markup compatibility features included in the Open XML SDK for Office. ## Introduction @@ -27,7 +27,7 @@ Consider also what should happen if you open that document in a hypothetical lat Open XML anticipates these scenarios. The Office Open XML File Formats specification describes facilities for achieving the above desired outcomes in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/publications-and-standards/standards/ecma-376/). -The Open XML SDK 2.5 supports markup compatibility in a way that makes it easy for you to achieve the above desired outcomes for and Office 2013 without having to necessarily become an expert in the specification details. +The Open XML SDK supports markup compatibility in a way that makes it easy for you to achieve the above desired outcomes for and Office 2013 without having to necessarily become an expert in the specification details. ## What is markup compatibility? @@ -37,20 +37,20 @@ Open XML defines formats for word-processing, spreadsheet and presentation docum Markup compatibility is discussed in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-376,%20Second%20Edition, 20Part%203%20-%20Markup%20Compatibility%20and%20Extensibility.zip), which is recommended reading to understand markup compatibility. The specification defines XML attributes to express compatibility rules, and XML elements to specify alternate content. For example, the **Ignorable** attribute specifies namespaces that can be ignored when they are not understood by the consuming application. Alternate-Content elements specify markup alternatives that can be chosen by an application at run time. For example, Word 2013 can choose only the markup alternative that it recognizes. The complete list of compatibility-rule attributes and alternate-content elements and their details can be found in the specification. -## Open XML SDK 2.5 support for markup compatibility +## Open XML SDK support for markup compatibility -The work that the Open XML SDK 2.5 does for markup compatibility is detailed and subtle. However, the goal can be summarized as: using settings that you assign when you open a document, preprocess the document to: +The work that the Open XML SDK does for markup compatibility is detailed and subtle. However, the goal can be summarized as: using settings that you assign when you open a document, preprocess the document to: 1. Filter or remove any elements from namespaces that will not be understood (for example, Office 2013 document opened in Office 2010 context) 2. Process any markup compatibility elements and attributes as specified in the Open XML specification. The preprocessing performed is in accordance with ECMA-376, Second Edition: Part 3.13. -The Open XML SDK 2.5 support for markup compatibility comes primarily in the form of two classes and in the manner in which content is preprocessed in accordance with ECMA-376, Second Edition. The two classes are **OpenSettings** and **MarkupCompatibilityProcessSettings**. Use the former to provide settings that apply to SDK behavior overall. Use the latter to supply one part of those settings, specifically those that apply to markup compatibility. +The Open XML SDK support for markup compatibility comes primarily in the form of two classes and in the manner in which content is preprocessed in accordance with ECMA-376, Second Edition. The two classes are **OpenSettings** and **MarkupCompatibilityProcessSettings**. Use the former to provide settings that apply to SDK behavior overall. Use the latter to supply one part of those settings, specifically those that apply to markup compatibility. ## Set the stage when you open -When you open a document using the Open XML SDK 2.5, you have the option of using an overload with a signature that accepts an instance of the **[OpenSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.opensettings.aspx)** class as a parameter. You use the open settings class to provide certain important settings that govern the behavior of the SDK. One set of settings in particular, stored in the **[MarkupCompatibilityProcessSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.opensettings.markupcompatibilityprocesssettings.aspx)** property, determines how markup compatibility elements and attributes are processed. You set the property to an instance of the **[MarkupCompatibilityProcessSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.aspx)** class prior to opening a document. +When you open a document using the Open XML SDK, you have the option of using an overload with a signature that accepts an instance of the **[OpenSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.opensettings.aspx)** class as a parameter. You use the open settings class to provide certain important settings that govern the behavior of the SDK. One set of settings in particular, stored in the **[MarkupCompatibilityProcessSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.opensettings.markupcompatibilityprocesssettings.aspx)** property, determines how markup compatibility elements and attributes are processed. You set the property to an instance of the **[MarkupCompatibilityProcessSettings](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.aspx)** class prior to opening a document. The class has the following properties: @@ -84,7 +84,7 @@ The following code example demonstrates how to call the Open method with an inst ## What happens during preprocessing -During preprocessing, the Open XML SDK 2.5 removes elements and attributes in the markup compatibility namespace, removing the contents of unselected alternate-content elements, and interpreting compatibility-rule attributes as appropriate. This work is guided by the process mode and target file format versions properties. +During preprocessing, the Open XML SDK removes elements and attributes in the markup compatibility namespace, removing the contents of unselected alternate-content elements, and interpreting compatibility-rule attributes as appropriate. This work is guided by the process mode and target file format versions properties. The **ProcessMode** property determines the parts to be preprocessed. The content in *those* parts is filtered to contain only elements that are understood by the application version indicated in the **TargetFileFormatVersions** property. @@ -105,5 +105,5 @@ The target file format versions property lets you choose to process markup compa The default value, **Office2010**, means the SDK will assume that namespaces defined in Office 2010 are understood, but not namespaces defined in Office 2013. Thus, during preprocessing, the SDK will ignore the namespaces defined in Office 2013 and choose the Office 2010 compatible alternate-content. -When you set the target file format versions property to **Office2013**, the Open XML SDK 2.5 assumes that all of the namespaces defined in Office 2010 and Office 2013 are understood, does not ignore any content defined under Office 2013, and will choose +When you set the target file format versions property to **Office2013**, the Open XML SDK assumes that all of the namespaces defined in Office 2010 and Office 2013 are understood, does not ignore any content defined under Office 2013, and will choose the Office 2013 compatible alternate-content. diff --git a/docs/open-xml-sdk-design-considerations.md b/docs/open-xml-sdk-design-considerations.md index 585f9a87..cfc5c1d4 100644 --- a/docs/open-xml-sdk-design-considerations.md +++ b/docs/open-xml-sdk-design-considerations.md @@ -5,7 +5,7 @@ api_name: api_type: - schema ms.assetid: 43c49a6d-96b5-4e87-a5bf-01629d61aad4 -title: Open XML SDK 2.5 for Office design considerations +title: Open XML SDK for Office design considerations ms.suite: office ms.author: o365devx @@ -14,25 +14,25 @@ ms.topic: conceptual ms.date: 11/01/2017 ms.localizationpriority: high --- -# Open XML SDK 2.5 for Office design considerations +# Open XML SDK for Office design considerations -Before using the Open XML SDK 2.5 for Office, be aware of the following +Before using the Open XML SDK for Office, be aware of the following design considerations. -------------------------------------------------------------------------------- ## Design Considerations -The Open XML SDK 2.5: +The Open XML SDK: - Does not replace the Microsoft Office Object Model and provides no abstraction on top of the file formats. You must still understand - the structure of the file formats to use the Open XML SDK 2.5. + the structure of the file formats to use the Open XML SDK. - Does not provide functionality to convert Open XML formats to and from other formats, such as HTML or XPS. - Does not guarantee document validity of Open XML Formats when you - use the Open XML SDK 2.5 or if you decide to manipulate the + use the Open XML SDK or if you decide to manipulate the underlying XML directly. - Does not provide application behavior such as layout functionality diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 1268b4c6..ef2ada3a 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -8,8 +8,8 @@ api_name: api_type: - schema ms.assetid: f6a9ae68-7989-4208-97f5-3c945137a0ab -title: Welcome to the Open XML SDK 2.5 for Office -description: 'Documentation and guidance for the strongly-typed classes in the Open XML SDK 2.5 for Office.' +title: Welcome to the Open XML SDK for Office +description: 'Documentation and guidance for the strongly-typed classes in the Open XML SDK for Office.' ms.suite: office ms.author: o365devx @@ -19,10 +19,10 @@ ms.date: 06/28/2021 ms.localizationpriority: high --- -# Welcome to the Open XML SDK 2.5 for Office +# Welcome to the Open XML SDK for Office This content set provides documentation and guidance for the -strongly-typed classes in the Open XML SDK 2.5 for Office. +strongly-typed classes in the Open XML SDK for Office. The SDK is built on the **System.IO.Packaging** API and provides strongly-typed classes to manipulate documents that @@ -34,9 +34,9 @@ standard. The Open XML file formats are useful for developers because they are an open standard and are based on well-known technologies: ZIP and XML. -The Open XML SDK 2.5 simplifies the task of manipulating Open XML +The Open XML SDK simplifies the task of manipulating Open XML packages and the underlying Open XML schema elements within a package. -The Open XML SDK 2.5 encapsulates many common tasks that developers +The Open XML SDK encapsulates many common tasks that developers perform on Open XML packages, so that you can perform complex operations with just a few lines of code. @@ -46,14 +46,14 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. ## In this section -- [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) +- [Getting started with the Open XML SDK for Office](getting-started.md) - [Understanding the Open XML file formats](understanding-the-open-xml-file-formats.md) - [How do I... (Open XML SDK)](how-do-i.md) -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) +- [Open XML SDK class library reference](/office/open-xml/open-xml-sdk) ## See also -- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0) +- [Open XML SDK for Microsoft Office](https://www.nuget.org/packages/DocumentFormat.OpenXml) - [Microsoft Office Developer Center](https://developer.microsoft.com/office/docs) - [Samples on GitHub](https://github.com/OfficeDev) - [Open XML SDK copyright notice](https://msdn.microsoft.com/library/6165f4ad-2e4d-4852-921a-087782af364d(Office.15).aspx) diff --git a/docs/packages-and-general.md b/docs/packages-and-general.md index 33dc1085..a83cfe0b 100644 --- a/docs/packages-and-general.md +++ b/docs/packages-and-general.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Packages and general (Open XML SDK) -This section provides how-to topics for working with documents and packages using the Open XML SDK 2.5. +This section provides how-to topics for working with documents and packages using the Open XML SDK. ## In this section @@ -41,4 +41,4 @@ This section provides how-to topics for working with documents and packages usin ## Related sections - [How do I...](how-do-i.md) -- [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) +- [Getting started with the Open XML SDK for Office](getting-started.md) diff --git a/docs/presentations.md b/docs/presentations.md index 8d8d79de..ae9531f4 100644 --- a/docs/presentations.md +++ b/docs/presentations.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Presentations (Open XML SDK) -This section provides how-to topics for working with presentation documents using the Open XML SDK 2.5. +This section provides how-to topics for working with presentation documents using the Open XML SDK. ## In this section @@ -55,4 +55,4 @@ This section provides how-to topics for working with presentation documents usin ## Related sections - [How do I...](how-do-i.md) -- [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) +- [Getting started with the Open XML SDK for Office](getting-started.md) diff --git a/docs/spreadsheets.md b/docs/spreadsheets.md index 2939828c..11a87a68 100644 --- a/docs/spreadsheets.md +++ b/docs/spreadsheets.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Spreadsheets (Open XML SDK) -This section provides how-to topics for working with spreadsheet documents using the Open XML SDK 2.5 for Office. +This section provides how-to topics for working with spreadsheet documents using the Open XML SDK for Office. ## In this section @@ -57,4 +57,4 @@ This section provides how-to topics for working with spreadsheet documents using ## Related sections - [How do I...](how-do-i.md) -- [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) +- [Getting started with the Open XML SDK for Office](getting-started.md) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index b34afe61..1affe681 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -25,9 +25,9 @@ A PresentationML document is not stored as one large body in a single part. Inst ## Important Presentation Parts -Using the Open XML SDK 2.5, you can create document structure and content that uses strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](/dotnet/api/documentformat.openxml.presentation?view=openxml-2.8.1&preserve-view=true)** namespace. The following table lists the class names of the classes that correspond to some of the important presentation elements. +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](/dotnet/api/documentformat.openxml.presentation?view=openxml-2.8.1&preserve-view=true)** namespace. The following table lists the class names of the classes that correspond to some of the important presentation elements. -| **Package Part** | **Top Level PresentationML Element** | **Open XML SDK 2.5 Class** | **Description**\* | +| **Package Part** | **Top Level PresentationML Element** | **Open XML SDK Class** | **Description**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Presentation | \ | [Presentation](/dotnet/api/documentformat.openxml.presentation.presentation?view=openxml-2.8.1&preserve-view=true) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | | Presentation Properties | \ | [PresentationProperties](/dotnet/api/documentformat.openxml.presentation.presentationproperties?view=openxml-2.8.1&preserve-view=true) | The root element for the Presentation Properties part. This element functions as a parent element within which additional presentation-wide document properties are contained. | @@ -612,7 +612,7 @@ The packaging structure of a presentation document contains several references b ## Generated PresentationML XML Code -After you run the Open XML SDK 2.5 code to generate a presentation, you can explore the contents of the .zip package to view the PresentationML XML code. To view the .zip package, rename the extension on the minimum presentation from **.pptx** to **.zip**. Inside the .zip package, there are several parts that make up the minimum presentation. +After you run the Open XML SDK code to generate a presentation, you can explore the contents of the .zip package to view the PresentationML XML code. To view the .zip package, rename the extension on the minimum presentation from **.pptx** to **.zip**. Inside the .zip package, there are several parts that make up the minimum presentation. Figure 1 shows the structure under the **ppt** folder of the .zip package for a minimum presentation that contains a single slide. @@ -622,7 +622,7 @@ Figure 1. Minimum presentation folder structure The presentation.xml file contains \ (Slide) elements that reference the slides in the presentation. Each slide is associated to the presentation by means of a slide ID and a relationship ID. The **slideID** is the identifier (ID) used within the package to identify a slide and must be unique within the presentation. The **id** attribute is the relationship ID that identifies the slide part definition associated with a slide. For more information about the slide part, see [Working with presentation slides (Open XML SDK)](working-with-presentation-slides.md). -The following XML code is the PresentationML that represents the presentation part of a presentation document that contains a single slide. This code is generated when you run the Open XML SDK 2.5 code to create a minimum presentation. +The following XML code is the PresentationML that represents the presentation part of a presentation document that contains a single slide. This code is generated when you run the Open XML SDK code to create a minimum presentation. ```xml @@ -646,7 +646,7 @@ The following XML code is the PresentationML that represents the presentation pa ``` -The following XML code is the PresentationML that represents the relationship part of the presentation document. This code is generated when you run the Open XML SDK 2.5 to create a minimum presentation. +The following XML code is the PresentationML that represents the relationship part of the presentation document. This code is generated when you run the Open XML SDK to create a minimum presentation. ```xml @@ -663,7 +663,7 @@ The following XML code is the PresentationML that represents the relationship pa ``` -The following XML code is the PresentationML that represents the slide part of the presentation document. Each slide in a presentation has a slide part associated with it. This code is generated when you run the Open XML SDK 2.5 to create a minimum presentation. +The following XML code is the PresentationML that represents the slide part of the presentation document. Each slide in a presentation has a slide part associated with it. This code is generated when you run the Open XML SDK to create a minimum presentation. ```xml diff --git a/docs/structure-of-a-spreadsheetml-document.md b/docs/structure-of-a-spreadsheetml-document.md index 9631b6a5..fbd9ce4f 100644 --- a/docs/structure-of-a-spreadsheetml-document.md +++ b/docs/structure-of-a-spreadsheetml-document.md @@ -31,14 +31,14 @@ related elements. -------------------------------------------------------------------------------- ## Important Spreadsheet Parts -Using the Open XML SDK 2.5 for Office, you can create document structure +Using the Open XML SDK for Office, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to some of the important spreadsheet elements. -| Package Part| Top Level SpreadsheetML Element | Open XML SDK 2.5 Class | Description| +| Package Part| Top Level SpreadsheetML Element | Open XML SDK Class | Description| |:------------|:--------------------------------|:-----------------------|:-----------| | Workbook | workbook | [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx) | The root element for the main document part.| | Worksheet | worksheet | [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx) | A type of sheet that represent a grid of cells that contains text, numbers, dates or formulas. For more information, see [Working with sheets (Open XML SDK)](working-with-sheets.md). | @@ -70,7 +70,7 @@ A relationship Id that points to the location of the sheet definition ### Open XML SDK Code Example -This code example uses the classes in the Open XML SDK 2.5 to create a +This code example uses the classes in the Open XML SDK to create a minimum, blank workbook. ```csharp @@ -136,7 +136,7 @@ minimum, blank workbook. ### Generated SpreadsheetML -After you run the Open XML SDK 2.5 code to generate a minimum workbook, +After you run the Open XML SDK code to generate a minimum workbook, you can explore the contents of the .zip package to view the SpreadsheetML XML code. To view the .zip package, rename the extension on the minimum spreadsheet from **.xlsx** to @@ -160,7 +160,7 @@ with a sheet. The following XML code is the spreadsheetML that represents the workbook part of the spreadsheet document. This code is generated when you run -the Open XML SDK 2.5 code to create a minimum workbook. +the Open XML SDK code to create a minimum workbook. ```xml @@ -177,7 +177,7 @@ relationships between the workbook and the worksheets it contains. The following XML code is the spreadsheetML that represents the relationship part of the spreadsheet document. This code is generated -when you run the Open XML SDK 2.5 to create a minimum workbook. +when you run the Open XML SDK to create a minimum workbook. ```xml @@ -192,7 +192,7 @@ information about sheets, see [Working with sheets (Open XML SDK)](working-with- The following XML code is the spreadsheetML that represents the worksheet part of the spreadsheet document. This code is generated when -you run the Open XML SDK 2.5 to create a minimum workbook. +you run the Open XML SDK to create a minimum workbook. ```xml diff --git a/docs/structure-of-a-wordprocessingml-document.md b/docs/structure-of-a-wordprocessingml-document.md index 76a4b112..7ae849af 100644 --- a/docs/structure-of-a-wordprocessingml-document.md +++ b/docs/structure-of-a-wordprocessingml-document.md @@ -30,15 +30,15 @@ or more \<**t**\> elements. The \<**t**\> element contains a range of text. ## Important WordprocessingML Parts -The Open XML SDK 2.5 API provides strongly-typed classes in the +The Open XML SDK API provides strongly-typed classes in the DocumentFormat.OpenXML.WordprocessingML namespace that correspond to **WordprocessingML** elements. The following table lists some important **WordprocessingML** elements, the **WordprocessingML** document package part that the element corresponds to (where applicable) and the managed class that -represents the element in the Open XML SDK 2.5 API. +represents the element in the Open XML SDK API. -| **Package Part** | **WordprocessingML Element** | **Open XML SDK 2.5 Class** | **Description** | +| **Package Part** | **WordprocessingML Element** | **Open XML SDK Class** | **Description** | |---|---|---|---| | Main Document|document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | | Comments | comments | [Comments](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.comments.aspx) | The root element for the comments part. | @@ -104,7 +104,7 @@ t — A range of text. ### Open XML SDK Code Example -The following code uses the Open XML SDK 2.5 to create a simple **WordprocessingML** document that contains the text +The following code uses the Open XML SDK to create a simple **WordprocessingML** document that contains the text "Hello, Word!" ```csharp @@ -147,7 +147,7 @@ The following code uses the Open XML SDK 2.5 to create a simple **Wordprocessing ### Generated WordprocessingML -After you run the Open XML SDK 2.5 code in the previous section to +After you run the Open XML SDK code in the previous section to generate a document, you can explore the contents of the .zip package to view the **WordprocessingML** XML code. To view the .zip package, rename the extension on the minimum document from @@ -159,7 +159,7 @@ contains a single line of text.**Art placeholder**The document.xml file corresponds to the **WordprocessingML** main document part and it is this part that contains the content of the main body of the document. The following XML code is generated in the document.xml file when you -run the Open XML SDK 2.5 code in the previous section. +run the Open XML SDK code in the previous section. ```xml diff --git a/docs/what-s-new-in-the-open-xml-sdk.md b/docs/what-s-new-in-the-open-xml-sdk.md index 3a747e49..5cfcb5e1 100644 --- a/docs/what-s-new-in-the-open-xml-sdk.md +++ b/docs/what-s-new-in-the-open-xml-sdk.md @@ -5,7 +5,7 @@ api_name: api_type: - schema ms.assetid: 4fbda0e3-5676-4a8f-ba62-3fba59fa418b -title: What's new in the Open XML SDK 2.5 for Office +title: What's new in the Open XML SDK for Office ms.suite: office ms.author: o365devx @@ -15,12 +15,12 @@ ms.date: 11/01/2017 ms.localizationpriority: high --- -# What's new in the Open XML SDK 2.5 for Office +# What's new in the Open XML SDK for Office This topic describes the new and improved features included in the Open -XML SDK 2.5 for Office in addition to known issues and limitations. +XML SDK for Office in addition to known issues and limitations. -The Open XML SDK 2.5 is a collection of classes that let you create and +The Open XML SDK is a collection of classes that let you create and manipulate Open XML documents - documents that adhere to the [Office Open XML File Formats Standard](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463). Because the SDK provides an application program interface that lets you manipulate Open XML documents directly, you can do so without the need @@ -35,7 +35,7 @@ while adding new features. -------------------------------------------------------------------------------- ## System requirements -The Open XML SDK 2.5 has the following system requirements: +The Open XML SDK has the following system requirements: **Supported operating systems:** Windows 8 Preview, Windows 7, Windows Server 2003 Service Pack 2, Windows Server 2008 R2, Windows Server 2008 @@ -47,7 +47,7 @@ available disk space -------------------------------------------------------------------------------- ## New software requirements -Open XML SDK 2.5 requires .NET Framework 4.0 or the greater version. +Open XML SDK requires .NET Framework 4.0 or the greater version. Accordingly, the supported operating systems are updated to be the same as the requirements of the .NET Framework 4.0. @@ -55,10 +55,10 @@ as the requirements of the .NET Framework 4.0. -------------------------------------------------------------------------------- ## Support of Office 2013 Preview file format In addition to offering compatibility with the Open XML SDK 1.0 classes -and the Open XML SDK 2.0 for Microsoft Office classes, Open XML SDK 2.5 +and the Open XML SDK for Microsoft Office classes, Open XML SDK provides new classes that enable you to write and build applications to manipulate Open XML file extensions of the new Microsoft Office 2013 -features (see Table 1). By using the Open XML SDK 2.5 Productivity Tool +features (see Table 1). By using the Open XML SDK Productivity Tool for Office, those new extensions can be browsed inside the Open XML SDK documentation in the left pane. @@ -79,12 +79,12 @@ the Microsoft Developer Network. -------------------------------------------------------------------------------- ## Reads ISO Strict document files -The Open XML SDK 2.5 can read ISO/IEC 29500 Strict Format files. Its +The Open XML SDK can read ISO/IEC 29500 Strict Format files. Its document contents are recognized as an Open XML Transitional Format file when the document is opened. When the file is saved, the document is saved as an Open XML Transitional Format file. -The Open XML SDK 2.5 converts ISO Strict files to Transitional Formatted +The Open XML SDK converts ISO Strict files to Transitional Formatted files when any changes are made to the document or when the document is saved. Unless the document is saved or modified, the document is left as an ISO Strict Format file. @@ -94,9 +94,9 @@ an ISO Strict Format file. ## Updated API information Because the file format extension of Office 2013 extends members of the **\** element which did not have any -member elements, Open XML SDK 2.0 classes associated with the empty +member elements, Open XML SDK classes associated with the empty **\** (e.g. **DocumentFormat.OpenXml.Spreadsheet.PivotFilter:ExtensionList**) -are updated to the new variants of **ExtensionList** classes of Open XML SDK 2.5 (e.g. +are updated to the new variants of **ExtensionList** classes of Open XML SDK (e.g. **DocumentFormat.OpenXml.Spreadsheet.PivotFilter:PivotFilterExtensionList**). The following empty **ExtensionList** in each class are replaced with a new **ExtensionList** @@ -159,9 +159,9 @@ The following section discusses deprecated API members: ### Smart tags Because *smart tags* were deprecated in Office 2010, the Open XML SDK -2.5 doesn't support smart tag related Open XML elements. The Open XML -SDK 2.5 still can process smart tag elements as *unknown* elements, -however the Open XML SDK 2.5 Productivity Tool for Office validates +doesn't support smart tag related Open XML elements. The Open XML +SDK still can process smart tag elements as *unknown* elements, +however the Open XML SDK Productivity Tool for Office validates those elements (see the following list) in Office document files as *invalid tags*. @@ -191,9 +191,9 @@ DocumentFormat.OpenXml.Wordprocessing: ### Office 2010 Beta only tags -The Open XML SDK 2.0 classes for Office 2010 *beta only* Open XML tags +The Open XML SDK classes for Office 2010 *beta only* Open XML tags are deprecated. For example, the beta only non-visual properties of **DocumentFormat.OpenXml.Office2010.Drawing.ChartDrawing**, **DocumentFormat.OpenXml.Office2010.Word**, and **DocumentFormat.OpenXml.Office2010.Drawing** -have been removed from the Open XML SDK 2.5. +have been removed from the Open XML SDK. diff --git a/docs/word-processing.md b/docs/word-processing.md index 9b61a611..e50e1ad6 100644 --- a/docs/word-processing.md +++ b/docs/word-processing.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Word processing (Open XML SDK) -This section provides how-to topics for working with word processing documents using the Open XML SDK 2.5 for Office. +This section provides how-to topics for working with word processing documents using the Open XML SDK for Office. ## In this section @@ -78,4 +78,4 @@ This section provides how-to topics for working with word processing documents u ## Related sections - [How do I...](how-do-i.md) -- [Getting started with the Open XML SDK 2.5 for Office](getting-started.md) +- [Getting started with the Open XML SDK for Office](getting-started.md) diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index 09e8e8ea..06cf37af 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Working with animation (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office **Animate** class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). +This topic discusses the Open XML SDK for Office **Animate** class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). ## Animation in PresentationML @@ -56,9 +56,9 @@ This element is a generic animation element that requires little or no semantic ``` -The following table lists the child elements of the \ element used when working with animation and the Open XML SDK 2.5 classes that correspond to them. +The following table lists the child elements of the \ element used when working with animation and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |:---------------------------|:----------------------------| | \ | CommonBehavior | | \ | TimeAnimateValueList | @@ -73,7 +73,7 @@ The following table from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalog | to | This attribute specifies the ending value for the animation as a percentage.The possible values for this attribute are defined by the W3C XML Schema string data type. | | valueType | This attribute specifies the type of property value.The possible values for this attribute are defined by the ST_TLAnimateBehaviorValueType simple type (§19.7.21). | -## Open XML SDK 2.5 Animate Class +## Open XML SDK Animate Class The OXML SDK **Animate** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **Animate** class to manipulate individual \ elements in a PresentationML document. @@ -138,7 +138,7 @@ The **Animate** class, which represents the \ element, is therefore also ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a Presentation by Providing a File Name](how-to-create-a-presentation-document-by-providing-a-file-name.md) [How to: Insert a new slide into a presentation (Open XML SDK)](how-to-insert-a-new-slide-into-a-presentation.md) [How to: Delete a slide from a presentation (Open XML SDK)](how-to-delete-a-slide-from-a-presentation.md) diff --git a/docs/working-with-comments.md b/docs/working-with-comments.md index 594c9042..aec9619f 100644 --- a/docs/working-with-comments.md +++ b/docs/working-with-comments.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Working with comments (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [Comment](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.comment.aspx) class and how it relates to the +This topic discusses the Open XML SDK for Office [Comment](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.comment.aspx) class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). @@ -48,9 +48,9 @@ Example: ``` -The following table lists the child elements of the \ element used when working with comments and the Open XML SDK 2.5 classes that correspond to them. +The following table lists the child elements of the \ element used when working with comments and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ExtensionListWithModification](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.extensionlistwithmodification.aspx) | | \ | [Position](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.position.aspx) | @@ -65,7 +65,7 @@ specification describes the attributes of the \ element. | dt | This attribute specifies the date and time this comment was last modified.
The possible values for this attribute are defined by the W3C XML Schema **datetime** datatype. | | idx | This attribute specifies an identifier for this comment that is unique within a list of all comments by this author in this document. An author's first comment in a document has index 1.
Note: Because the index is unique only for the comment author, a document can contain multiple comments with the same index created by different authors.
The possible values for this attribute are defined by the ST_Index simple type (§19.7.3). | -## Open XML SDK 2.5 Comment Class +## Open XML SDK Comment Class The OXML SDK **Comment** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **Comment** class to manipulate individual \ elements in a PresentationML document. @@ -148,7 +148,7 @@ The **Comment** class, which represents the \ element, is therefore also as ## Open XML SDK Code Example -The following code segment from the article [How to: Add a comment to a slide in a presentation](how-to-add-a-comment-to-a-slide-in-a-presentation.md) adds a new comments part to an existing slide in a presentation (if the slide does not already contain comments) and creates an instance of an Open XML SDK 2.0 **Comment** class in the slide comments part. It also adds a comment list to the comments part by creating an instance of the **CommentList** class, if one does not already exist; assigns an ID to the comment; and then adds a comment to the comment list by creating an instance of the **Comment** class, assigning the required attribute values. In addition, it creates instances of the **Position** and **Text** classes associated with the new **Comment** class instance. For the complete code sample, see the aforementioned article. +The following code segment from the article [How to: Add a comment to a slide in a presentation](how-to-add-a-comment-to-a-slide-in-a-presentation.md) adds a new comments part to an existing slide in a presentation (if the slide does not already contain comments) and creates an instance of an Open XML SDK **Comment** class in the slide comments part. It also adds a comment list to the comments part by creating an instance of the **CommentList** class, if one does not already exist; assigns an ID to the comment; and then adds a comment to the comment list by creating an instance of the **Comment** class, assigning the required attribute values. In addition, it creates instances of the **Position** and **Text** classes associated with the new **Comment** class instance. For the complete code sample, see the aforementioned article. ```csharp // Declare a comments part. @@ -237,7 +237,7 @@ The following code segment from the article [How to: Add a comment to a slide in ## Generated PresentationML -When the Open XML SDK 2.5 code in [How to: Add a comment to a slide in a presentation](how-to-add-a-comment-to-a-slide-in-a-presentation.md) is run, including +When the Open XML SDK code in [How to: Add a comment to a slide in a presentation](how-to-add-a-comment-to-a-slide-in-a-presentation.md) is run, including the segment shown in this article, the following XML is written to a new CommentAuthors.xml part in the existing PresentationML document referenced in the code, assuming that the document contained no comments or comment authors before the code was run. @@ -271,7 +271,7 @@ article. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a Presentation by Providing a File Name](how-to-create-a-presentation-document-by-providing-a-file-name.md) [How to: Add a comment to a slide in a presentation (Open XML SDK)](how-to-add-a-comment-to-a-slide-in-a-presentation.md) [How to: Delete all the comments by an author from all the slides in a presentation (Open XML SDK)](how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md) diff --git a/docs/working-with-conditional-formatting.md b/docs/working-with-conditional-formatting.md index f27ed230..b89edb99 100644 --- a/docs/working-with-conditional-formatting.md +++ b/docs/working-with-conditional-formatting.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Working with conditional formatting (Open XML SDK) -This topic discusses the Open XML SDK 2.5 **[ConditionalFormatting](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.conditionalformatting.aspx)** class and how it +This topic discusses the Open XML SDK **[ConditionalFormatting](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.conditionalformatting.aspx)** class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md)**. @@ -39,12 +39,12 @@ applied to a cell or series of cells. The collection of cells on which the format is applied is defined using the **sqref** attribute. The **sqref** attribute specifies a cell range using the 'from:to' notation, for example 'A1:A10'. -The following table lists the common Open XML SDK 2.5 classes used when +The following table lists the common Open XML SDK classes used when working with the **ConditionalFormatting** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------| | cfRule | [ConditionalFormattingRule](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.conditionalformattingrule.aspx) | | dataBar | [DataBar](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.databar.aspx) | @@ -52,8 +52,8 @@ class. | iconSet | [IconSet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.iconset.aspx) | -------------------------------------------------------------------------------- -## Open XML SDK 2.5 Conditional Formatting Class -The Open XML SDK 2.5**ConditionalFormatting** +## Open XML SDK Conditional Formatting Class +The Open XML SDK**ConditionalFormatting** class represents the table (\<**conditionalFormatting**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **ConditionalFormatting** class to manipulate individual \<**conditionalFormatting**\> diff --git a/docs/working-with-formulas.md b/docs/working-with-formulas.md index 93e8991e..0a98ff68 100644 --- a/docs/working-with-formulas.md +++ b/docs/working-with-formulas.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with formulas (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [CellFormula](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellformula.aspx) class and how it relates to the +This topic discusses the Open XML SDK [CellFormula](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellformula.aspx) class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a diff --git a/docs/working-with-handout-master-slides.md b/docs/working-with-handout-master-slides.md index 6a784449..3bb9749f 100644 --- a/docs/working-with-handout-master-slides.md +++ b/docs/working-with-handout-master-slides.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Working with handout master slides (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [HandoutMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.handoutmaster.aspx) class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML document (Open XML SDK)](structure-of-a-presentationml-document.md). +This topic discusses the Open XML SDK for Office [HandoutMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.handoutmaster.aspx) class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML document (Open XML SDK)](structure-of-a-presentationml-document.md). ## Handout Master Slides in PresentationML The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ @@ -34,19 +34,19 @@ majority of the intended purpose for a handoutMaster slide. The following table lists the child elements of the \ element used when working with handout master slides and the Open XML -SDK 2.5 classes that correspond to them. +SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|--------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMap](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormap.aspx) | | \ | [CommonSlideData](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commonslidedata.aspx) | | \ | [ExtensionListWithModification](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.extensionlistwithmodification.aspx) | | \ | [HeaderFooter](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.headerfooter.aspx) | -## Open XML SDK 2.5 HandoutMaster Class +## Open XML SDK HandoutMaster Class -The Open XML SDK 2.5 **HandoutMaster** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **HandoutMaster** class to manipulate individual \ elements in a PresentationML document. +The Open XML SDK **HandoutMaster** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **HandoutMaster** class to manipulate individual \ elements in a PresentationML document. Classes commonly associated with the **HandoutMaster** class are shown in the following sections. @@ -134,7 +134,7 @@ following code sample, are the **CommonSlideData** class, the **ColorMap** class ## Open XML SDK Code Example The following method adds a new handout master part to an existing -presentation and creates an instance of an Open XML SDK 2.5**HandoutMaster** class in the new handout master +presentation and creates an instance of an Open XML SDK**HandoutMaster** class in the new handout master part. The **HandoutMaster** class constructor creates instances of the **CommonSlideData** class and the **ColorMap** class. The **CommonSlideData** class constructor creates an @@ -219,7 +219,7 @@ namespace. ## Generated PresentationML -When the Open XML SDK 2.5 code is run, the following XML is written to +When the Open XML SDK code is run, the following XML is written to the PresentationML document referenced in the code. ```xml @@ -276,7 +276,7 @@ the PresentationML document referenced in the code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md) [How to: Insert a new slide into a presentation (Open XML SDK)](how-to-insert-a-new-slide-into-a-presentation.md) [How to: Delete a slide from a presentation (Open XML SDK)](how-to-delete-a-slide-from-a-presentation.md) diff --git a/docs/working-with-notes-slides.md b/docs/working-with-notes-slides.md index 89e5867c..e927cfcb 100644 --- a/docs/working-with-notes-slides.md +++ b/docs/working-with-notes-slides.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Working with notes slides (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [NotesSlide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesslide.aspx) class and how it relates to the +This topic discusses the Open XML SDK for Office [NotesSlide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesslide.aspx) class and how it relates to the Open XML File Format PresentationML schema. @@ -55,11 +55,11 @@ parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). The following table lists the child elements of the \ element -used when working with notes slides and the Open XML SDK 2.5 classes +used when working with notes slides and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMapOverride](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormapoverride.aspx) | | \ | [CommonSlideData](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commonslidedata.aspx) | @@ -78,7 +78,7 @@ specification describes the attributes of the \ element. --------------------------------------------------------------------------------- -## Open XML SDK 2.5 NotesSlide Class +## Open XML SDK NotesSlide Class The OXML SDK **NotesSlide** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **NotesSlide** class to manipulate individual @@ -164,7 +164,7 @@ the **CommonSlideData** class. -------------------------------------------------------------------------------- ## Open XML SDK Code Example The following method adds a new notes slide part to an existing -presentation and creates an instance of an Open XML SDK 2.5**NotesSlide** class in the new notes slide part. The +presentation and creates an instance of an Open XML SDK**NotesSlide** class in the new notes slide part. The **NotesSlide** class constructor creates instances of the **CommonSlideData** class and the **ColorMap** class. The **CommonSlideData** class constructor creates an @@ -225,7 +225,7 @@ namespace. --------------------------------------------------------------------------------- ## Generated PresentationML -When the Open XML SDK 2.0 code is run, the following XML is written to +When the Open XML SDK code is run, the following XML is written to the PresentationML document referenced in the code. ```xml @@ -275,7 +275,7 @@ the PresentationML document referenced in the code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a Presentation by Providing a File Name](how-to-create-a-presentation-document-by-providing-a-file-name.md) diff --git a/docs/working-with-paragraphs.md b/docs/working-with-paragraphs.md index 111e8e48..a4b22cf1 100644 --- a/docs/working-with-paragraphs.md +++ b/docs/working-with-paragraphs.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with paragraphs (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) class and how it relates to the +This topic discusses the Open XML SDK [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) class and how it relates to the Open XML File Format WordprocessingML schema. @@ -45,7 +45,7 @@ The following table lists the most common Open XML SDK classes used when working with paragraphs. -| **WordprocessingML element** | **Open XML SDK 2.5 Class** | +| **WordprocessingML element** | **Open XML SDK Class** | |------------------------------|----------------------------| | **p** | Paragraph | | **pPr** | ParagraphProperties | @@ -54,7 +54,7 @@ working with paragraphs. --------------------------------------------------------------------------------- ## Paragraph Class -The Open XML SDK 2.5 [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) class represents the paragraph +The Open XML SDK [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) class represents the paragraph (\<**p**\>) element defined in the Open XML File Format schema for WordprocessingML documents as discussed above. Use the **Paragraph** object to manipulate @@ -84,7 +84,7 @@ makes up the document content. The OXML SDK [Text](https://msdn.microsoft.com/li -------------------------------------------------------------------------------- ## Open XML SDK Code Example -The following code instantiates an Open XML SDK 2.5**Paragraph** object and then uses it to add text to +The following code instantiates an Open XML SDK**Paragraph** object and then uses it to add text to a WordprocessingML document. ```csharp @@ -137,7 +137,7 @@ WordprocessingML document referenced in the code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [Working with runs (Open XML SDK)](working-with-runs.md) diff --git a/docs/working-with-pivottables.md b/docs/working-with-pivottables.md index 0498b427..1288400b 100644 --- a/docs/working-with-pivottables.md +++ b/docs/working-with-pivottables.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Working with PivotTables (Open XML SDK) -This topic discusses the Open XML SDK 2.5 **[PivotTableDefinition](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.pivottabledefinition.aspx)** class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). +This topic discusses the Open XML SDK **[PivotTableDefinition](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.pivottabledefinition.aspx)** class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). ## PivotTable in SpreadsheetML @@ -85,17 +85,17 @@ is displayed in the cells of a worksheet and therefore you need to construct them as well. You can also have the user update the PivotTable cells when opening the document. -The following table lists the common Open XML SDK 2.5 classes used when working with the **PivotTableDefinition** class. +The following table lists the common Open XML SDK classes used when working with the **PivotTableDefinition** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---------------------------|-------------------------------------------------------------------------------------------------------------------| | pivotField | [PivotField](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.pivotfield.aspx) | | pivotCacheDefinition | [PivotCacheDefinition](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.pivotcachedefinition.aspx) | | pivotCacheRecords | [PivotCacheRecords](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.pivotcacherecords.aspx) | -## Open XML SDK 2.5 PivotTableDefinition Class +## Open XML SDK PivotTableDefinition Class -The Open XML SDK 2.5**PivotTableDefinition** +The Open XML SDK**PivotTableDefinition** class represents the PivotTable definition (\<**pivotTableDefinition**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **PivotTableDefinition** class to manipulate individual \<**pivotTableDefinition**\> elements in a SpreadsheetML document. The main function of the PivotTable definition is to store information diff --git a/docs/working-with-presentation-slides.md b/docs/working-with-presentation-slides.md index 24b396b6..00fa3fee 100644 --- a/docs/working-with-presentation-slides.md +++ b/docs/working-with-presentation-slides.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with presentation slides (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) class and how it relates to the Open +This topic discusses the Open XML SDK for Office [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a @@ -59,11 +59,11 @@ part. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). The following table lists the child elements of the \ element used -when working with presentation slides and the Open XML SDK 2.5 classes +when working with presentation slides and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMapOverride](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormapoverride.aspx) | | \ | [CommonSlideData](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commonslidedata.aspx) | @@ -72,8 +72,8 @@ that correspond to them. | \ | [Transition](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.transition.aspx) | -------------------------------------------------------------------------------- -## Open XML SDK 2.5 Slide Class -The Open XML SDK 2.5**Slide** class represents the \ element +## Open XML SDK Slide Class +The Open XML SDK**Slide** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **Slide** object to manipulate individual \ elements in a PresentationML document. @@ -184,7 +184,7 @@ these classes, as shown in the following code example, are the **CommonSlideData ## Open XML SDK Code Example The following method from the article [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md)** adds a new slide part to an existing presentation and creates an instance of the Open XML -SDK 2.5**Slide** class in the new slide part. +SDK **Slide** class in the new slide part. The **Slide** class constructor creates instances of the **CommonSlideData** and **ColorMapOverride** classes. The **CommonSlideData** class constructor creates an instance of the **ShapeTree** class, whose @@ -323,7 +323,7 @@ is written to the PresentationML document file referenced in the code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Insert a new slide into a presentation (Open XML SDK)](how-to-insert-a-new-slide-into-a-presentation.md) diff --git a/docs/working-with-presentations.md b/docs/working-with-presentations.md index c9d20a2b..731c9931 100644 --- a/docs/working-with-presentations.md +++ b/docs/working-with-presentations.md @@ -16,7 +16,7 @@ ms.localizationpriority: medium --- # Working with presentations (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentation.aspx) class and how it relates to +This topic discusses the Open XML SDK for Office [Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentation.aspx) class and how it relates to the Open XML File Format PresentationML schema. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a @@ -70,10 +70,10 @@ the parts and elements that make up a PresentationML document, see The following table lists some of the most common child elements of the \ element used when working with presentations and the -Open XML SDK 2.5 classes that correspond to them. +Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|-------------------------------------------------------------------------------------------------------------------------------------| | \ | [SlideMasterIdList](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemasteridlist.aspx) | | \ | [SlideMasterId](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemasterid.aspx) | @@ -87,8 +87,8 @@ Open XML SDK 2.5 classes that correspond to them. | \ | [DefaultTextStyle](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.defaulttextstyle.aspx) | -------------------------------------------------------------------------------- -## Open XML SDK 2.5 Presentation Class -The Open XML SDK 2.5**Presentation** class +## Open XML SDK Presentation Class +The Open XML SDK**Presentation** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **Presentation** class to manipulate an individual \ element in a PresentationML document. @@ -327,7 +327,7 @@ code example, are the **SlideMasterIdList**, ## Open XML SDK Code Example The following code example from the article [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md) uses the [Create(String, PresentationDocumentType)](https://msdn.microsoft.com/library/office/cc535977.aspx) method of the [PresentationDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.aspx) class of the Open XML -SDK 2.5 to create an instance of that same class that has the specified +SDK to create an instance of that same class that has the specified name and file path. Then it uses the [AddPresentationPart()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.addpresentationpart.aspx) method to add an instance of the [PresentationPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationpart.aspx) class to the document file. Next, it creates an instance of the [Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentation.aspx) class that represents the @@ -430,7 +430,7 @@ PresentationML document referenced in the code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md) diff --git a/docs/working-with-runs.md b/docs/working-with-runs.md index 1f4f0e62..57e438c8 100644 --- a/docs/working-with-runs.md +++ b/docs/working-with-runs.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with runs (Open XML SDK) -This topic discusses the Open XML SDK 2.5 **[Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx)** class and how it relates to the Open +This topic discusses the Open XML SDK **[Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx)** class and how it relates to the Open XML File Format WordprocessingML schema. @@ -50,7 +50,7 @@ The following table lists the most common Open XML SDK classes used when working with runs. -| **XML element** | **Open XML SDK 2.0 Class** | +| **XML element** | **Open XML SDK Class** | |-----------------|----------------------------| | **p** | Paragraph | | **rPr** | RunProperties | @@ -58,7 +58,7 @@ working with runs. --------------------------------------------------------------------------------- ## Run Class -The Open XML SDK 2.5[Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) class represents the run (\<**r**\>) element defined in the Open XML File Format +The Open XML SDK[Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) class represents the run (\<**r**\>) element defined in the Open XML File Format schema for WordprocessingML documents as discussed above. Use a **Run** object to manipulate an individual \<**r**\> element in a WordprocessingML document. ### RunProperties Class @@ -142,7 +142,7 @@ WordprocessingML document specified in the preceding code. ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [Working with paragraphs (Open XML SDK)](working-with-paragraphs.md) diff --git a/docs/working-with-sheets.md b/docs/working-with-sheets.md index b0646233..0407317e 100644 --- a/docs/working-with-sheets.md +++ b/docs/working-with-sheets.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with sheets (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx), [Chartsheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.chartsheet.aspx), and [DialogSheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.dialogsheet.aspx) classes and how they relate to +This topic discusses the Open XML SDK [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx), [Chartsheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.chartsheet.aspx), and [DialogSheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.dialogsheet.aspx) classes and how they relate to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). @@ -43,9 +43,9 @@ Other types of sheets include chart sheets and dialog sheets. © ISO/IEC29500: 2008. -## Open XML SDK 2.5 Worksheet Class +## Open XML SDK Worksheet Class -The Open XML SDK 2.5**Worksheet** class +The Open XML SDK**Worksheet** class represents the **worksheet** (\<**worksheet**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **Worksheet** class to manipulate individual \<**worksheet**\> elements in a SpreadsheetML document. @@ -104,10 +104,10 @@ the XML file. If the value is a string value, it is stored in a shared string table. For more information about using the shared string table to store string values, see [Working with the shared string table (Open XML SDK)](working-with-the-shared-string-table.md). -The following table lists the common Open XML SDK 2.5 classes used when +The following table lists the common Open XML SDK classes used when working with the [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx) class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---|---| | sheetData | [SheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx) | | row | [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) | @@ -328,10 +328,10 @@ relationship in the Chartsheet part's relationship item: © ISO/IEC29500: 2008. -The following table lists the common Open XML SDK 2.5 classes used when +The following table lists the common Open XML SDK classes used when working with the [Chartsheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.chartsheet.aspx) class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---|---| | drawing | [Drawing](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.drawing.aspx) | @@ -352,7 +352,7 @@ be only one Drawings part per worksheet or chartsheet. © ISO/IEC29500: 2008. -## Open XML SDK 2.5 Dialogsheet Class +## Open XML SDK Dialogsheet Class The following information from the ISO/IEC 29500 specification introduces the **dialogsheet** (\<**dialogsheet**\>) element. diff --git a/docs/working-with-slide-layouts.md b/docs/working-with-slide-layouts.md index 16112453..fa21c417 100644 --- a/docs/working-with-slide-layouts.md +++ b/docs/working-with-slide-layouts.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Working with slide layouts (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) class and how it relates to the Open XML File Format PresentationML schema. +This topic discusses the Open XML SDK for Office [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) class and how it relates to the Open XML File Format PresentationML schema. ## Slide Layouts in PresentationML @@ -34,10 +34,10 @@ the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). The following table lists the child elements of the \ -element used when working with slide layouts and the Open XML SDK 2.5 +element used when working with slide layouts and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMapOverride](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormapoverride.aspx) | | \ | [CommonSlideData](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commonslidedata.aspx) | @@ -59,7 +59,7 @@ specification describes the attributes of the \ element. | type (Slide Layout Type) | Specifies the slide layout type that is used by this slide.
The possible values for this attribute are defined by the ST_SlideLayoutType simple type (§19.7.15). | | userDrawn (Is User Drawn) | Specifies if the corresponding object has been drawn by the user and should thus not be deleted. This allows for the flagging of slides that contain user drawn data.
The possible values for this attribute are defined by the W3C XML Schema **boolean** datatype. | -## The Open XML SDK 2.5 SlideLayout Class +## The Open XML SDK SlideLayout Class The OXML SDK **SlideLayout** class represents the \ element defined in the Open XML File Format schema for @@ -166,7 +166,7 @@ the **CommonSlideData** class, the **ColorMapOverride** class, the [ShapeTree](h ## Open XML SDK Code Example -The following method from the article [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md) adds a new slide layout part to an existing presentation and creates an instance of an Open XML SDK 2.5**SlideLayout** class in the new slide layout part. The **SlideLayout** class constructor creates instances of the **CommonSlideData** class and the **ColorMapOverride** class. The **CommonSlideData** class constructor creates an instance of the [ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx) class, whose constructor in turn creates additional class instances: an instance of the [NonVisualGroupShapeProperties (https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx) class, an instance of the [GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx) class, and an instance of the [Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx) class. +The following method from the article [How to: Create a presentation document by providing a file name (Open XML SDK)](how-to-create-a-presentation-document-by-providing-a-file-name.md) adds a new slide layout part to an existing presentation and creates an instance of an Open XML SDK**SlideLayout** class in the new slide layout part. The **SlideLayout** class constructor creates instances of the **CommonSlideData** class and the **ColorMapOverride** class. The **CommonSlideData** class constructor creates an instance of the [ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx) class, whose constructor in turn creates additional class instances: an instance of the [NonVisualGroupShapeProperties (https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx) class, an instance of the [GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx) class, and an instance of the [Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx) class. The namespace represented by the letter *P* in the code is the [DocumentFormat.OpenXml.Presentation (https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) namespace. @@ -265,6 +265,6 @@ When the Open XML SDK code is run, the following XML is written to the Presentat ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a Presentation by Providing a File Name](how-to-create-a-presentation-document-by-providing-a-file-name.md) [How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index ded5dc02..68d04584 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -17,7 +17,7 @@ ms.localizationpriority: medium # Working with slide masters (Open XML SDK) -This topic discusses the Open XML SDK 2.5 for Office **[SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx)** class and how it relates to the Open XML File Format PresentationML schema. +This topic discusses the Open XML SDK for Office **[SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx)** class and how it relates to the Open XML File Format PresentationML schema. ## Slide Masters in PresentationML @@ -27,9 +27,9 @@ This element specifies an instance of a slide master slide. Within a slide maste The \ element is the root element of the PresentationML Slide Master part. For more information about the overall structure of the parts and elements that make up a PresentationML document, see [Structure of a PresentationML Document](structure-of-a-presentationml-document.md). -The following table lists the child elements of the \ element used when working with slide masters and the Open XML SDK 2.5 classes that correspond to them. +The following table lists the child elements of the \ element used when working with slide masters and the Open XML SDK classes that correspond to them. -| **PresentationML Element** | **Open XML SDK 2.5 Class** | +| **PresentationML Element** | **Open XML SDK Class** | |:---------------------------|:---------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMap](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormap.aspx) | | \ | [CommonSlideData](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commonslidedata.aspx) | @@ -47,9 +47,9 @@ specification describes the attributes of the \ element. |----------------------------|----------------------------------------------------| | preserve (Preserve Slide Master) | Specifies whether the corresponding slide layout is deleted when all the slides that follow that layout are deleted. If this attribute is not specified then a value of **false** should be assumed by the generating application. This would mean that the slide would in fact be deleted if no slides within the presentation were related to it.
The possible values for this attribute are defined by the W3C XML Schema **Boolean** data type. | -## Open XML SDK 2.5 SlideMaster Class +## Open XML SDK SlideMaster Class -The Open XML SDK 2.5**SlideMaster** class +The Open XML SDK**SlideMaster** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **SlideMaster** class to manipulate individual \ elements in a PresentationML document. @@ -146,7 +146,7 @@ element. Among these classes, as shown in the following code sample, are the **C ## Open XML SDK Code Example -The following method from the article [How to: Create a presentation document by providing a file name](/office/open-xml/how-to-create-a-presentation-document-by-providing-a-file-name) adds a new slidemaster part to an existing presentation and creates an instance of an Open XML SDK 2.5**SlideMaster** class in the new slide master part. The **SlideMaster** class constructor creates instances of the **CommonSlideData** class and the **ColorMap**, **SlideLayoutIdList**, and **TextStyles** classes. The **CommonSlideData** class constructor creates an instance of the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, whose constructor in turn creates additional class instances: an instance of the **[NonVisualGroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx)** class, an instance of the **[GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx)** class, and an instance of the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class, among others. +The following method from the article [How to: Create a presentation document by providing a file name](/office/open-xml/how-to-create-a-presentation-document-by-providing-a-file-name) adds a new slidemaster part to an existing presentation and creates an instance of an Open XML SDK**SlideMaster** class in the new slide master part. The **SlideMaster** class constructor creates instances of the **CommonSlideData** class and the **ColorMap**, **SlideLayoutIdList**, and **TextStyles** classes. The **CommonSlideData** class constructor creates an instance of the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, whose constructor in turn creates additional class instances: an instance of the **[NonVisualGroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx)** class, an instance of the **[GroupShapeProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.groupshapeproperties.aspx)** class, and an instance of the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class, among others. The namespace represented by the letter *P* in the code is the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. @@ -282,7 +282,7 @@ When the Open XML SDK code is run, the following XML is written to the Presentat ## See also -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +[About the Open XML SDK for Office](about-the-open-xml-sdk.md) [How to: Create a Presentation by Providing a File Name](how-to-create-a-presentation-document-by-providing-a-file-name.md) [How to: Insert a new slide into a presentation (Open XML SDK)](how-to-insert-a-new-slide-into-a-presentation.md) [How to: Delete a slide from a presentation (Open XML SDK)](how-to-delete-a-slide-from-a-presentation.md) diff --git a/docs/working-with-tables.md b/docs/working-with-tables.md index 72ec9dc3..0c30c831 100644 --- a/docs/working-with-tables.md +++ b/docs/working-with-tables.md @@ -17,7 +17,7 @@ ms.localizationpriority: high # Working with SpreadsheetML tables (Open XML SDK) -This topic discusses the Open XML SDK 2.5 **[Table](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.table.aspx)** class and how it relates to the Open +This topic discusses the Open XML SDK **[Table](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.table.aspx)** class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document @@ -64,16 +64,16 @@ in a separate part inside the package. The table part does not contain any table data. The data is maintained in the worksheet cells. For more information about data is stored in the worksheet, see [Working with sheets (Open XML SDK)](working-with-sheets.md). -The following table lists the common Open XML SDK 2.5 classes used when working with the **Table** class. +The following table lists the common Open XML SDK classes used when working with the **Table** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---------------------------|------------------------------------------------------------------------------------------------------------------------| | tableColumn | [TableColumn](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.tablecolumn.aspx) | | autoFilter | [AutoFilter](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.table.autofilter.aspx) | -## Open XML SDK 2.5 Table Class +## Open XML SDK Table Class -The Open XML SDK 2.5**Table** class represents +The Open XML SDK**Table** class represents the table (\<**table**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **Table** class to manipulate individual diff --git a/docs/working-with-the-calculation-chain.md b/docs/working-with-the-calculation-chain.md index 8eb2f549..88e0a831 100644 --- a/docs/working-with-the-calculation-chain.md +++ b/docs/working-with-the-calculation-chain.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with the calculation chain (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [CalculationChain](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.calculationchain.aspx) class and how it relates +This topic discusses the Open XML SDK [CalculationChain](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.calculationchain.aspx) class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). @@ -69,17 +69,17 @@ performed at runtime. © ISO/IEC29500: 2008. -The following table lists the common Open XML SDK 2.5 classes used when +The following table lists the common Open XML SDK classes used when working with the **CalculationChain** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---------------------------|----------------------------| | c | CalculationCell | -## Open XML SDK 2.5 CalculationChain Class +## Open XML SDK CalculationChain Class -The Open XML SDK 2.5**CalculationChain** class +The Open XML SDK**CalculationChain** class represents the paragraph (\<**calcChain**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **CalculationChain** class diff --git a/docs/working-with-the-shared-string-table.md b/docs/working-with-the-shared-string-table.md index cd88ae81..82a84d38 100644 --- a/docs/working-with-the-shared-string-table.md +++ b/docs/working-with-the-shared-string-table.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with the shared string table (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [SharedStringTable](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringtable.aspx) class and how it relates +This topic discusses the Open XML SDK [SharedStringTable](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringtable.aspx) class and how it relates to the Open XML File Format SpreadsheetML schema. For more information about the overall structure of the parts and elements that make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). @@ -68,18 +68,18 @@ workbook contains only one shared string table part that contains strings that can appear multiple times in one sheet or in multiple sheets. -The following table lists the common Open XML SDK 2.5 classes used when +The following table lists the common Open XML SDK classes used when working with the **SharedStringTable** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK Class** | |---------------------------|------------------------------------------------------------------------------------------------------------------------------| | si | [SharedStringItem](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringitem.aspx) | | t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.text.aspx) | -------------------------------------------------------------------------------- -## Open XML SDK 2.5 SharedStringTable Class -The Open XML SDK 2.5**SharedStringTable** class +## Open XML SDK SharedStringTable Class +The Open XML SDK**SharedStringTable** class represents the paragraph (\<**sst**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the **SharedStringTable** class to @@ -268,7 +268,7 @@ insert text into a cell, see [How to: Insert text into a cell in a spreadsheet d ``` ### Generated SpreadsheetML -If you run the Open XML SDK 2.5 in the [How to: Insert text into a cell in a spreadsheet document (Open XML SDK)](how-to-insert-text-into-a-cell-in-a-spreadsheet.md) topic and insert +If you run the Open XML SDK in the [How to: Insert text into a cell in a spreadsheet document (Open XML SDK)](how-to-insert-text-into-a-cell-in-a-spreadsheet.md) topic and insert the word "hello" into cell A1, the following XML is written to the "sharedStrings.xml" file in the .zip file of the SpreadsheetML document referenced in the code. diff --git a/docs/working-with-wordprocessingml-tables.md b/docs/working-with-wordprocessingml-tables.md index c535d57f..fb73e060 100644 --- a/docs/working-with-wordprocessingml-tables.md +++ b/docs/working-with-wordprocessingml-tables.md @@ -16,7 +16,7 @@ ms.localizationpriority: high --- # Working with WordprocessingML tables (Open XML SDK) -This topic discusses the Open XML SDK 2.5 [Table](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.table.aspx) class and how it relates to the Office Open XML File Formats WordprocessingML schema. +This topic discusses the Open XML SDK [Table](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.table.aspx) class and how it relates to the Office Open XML File Formats WordprocessingML schema. ## Tables in WordprocessingML @@ -32,7 +32,7 @@ A tbl element has two elements that define its properties: tblPr, which defines The following table lists some of the most common Open XML SDK classes used when working with tables. -| XML element | Open XML SDK 2.5 Class | +| XML element | Open XML SDK Class | | ------------- | ------------- | | Content Cell | Content Cell | |gridCol|GridColumn| @@ -41,29 +41,29 @@ The following table lists some of the most common Open XML SDK classes used when |tc|TableCell| |tr|TableRow| -## Open XML SDK 2.5 Table Class +## Open XML SDK Table Class -The Open XML SDK 2.5 [Table](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.table.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents as discussed above. Use a Tableobject to manipulate an individual table in a WordprocessingML document. +The Open XML SDK [Table](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.table.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents as discussed above. Use a Tableobject to manipulate an individual table in a WordprocessingML document. ## TableProperties Class -The Open XML SDK 2.5 [TableProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines table-wide properties for a table. Use a TableProperties object to set table-wide properties for a table in a WordprocessingML document. +The Open XML SDK [TableProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines table-wide properties for a table. Use a TableProperties object to set table-wide properties for a table in a WordprocessingML document. ## TableGrid Class -The Open XML SDK 2.5 [TableGrid](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablegrid.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents. In conjunction with grid column (\) child elements, the \ element defines the columns for a table and specifies the default width of table cells in the columns. Use a TableGrid object to define the columns in a table in a WordprocessingML document. +The Open XML SDK [TableGrid](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablegrid.aspx) class represents the (\) element defined in the Open XML File Format schema for WordprocessingML documents. In conjunction with grid column (\) child elements, the \ element defines the columns for a table and specifies the default width of table cells in the columns. Use a TableGrid object to define the columns in a table in a WordprocessingML document. ## GridColumn Class -The Open XML SDK 2.5 [GridColumn](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.gridcolumn.aspx) class represents the grid column (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element is a child element of the \ element and defines a single column in a table in a WordprocessingML document. Use the GridColumn class to manipulate an individual column in a WordprocessingML document. +The Open XML SDK [GridColumn](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.gridcolumn.aspx) class represents the grid column (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element is a child element of the \ element and defines a single column in a table in a WordprocessingML document. Use the GridColumn class to manipulate an individual column in a WordprocessingML document. ## TableRow Class -The Open XML SDK 2.5 [TableRow](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablerow.aspx) class represents the table row (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines a row in a table in a WordprocessingML document, analogous to the \ tag in HTML. A table row can also have formatting applied to it using a table row properties (\) element. The Open XML SDK 2.5 [TableRowProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablerowproperties.aspx) class represents the \ element. +The Open XML SDK [TableRow](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablerow.aspx) class represents the table row (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines a row in a table in a WordprocessingML document, analogous to the \ tag in HTML. A table row can also have formatting applied to it using a table row properties (\) element. The Open XML SDK [TableRowProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablerowproperties.aspx) class represents the \ element. ## TableCell Class -The Open XML SDK 2.5 [TableCell](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecell.aspx) class represents the table cell (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines a cell in a table in a WordprocessingML document, analogous to the \ tag in HTML. A table cell can also have formatting applied to it using a table cell properties (\) element. The Open XML SDK 2.5 [TableCellProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecellproperties.aspx) class represents the \ element. +The Open XML SDK [TableCell](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecell.aspx) class represents the table cell (\) element defined in the Open XML File Format schema for WordprocessingML documents. The \ element defines a cell in a table in a WordprocessingML document, analogous to the \ tag in HTML. A table cell can also have formatting applied to it using a table cell properties (\) element. The Open XML SDK [TableCellProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecellproperties.aspx) class represents the \ element. ## Open XML SDK Code Example @@ -201,7 +201,7 @@ When this code is run, the following XML is written to the WordprocessingML docu ## See also -- [About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +- [About the Open XML SDK for Office](about-the-open-xml-sdk.md) - [Structure of a WordprocessingML document (Open XML SDK)](structure-of-a-wordprocessingml-document.md) - [Working with paragraphs (Open XML SDK)](working-with-paragraphs.md) - [Working with runs (Open XML SDK)](working-with-runs.md) From d75d28983cc5f5639f43d5777827cb17d494cd9d Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 12:35:08 -0700 Subject: [PATCH 018/193] remove 2.8.1 --- ...ange-of-cells-in-a-spreadsheet-document.md | 2 +- ...et-worksheet-information-from-a-package.md | 12 +++++----- ...les-parts-in-a-word-processing-document.md | 4 +--- .../structure-of-a-presentationml-document.md | 24 +++++++++---------- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md index d8695ce2..98ca0079 100644 --- a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md +++ b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md @@ -291,7 +291,7 @@ The code then gets the column name by passing a parameter that represents the na End Function ``` -To compare two columns the code passes in two parameters that represent the columns to compare. If the first column is longer than the second column, it returns 1. If the second column is longer than the first column, it returns -1. Otherwise, it compares the values of the columns using the **[Compare](/dotnet/api/system.string.compare?view=net-6.0)** and returns the result. +To compare two columns the code passes in two parameters that represent the columns to compare. If the first column is longer than the second column, it returns 1. If the second column is longer than the first column, it returns -1. Otherwise, it compares the values of the columns using the **[Compare](/dotnet/api/system.string.compare)** and returns the result. ```csharp // Given two columns, compares the columns. diff --git a/docs/how-to-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index 83889e42..cd882eff 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -39,7 +39,7 @@ The following assembly directives are required to compile the code in this topic In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument?)** class represents an Excel document package. To create an Excel document, you create an instance of the **SpreadsheetDocument** class and populate it with parts. At a minimum, the document must have a workbook part that serves as a container for the document, and at least one worksheet part. The text is represented in the package as XML using **SpreadsheetML** markup. -To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open.md)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open?view=openxml-2.8.1&preserve-view=true #DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. +To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open.md)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open?preserve-view=true#DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. The following code example calls the **Open** method to open the file specified by the **filepath** for read-only access. @@ -57,9 +57,9 @@ The **using** statement provides a recommended alternative to the typical .Open, ## Basic structure of a SpreadsheetML -The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1&preserve-view=true)** and **[Sheet](/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1&preserve-view=true)** elements, which reference the -worksheets in the **[Workbook](/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1&preserve-view=true)**. A separate XML file is created -for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet?view=openxml-2.8.1&preserve-view=true)**. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. +The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](/dotnet/api/documentformat.openxml.spreadsheet.sheets?preserve-view=true)** and **[Sheet](/dotnet/api/documentformat.openxml.spreadsheet.sheet?preserve-view=true)** elements, which reference the +worksheets in the **[Workbook](/dotnet/api/documentformat.openxml.spreadsheet.workbook?preserve-view=true)**. A separate XML file is created +for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet?preserve-view=true)**. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. ```xml @@ -71,7 +71,7 @@ for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet? ``` -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1&preserve-view=true)** represents the cell table and contains one or more **[Row](/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1&preserve-view=true )** elements. A **row** contains one or more **[Cell](/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1&preserve-view=true)** elements. Each cell contains a **[CellValue](/dotnet/api/documentformat.openxml.spreadsheet.cellvalue?view=openxml-2.8.1&preserve-view=true)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. +The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?preserve-view=true)** represents the cell table and contains one or more **[Row](/dotnet/api/documentformat.openxml.spreadsheet.row?preserve-view=true )** elements. A **row** contains one or more **[Cell](/dotnet/api/documentformat.openxml.spreadsheet.cell?preserve-view=true)** elements. Each cell contains a **[CellValue](/dotnet/api/documentformat.openxml.spreadsheet.cellvalue?preserve-view=true)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. ```xml @@ -112,7 +112,7 @@ After you have opened the file for read-only access, you instantiate the **Sheet Dim sheets As S = mySpreadsheet.WorkbookPart.Workbook.Sheets ``` -You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement?view=openxml-2.8.1&preserve-view=true)** and the **[OpenXmlAttribute](/api/documentformat.openxml.openxmlattribute?view=openxml-2.8.1&preserve-view=true)** in each element. +You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement?preserve-view=true)** and the **[OpenXmlAttribute](/api/documentformat.openxml.openxmlattribute?preserve-view=true)** in each element. ```csharp foreach (E sheet in sheets) diff --git a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md index 7e0b8109..179d641e 100644 --- a/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md +++ b/docs/how-to-replace-the-styles-parts-in-a-word-processing-document.md @@ -184,9 +184,7 @@ stylesWithEffects part. ReplaceStylesPart(toDoc, node, True) End If ``` -For more information about the **ExtractStylesPart** method, see [How to: Extract styles from a word processing document -(Open XML SDK)](how-to-extract-styles-from-a-word-processing-document.md). The +For more information about the **ExtractStylesPart** method, see [the associated sample](how-to-extract-styles-from-a-word-processing-document.md). The following section explains the **ReplaceStylesPart** method. --------------------------------------------------------------------------------- diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index 1affe681..180af233 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -25,21 +25,21 @@ A PresentationML document is not stored as one large body in a single part. Inst ## Important Presentation Parts -Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](/dotnet/api/documentformat.openxml.presentation?view=openxml-2.8.1&preserve-view=true)** namespace. The following table lists the class names of the classes that correspond to some of the important presentation elements. +Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](/dotnet/api/documentformat.openxml.presentation)** namespace. The following table lists the class names of the classes that correspond to some of the important presentation elements. | **Package Part** | **Top Level PresentationML Element** | **Open XML SDK Class** | **Description**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Presentation | \ | [Presentation](/dotnet/api/documentformat.openxml.presentation.presentation?view=openxml-2.8.1&preserve-view=true) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | -| Presentation Properties | \ | [PresentationProperties](/dotnet/api/documentformat.openxml.presentation.presentationproperties?view=openxml-2.8.1&preserve-view=true) | The root element for the Presentation Properties part. This element functions as a parent element within which additional presentation-wide document properties are contained. | -| Slide Master | \ | [SlideMaster](/dotnet/api/documentformat.openxml.presentation.slidemaster?view=openxml-2.8.1&preserve-view=true) | The root element for the Slide Master part. Within a slide master slide are contained all elements that describe the objects and their corresponding formatting for within a presentation slide. For more information, see [Working with slide masters (Open XML SDK)](working-with-slide-masters.md). | -| Slide Layout | \ | [SlideLayout](/dotnet/api/documentformat.openxml.presentation.slidelayout?view=openxml-2.8.1&preserve-view=true) | The root element for the Slide Layout part. This element specifies the relationship information for each slide layout that is used within the slide master. For more information, see [Working with slide layouts (Open XML SDK)](working-with-slide-layouts.md). | -| Theme | \ | [Theme](/dotnet/api/documentformat.openxml.drawing.theme?view=openxml-2.8.1&preserve-view=true) | The root element for the Theme part. This element holds all the different formatting options available to a document through a theme and defines the overall look and feel of the document when themed objects are used within the document. | -| Slide | \ | [Slide](/dotnet/api/documentformat.openxml.presentation.slide?view=openxml-2.8.1&preserve-view=true) | The root element for the Slide part. This element specifies a slide within a slide list. For more information, see [Working with presentation slides (Open XML SDK)](working-with-presentation-slides.md). | -| Notes Master | \ | [NotesMaster](/dotnet/api/documentformat.openxml.presentation.notesmaster?view=openxml-2.8.1&preserve-view=true) | The root element for the Notes Master part. Within a notes master slide are contained all elements that describe the objects and their corresponding formatting for within a notes slide. | -| Notes Slide | \ | [NotesSlide](/dotnet/api/documentformat.openxml.presentation.notesslide?view=openxml-2.8.1&preserve-view=true) | The root element of the Notes Slide part. This element specifies the existence of a notes slide along with its corresponding data. Contained within a notes slide are all the common slide elements along with addition properties that are specific to the notes element. For more information, see [Working with notes slides (Open XML SDK)](working-with-notes-slides.md). | -| Handout Master | \ | [HandoutMaster](/dotnet/api/documentformat.openxml.presentation.handoutmaster?redirectedfrom=MSDN&view=openxml-2.8.1&preserve-view=true ) | The root element of the Handout Master part. Within a handout master slide are contained all elements that describe the objects and their corresponding formatting for within a handout slide. For more information, see [Working with handout master slides (Open XML SDK)](working-with-handout-master-slides.md). | -| Comments | \ | [CommentList](/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1&preserve-view=true ) | The root element of the Comments part. This element specifies a list of comments for a particular slide. For more information, see [Working with comments (Open XML SDK)](working-with-comments.md). | -| Comments Author | \ | [CommentAuthorList](/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1&preserve-view=true ) | The root element of the Comments Author part. This element specifies a list of authors with comments in the current document. For more information, see [Working with comments (Open XML SDK)](working-with-comments.md). | +| Presentation | \ | [Presentation](/dotnet/api/documentformat.openxml.presentation.presentation) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | +| Presentation Properties | \ | [PresentationProperties](/dotnet/api/documentformat.openxml.presentation.presentationproperties) | The root element for the Presentation Properties part. This element functions as a parent element within which additional presentation-wide document properties are contained. | +| Slide Master | \ | [SlideMaster](/dotnet/api/documentformat.openxml.presentation.slidemaster) | The root element for the Slide Master part. Within a slide master slide are contained all elements that describe the objects and their corresponding formatting for within a presentation slide. For more information, see [Working with slide masters (Open XML SDK)](working-with-slide-masters.md). | +| Slide Layout | \ | [SlideLayout](/dotnet/api/documentformat.openxml.presentation.slidelayout) | The root element for the Slide Layout part. This element specifies the relationship information for each slide layout that is used within the slide master. For more information, see [Working with slide layouts (Open XML SDK)](working-with-slide-layouts.md). | +| Theme | \ | [Theme](/dotnet/api/documentformat.openxml.drawing.theme) | The root element for the Theme part. This element holds all the different formatting options available to a document through a theme and defines the overall look and feel of the document when themed objects are used within the document. | +| Slide | \ | [Slide](/dotnet/api/documentformat.openxml.presentation.slide) | The root element for the Slide part. This element specifies a slide within a slide list. For more information, see [Working with presentation slides (Open XML SDK)](working-with-presentation-slides.md). | +| Notes Master | \ | [NotesMaster](/dotnet/api/documentformat.openxml.presentation.notesmaster) | The root element for the Notes Master part. Within a notes master slide are contained all elements that describe the objects and their corresponding formatting for within a notes slide. | +| Notes Slide | \ | [NotesSlide](/dotnet/api/documentformat.openxml.presentation.notesslide) | The root element of the Notes Slide part. This element specifies the existence of a notes slide along with its corresponding data. Contained within a notes slide are all the common slide elements along with addition properties that are specific to the notes element. For more information, see [Working with notes slides (Open XML SDK)](working-with-notes-slides.md). | +| Handout Master | \ | [HandoutMaster](/dotnet/api/documentformat.openxml.presentation.handoutmaster) | The root element of the Handout Master part. Within a handout master slide are contained all elements that describe the objects and their corresponding formatting for within a handout slide. For more information, see [Working with handout master slides (Open XML SDK)](working-with-handout-master-slides.md). | +| Comments | \ | [CommentList](/dotnet/api/documentformat.openxml.presentation.commentlist) | The root element of the Comments part. This element specifies a list of comments for a particular slide. For more information, see [Working with comments (Open XML SDK)](working-with-comments.md). | +| Comments Author | \ | [CommentAuthorList](/dotnet/api/documentformat.openxml.presentation.commentauthorlist) | The root element of the Comments Author part. This element specifies a list of authors with comments in the current document. For more information, see [Working with comments (Open XML SDK)](working-with-comments.md). | *Descriptions adapted from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification, © ISO/IEC29500: 2008. From 9666083a44b2266613ff27db9f3053643f095e4f Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 12:44:21 -0700 Subject: [PATCH 019/193] clean up --- ...-to-get-worksheet-information-from-a-package.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/how-to-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index cd882eff..86c9c911 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -37,9 +37,9 @@ The following assembly directives are required to compile the code in this topic ## Create SpreadsheetDocument object -In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument?)** class represents an Excel document package. To create an Excel document, you create an instance of the **SpreadsheetDocument** class and populate it with parts. At a minimum, the document must have a workbook part that serves as a container for the document, and at least one worksheet part. The text is represented in the package as XML using **SpreadsheetML** markup. +In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument)** class represents an Excel document package. To create an Excel document, you create an instance of the **SpreadsheetDocument** class and populate it with parts. At a minimum, the document must have a workbook part that serves as a container for the document, and at least one worksheet part. The text is represented in the package as XML using **SpreadsheetML** markup. -To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open.md)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open?preserve-view=true#DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. +To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open.md)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open#DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. The following code example calls the **Open** method to open the file specified by the **filepath** for read-only access. @@ -57,9 +57,9 @@ The **using** statement provides a recommended alternative to the typical .Open, ## Basic structure of a SpreadsheetML -The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](/dotnet/api/documentformat.openxml.spreadsheet.sheets?preserve-view=true)** and **[Sheet](/dotnet/api/documentformat.openxml.spreadsheet.sheet?preserve-view=true)** elements, which reference the -worksheets in the **[Workbook](/dotnet/api/documentformat.openxml.spreadsheet.workbook?preserve-view=true)**. A separate XML file is created -for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet?preserve-view=true)**. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. +The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](/dotnet/api/documentformat.openxml.spreadsheet.sheets)** and **[Sheet](/dotnet/api/documentformat.openxml.spreadsheet.sheet)** elements, which reference the +worksheets in the **[Workbook](/dotnet/api/documentformat.openxml.spreadsheet.workbook)**. A separate XML file is created +for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet)**. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. ```xml @@ -71,7 +71,7 @@ for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet? ``` -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?preserve-view=true)** represents the cell table and contains one or more **[Row](/dotnet/api/documentformat.openxml.spreadsheet.row?preserve-view=true )** elements. A **row** contains one or more **[Cell](/dotnet/api/documentformat.openxml.spreadsheet.cell?preserve-view=true)** elements. Each cell contains a **[CellValue](/dotnet/api/documentformat.openxml.spreadsheet.cellvalue?preserve-view=true)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. +The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](/dotnet/api/documentformat.openxml.spreadsheet.sheetdata)** represents the cell table and contains one or more **[Row](/dotnet/api/documentformat.openxml.spreadsheet.row )** elements. A **row** contains one or more **[Cell](/dotnet/api/documentformat.openxml.spreadsheet.cell)** elements. Each cell contains a **[CellValue](/dotnet/api/documentformat.openxml.spreadsheet.cellvalue)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. ```xml @@ -112,7 +112,7 @@ After you have opened the file for read-only access, you instantiate the **Sheet Dim sheets As S = mySpreadsheet.WorkbookPart.Workbook.Sheets ``` -You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement?preserve-view=true)** and the **[OpenXmlAttribute](/api/documentformat.openxml.openxmlattribute?preserve-view=true)** in each element. +You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement)** and the **[OpenXmlAttribute](/api/documentformat.openxml.openxmlattribute)** in each element. ```csharp foreach (E sheet in sheets) From ff0cfcb2a11c4701b61d76526d4ddff51c69f838 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 12:48:47 -0700 Subject: [PATCH 020/193] handle suggestions --- docs/how-to-get-worksheet-information-from-a-package.md | 4 ++-- docs/introduction-to-markup-compatibility.md | 2 +- docs/open-xml-sdk.md | 2 +- docs/structure-of-a-spreadsheetml-document.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/how-to-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index 86c9c911..84d9773f 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -39,7 +39,7 @@ The following assembly directives are required to compile the code in this topic In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument)** class represents an Excel document package. To create an Excel document, you create an instance of the **SpreadsheetDocument** class and populate it with parts. At a minimum, the document must have a workbook part that serves as a container for the document, and at least one worksheet part. The text is represented in the package as XML using **SpreadsheetML** markup. -To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open.md)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open#DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. +To create the class instance from the document you call one of the **[Open](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open)** methods. In this example, you must open the file for read access only. Therefore, you can use the **[Open(String, Boolean)](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open#DocumentFormat_OpenXml_Packaging_SpreadsheetDocument_Open_System_String_System_Boolean_)** method, and set the Boolean parameter to **false**. The following code example calls the **Open** method to open the file specified by the **filepath** for read-only access. @@ -112,7 +112,7 @@ After you have opened the file for read-only access, you instantiate the **Sheet Dim sheets As S = mySpreadsheet.WorkbookPart.Workbook.Sheets ``` -You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement)** and the **[OpenXmlAttribute](/api/documentformat.openxml.openxmlattribute)** in each element. +You then you iterate through the **Sheets** collection and display **[OpenXmlElement](/dotnet/api/documentformat.openxml.openxmlelement)** and the **[OpenXmlAttribute](/dotnet/api/documentformat.openxml.openxmlattribute)** in each element. ```csharp foreach (E sheet in sheets) diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index f1c5e996..71653170 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -35,7 +35,7 @@ Open XML defines formats for word-processing, spreadsheet and presentation docum ## Markup compatibility in the Open XML file formats specification -Markup compatibility is discussed in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/publications/files/ECMA-ST/ECMA-376,%20Second%20Edition, 20Part%203%20-%20Markup%20Compatibility%20and%20Extensibility.zip), which is recommended reading to understand markup compatibility. The specification defines XML attributes to express compatibility rules, and XML elements to specify alternate content. For example, the **Ignorable** attribute specifies namespaces that can be ignored when they are not understood by the consuming application. Alternate-Content elements specify markup alternatives that can be chosen by an application at run time. For example, Word 2013 can choose only the markup alternative that it recognizes. The complete list of compatibility-rule attributes and alternate-content elements and their details can be found in the specification. +Markup compatibility is discussed in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/wp-content/uploads/ECMA-376-Fifth-Edition-Part-3-Markup-Compatibility-and-Extensibility.zip), which is recommended reading to understand markup compatibility. The specification defines XML attributes to express compatibility rules, and XML elements to specify alternate content. For example, the **Ignorable** attribute specifies namespaces that can be ignored when they are not understood by the consuming application. Alternate-Content elements specify markup alternatives that can be chosen by an application at run time. For example, Word 2013 can choose only the markup alternative that it recognizes. The complete list of compatibility-rule attributes and alternate-content elements and their details can be found in the specification. ## Open XML SDK support for markup compatibility diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index ef2ada3a..b9141bf0 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -28,7 +28,7 @@ The SDK is built on the **System.IO.Packaging** API and provides strongly-typed classes to manipulate documents that adhere to the Office Open XML File Formats specification. The Office Open XML File Formats specification is an open, international, -[ECMA-376, Second Edition](https://www.ecma-international.org/publications/standards/Ecma-376.htm) +[ECMA-376, 5th Edition](https://www.ecma-international.org/publications-and-standards/standards/ecma-376/) and [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) standard. The Open XML file formats are useful for developers because they are an open standard and are based on well-known technologies: ZIP diff --git a/docs/structure-of-a-spreadsheetml-document.md b/docs/structure-of-a-spreadsheetml-document.md index fbd9ce4f..2cee3bed 100644 --- a/docs/structure-of-a-spreadsheetml-document.md +++ b/docs/structure-of-a-spreadsheetml-document.md @@ -55,7 +55,7 @@ some of the important spreadsheet elements. -------------------------------------------------------------------------------- ## Minimum Workbook Scenario -The following text from the [Standard ECMA-376](https://www.ecma-international.org/publications/standards/Ecma-376.htm) +The following text from the [Standard ECMA-376](https://www.ecma-international.org/publications-and-standards/standards/ecma-376/) introduces the minimum workbook scenario. The smallest possible (blank) workbook must contain the following: From 50be13dca69143b785db1566c363071e4210c120 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 12:51:55 -0700 Subject: [PATCH 021/193] More links --- docs/introduction-to-markup-compatibility.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index 71653170..e9272221 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -35,7 +35,7 @@ Open XML defines formats for word-processing, spreadsheet and presentation docum ## Markup compatibility in the Open XML file formats specification -Markup compatibility is discussed in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/wp-content/uploads/ECMA-376-Fifth-Edition-Part-3-Markup-Compatibility-and-Extensibility.zip), which is recommended reading to understand markup compatibility. The specification defines XML attributes to express compatibility rules, and XML elements to specify alternate content. For example, the **Ignorable** attribute specifies namespaces that can be ignored when they are not understood by the consuming application. Alternate-Content elements specify markup alternatives that can be chosen by an application at run time. For example, Word 2013 can choose only the markup alternative that it recognizes. The complete list of compatibility-rule attributes and alternate-content elements and their details can be found in the specification. +Markup compatibility is discussed in [ECMA-376, Second Edition, Part 3 - Markup Compatibility and Extensibility](https://www.ecma-international.org/wp-content/uploads/ECMA-376-3_5th_edition_december_2015.zip), which is recommended reading to understand markup compatibility. The specification defines XML attributes to express compatibility rules, and XML elements to specify alternate content. For example, the **Ignorable** attribute specifies namespaces that can be ignored when they are not understood by the consuming application. Alternate-Content elements specify markup alternatives that can be chosen by an application at run time. For example, Word 2013 can choose only the markup alternative that it recognizes. The complete list of compatibility-rule attributes and alternate-content elements and their details can be found in the specification. ## Open XML SDK support for markup compatibility From 68ea3a40961e45e6b39c913c9a0d796ce755ad09 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 13:43:40 -0700 Subject: [PATCH 022/193] Refactor shared overview of document type --- ...revisions-in-a-word-processing-document.md | 26 +------------ ...receives-a-relationship-id-to-a-package.md | 34 +---------------- ...to-add-a-new-document-part-to-a-package.md | 26 +------------ ...paragraph-in-a-word-processing-document.md | 30 +-------------- ...ackage-part-to-a-document-part-in-a-dif.md | 34 +---------------- docs/how-to-create-a-package.md | 36 +----------------- ...ssing-document-by-providing-a-file-name.md | 38 +------------------ ...tents-of-a-document-part-from-a-package.md | 34 +---------------- ...rocessing-document-for-read-only-access.md | 37 +----------------- ...-word-processing-document-from-a-stream.md | 37 +----------------- ...-add-text-to-a-word-processing-document.md | 37 +----------------- ...o-remove-a-document-part-from-a-package.md | 34 +---------------- docs/includes/word/structure.md | 27 +++++++++++++ 13 files changed, 39 insertions(+), 391 deletions(-) create mode 100644 docs/includes/word/structure.md diff --git a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md index 5706b83b..666b0932 100644 --- a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md +++ b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md @@ -55,31 +55,7 @@ To open an existing document, you can instantiate the [WordprocessingDocument](h The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *wdDoc*. Because the **WordprocessingDocument** class in the Open XML SDK automatically saves and closes the object as part of its **System.IDisposable** implementation, and because **Dispose** is automatically called when you exit the block, you do not have to explicitly call **Save** and **Close** as long as you use **using**. -## Structure of a WordProcessingML Document - -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph contains one or more **r** elements. The **r** stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more **t** elements. The **t** element contains a range of text. The following code example shows the **WordprocessingML** markup for a document that contains the text "Example text." - -```xml - - - - - Example text. - - - - -``` - -Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] ## ParagraphPropertiesChange Element diff --git a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md index 466364a0..43ae2353 100644 --- a/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-that-receives-a-relationship-id-to-a-package.md @@ -56,40 +56,8 @@ a word-processing document package. ----------------------------------------------------------------------------- -## The Structure of a WordProcessingML Document -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. The following -code example shows the **WordprocessingML** -markup for a document that contains the text "Example text." - -```xml - - - - - Example text. - - - - -``` -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these -classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the ISO/IEC 29500 specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] ----------------------------------------------------------------------------- ## How the Sample Code Works diff --git a/docs/how-to-add-a-new-document-part-to-a-package.md b/docs/how-to-add-a-new-document-part-to-a-package.md index 8dfebac6..f2669dd5 100644 --- a/docs/how-to-add-a-new-document-part-to-a-package.md +++ b/docs/how-to-add-a-new-document-part-to-a-package.md @@ -53,31 +53,7 @@ The code starts with opening a package file by passing a file name to one of the The **using** statement provides a recommended alternative to the typical .Create, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case **wordDoc**. Because the **WordprocessingDocument** class in the Open XML SDK automatically saves and closes the object as part of its **System.IDisposable** implementation, and because the **Dispose** method is automatically called when you exit the block; you do not have to explicitly call **Save** and **Close**, as long as you use **using**. -## Basic structure of a WordProcessingML document - -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph contains one or more **r** elements. The **r** stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more **t** elements. The **t** element contains a range of text. The **WordprocessingML** markup for the document that the sample code creates is shown in the following code example. - -```xml - - - - - Create text in body - CreateWordprocessingDocument - - - - -``` - -Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. Find these classes in the **[DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx)** namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements, - -|**WordprocessingML Element** | **Open XML SDK Class** | **Description** | -|:---|:---|:---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the ISO/IEC 29500 specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] ## How the sample code works diff --git a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md index 70cee955..9f554331 100644 --- a/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md +++ b/docs/how-to-apply-a-style-to-a-paragraph-in-a-word-processing-document.md @@ -73,35 +73,7 @@ To create the class instance, call one of the overloads of the [Open()](https:// End Using ``` -## Understand the structure of a WordprocessingML document - -The basic document structure of a WordprocessingML document consists of the **document** and **body** elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph contains one or more **r** elements. The **r** stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more **t** elements. The **t** element contains a range of text. The following code example shows the WordprocessingML markup for a document that contains the text "Example text." - -```xml - - - - - Example text. - - - - -``` - -The XML namespace declaration ("xmlns") is the standard namespace declaration for WordprocessingML, which allows the file to reference elements and attributes that are part of WordprocessingML. By convention, the namespace is associated with the "w" prefix. - -The root element is document, which specifies the contents of the main document part in a WordprocessingML document. Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to WordprocessingML elements. You'll find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| **WordprocessingML Element** | **Open XML SDK Class** | **Description** | -|:---|:---|:---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | - -For more information about the overall structure of the parts and elements of a WordprocessingML document, see [Structure of a WordprocessingML document (Open XML SDK)](structure-of-a-wordprocessingml-document.md). +[!include[Structure](./includes/word/structure.md)] ## Get the paragraph to style diff --git a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md index 9cfc8829..98f84682 100644 --- a/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md +++ b/docs/how-to-copy-the-contents-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md @@ -90,40 +90,8 @@ long as you use **using**. -------------------------------------------------------------------------------- -## Structure of a WordProcessingML Document -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. The following -code example shows the **WordprocessingML** -markup for a document that contains the text "Example text." -```xml - - - - - Example text. - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these -classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## The Theme Part diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index 3dd124ac..247218e2 100644 --- a/docs/how-to-create-a-package.md +++ b/docs/how-to-create-a-package.md @@ -103,41 +103,7 @@ Once you have created the Word document package, you can add parts to it. To add the main document part you call the [AddMainDocumentPart()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.addmaindocumentpart.aspx) method of the **WordprocessingDocument** class. Having done that, you can set about adding the document structure and text. - -## Structure of a WordprocessingML Document - -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. The **WordprocessingML** markup for the document that the -sample code creates is shown in the following code example. - -```xml - - - - - Create text in body - CreateWordprocessingDocument - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to WordprocessingML -elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements: - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md index 1dd87a13..de61d962 100644 --- a/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-word-processing-document-by-providing-a-file-name.md @@ -95,44 +95,8 @@ you can set about adding the document structure and text. -------------------------------------------------------------------------------- -## Structure of a WordProcessingML Document -The basic document structure of a WordProcessingML document consists of -the **document** and **body** elements, followed by one or more block -level elements such as **p**, which represents -a paragraph. A paragraph contains one or more **r** elements. The **r** -stands for run, which is a region of text with a common set of -properties, such as formatting. A run contains one or more **t** elements. The **t** -element contains a range of text. The WordprocessingML markup for the -document that the sample code creates is shown in the following code -example. - -```xml - - - - - Create text in body - CreateWordprocessingDocument - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to WordprocessingML -elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | - +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## Generating the WordprocessingML Markup diff --git a/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md b/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md index d974a5cd..a02fee0f 100644 --- a/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md +++ b/docs/how-to-get-the-contents-of-a-document-part-from-a-package.md @@ -88,40 +88,8 @@ long as you use using. --------------------------------------------------------------------------------- -## Basic Structure of a WordProcessingML Document -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. The **WordprocessingML** markup for the document that the -sample code creates is shown in the following code example. - -```xml - - - - - Create text in body - CreateWordprocessingDocument - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **WordprocessingML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## Comments Element diff --git a/docs/how-to-open-a-word-processing-document-for-read-only-access.md b/docs/how-to-open-a-word-processing-document-for-read-only-access.md index ea26026e..a2d25112 100644 --- a/docs/how-to-open-a-word-processing-document-for-read-only-access.md +++ b/docs/how-to-open-a-word-processing-document-for-read-only-access.md @@ -167,43 +167,8 @@ code example. ``` --------------------------------------------------------------------------------- -## Basic Document Structure -The basic document structure of a WordProcessingML document consists of -the **document** and **body** elements, followed by one or more block -level elements such as **p**, which represents -a paragraph. A paragraph contains one or more **r** elements. The **r** -stands for run, which is a region of text with a common set of -properties, such as formatting. A run contains one or more **t** elements. The **t** -element contains a range of text. For example, the WordprocessingML -markup for a document that contains only the text "Example text." is -shown in the following code example. - -```xml - - - - - Example text. - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to WordprocessingML -elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -WordprocessingML Element|Open XML SDK Class|Description ---|--|-- -document|[Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) |The root element for the main document part. -body|[Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) |The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. -p|[Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) |A paragraph. -r|[Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) |A run. -t|[Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) |A range of text. +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## Generate the WordprocessingML Markup to Add Text and Attempt to Save diff --git a/docs/how-to-open-a-word-processing-document-from-a-stream.md b/docs/how-to-open-a-word-processing-document-from-a-stream.md index 7e09980f..10402ae4 100644 --- a/docs/how-to-open-a-word-processing-document-from-a-stream.md +++ b/docs/how-to-open-a-word-processing-document-from-a-stream.md @@ -84,42 +84,7 @@ method. WordprocessingDocument.Open(stream, True) ``` -## Structure of a WordProcessingML Document - -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. For example, -the WordprocessingML markup for a document that contains only the text -"Example text." is shown in the following code example. - -```xml - - - - - Example text. - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to WordprocessingML -elements. You can find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body |Body |The container for the block-level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | - +[!include[Structure](./includes/word/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-open-and-add-text-to-a-word-processing-document.md b/docs/how-to-open-and-add-text-to-a-word-processing-document.md index 87015208..da1d5eef 100644 --- a/docs/how-to-open-and-add-text-to-a-word-processing-document.md +++ b/docs/how-to-open-and-add-text-to-a-word-processing-document.md @@ -91,43 +91,8 @@ code example. ``` -------------------------------------------------------------------------------- -## Structure of a WordProcessingML Document -The basic document structure of a WordProcessingML document consists of -the **document** and **body** elements, followed by one or more block -level elements such as **p**, which represents -a paragraph. A paragraph contains one or more **r** elements. The **r** -stands for run, which is a region of text with a common set of -properties, such as formatting. A run contains one or more **t** elements. The **t** -element contains a range of text. The following code example shows the -WordprocessingML markup for a document that contains the text "Example -text." - -```xml - - - - - Example text. - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to WordprocessingML -elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -| WordprocessingML Element | Open XML SDK Class | Description | -|---|---|---| -| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | -| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## Generate the WordprocessingML Markup to Add the Text diff --git a/docs/how-to-remove-a-document-part-from-a-package.md b/docs/how-to-remove-a-document-part-from-a-package.md index ed3c3d09..fb65c3af 100644 --- a/docs/how-to-remove-a-document-part-from-a-package.md +++ b/docs/how-to-remove-a-document-part-from-a-package.md @@ -85,40 +85,8 @@ long as you use **using**. --------------------------------------------------------------------------------- -## Basic Structure of a WordProcessingML Document -The basic document structure of a **WordProcessingML** document consists of the **document** and **body** -elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph -contains one or more **r** elements. The **r** stands for run, which is a region of text with -a common set of properties, such as formatting. A run contains one or -more **t** elements. The **t** element contains a range of text. The **WordprocessingML** markup for the document that the -sample code creates is shown in the following code example. - -```xml - - - - - Create text in body - CreateWordprocessingDocument - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **WordprocessingML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **document**, **body**, **p**, **r**, and **t** elements. - -WordprocessingML Element|Open XML SDK Class|Description ---|--|-- -document|[Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) |The root element for the main document part. -body|[Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) |The container for the block level structures such as paragraphs, tables, annotations, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. -| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | -| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | -| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | +[!include[Structure](./includes/word/structure.md)] -------------------------------------------------------------------------------- ## Settings Element diff --git a/docs/includes/word/structure.md b/docs/includes/word/structure.md new file mode 100644 index 00000000..3c4975d7 --- /dev/null +++ b/docs/includes/word/structure.md @@ -0,0 +1,27 @@ +## Structure of a WordProcessingML Document + +The basic document structure of a **WordProcessingML** document consists of the **document** and **body** elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph contains one or more **r** elements. The **r** stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more **t** elements. The **t** element contains a range of text. The following code example shows the **WordprocessingML** markup for a document that contains the text "Example text." + +```xml + + + + + Example text. + + + + +``` + +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. + +| WordprocessingML Element | Open XML SDK Class | Description | +|---|---|---| +| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | +| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | +| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | +| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | +| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | + +For more information about the overall structure of the parts and elements of a WordprocessingML document, see [Structure of a WordprocessingML document (Open XML SDK)](../../structure-of-a-wordprocessingml-document.md). \ No newline at end of file From 539ee8938e426fdbd71c5f19691867f8afd8b519 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 13:54:26 -0700 Subject: [PATCH 023/193] extract structure --- ...-a-comment-to-a-slide-in-a-presentation.md | 80 +----------------- .../how-to-apply-a-theme-to-a-presentation.md | 77 +---------------- ...ange-of-cells-in-a-spreadsheet-document.md | 43 +--------- ...sheet-document-by-providing-a-file-name.md | 44 +--------- ...w-to-delete-a-slide-from-a-presentation.md | 75 +---------------- ...or-from-all-the-slides-in-a-presentatio.md | 80 +----------------- ...elete-text-from-a-cell-in-a-spreadsheet.md | 52 +----------- ...o-get-a-column-heading-in-a-spreadsheet.md | 57 +------------ ...e-external-hyperlinks-in-a-presentation.md | 78 +---------------- ...l-the-text-in-a-slide-in-a-presentation.md | 83 +------------------ ...he-text-in-all-slides-in-a-presentation.md | 82 +----------------- ...les-of-all-the-slides-in-a-presentation.md | 83 +------------------ ...et-worksheet-information-from-a-package.md | 45 +--------- ...ow-to-insert-a-chart-into-a-spreadsheet.md | 64 +------------- ...-insert-a-new-slide-into-a-presentation.md | 80 +----------------- ...nsert-text-into-a-cell-in-a-spreadsheet.md | 59 +------------ ...agraph-from-one-presentation-to-another.md | 80 +----------------- ...ide-to-a-new-position-in-a-presentation.md | 80 +----------------- ...sentation-document-for-read-only-access.md | 70 +--------------- docs/includes/presentation/structure.md | 77 +++++++++++++++++ docs/includes/spreadsheet/structure.md | 51 ++++++++++++ ...tructure-of-a-wordprocessingml-document.md | 2 - 22 files changed, 147 insertions(+), 1295 deletions(-) create mode 100644 docs/includes/presentation/structure.md create mode 100644 docs/includes/spreadsheet/structure.md diff --git a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md index 4314f864..70471fe5 100644 --- a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md +++ b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md @@ -72,85 +72,7 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *doc*. - -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of a number of -parts, among which is the main part that contains the presentation -definition. The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification -introduces the overall form of a **PresentationML** package. - -> The main part of a **PresentationML** package -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a **slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience*. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience. -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -The following XML code example represents a presentation that contains -two slides denoted by the IDs 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to PresentationML -elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | - +[!include[Structure](./includes/presentation/structure.md)] ## The Structure of the Comment Element diff --git a/docs/how-to-apply-a-theme-to-a-presentation.md b/docs/how-to-apply-a-theme-to-a-presentation.md index f89e8c8d..9456df1f 100644 --- a/docs/how-to-apply-a-theme-to-a-presentation.md +++ b/docs/how-to-apply-a-theme-to-a-presentation.md @@ -85,83 +85,8 @@ object that is created or named in the **using** statement, in this case **theme ----------------------------------------------------------------------------- -## Basic Presentation Document Structure -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a slide list, a slide master -> list, a notes master list, and a handout master list. The slide list -> refers to all of the slides in the presentation; the slide master list -> refers to the entire slide masters used in the presentation; the notes -> master contains information about the formatting of notes pages; and -> the handout master describes how a handout looks. -> -> A handout is a printed set of slides that can be handed out to an -> audience for future reference. -> -> As well as text and graphics, each slide can contain comments and -> notes, can have a layout, and can be part of one or more custom -> presentations. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can contain include the following: animation, audio, video, -> and transitions between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **PresentationML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | Slide | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | SlideLayout | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | SlideMaster | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | NotesMaster | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] ----------------------------------------------------------------------------- ## Structure of the Theme Element diff --git a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md index 98ca0079..f8180093 100644 --- a/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md +++ b/docs/how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md @@ -62,48 +62,7 @@ The code that calls the **Open** method is shown in the following **using** stat The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case **document**. -## Basic Structure of a SpreadsheetML Document - -The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx)** and **[Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx)** elements, which reference the worksheets in the workbook. A separate XML file is created for each worksheet. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is -located in the Workbook.xml file and is shown in the following code example. - -```xml - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as **[SheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx)**. **sheetData** represents the cell table and contains one or more **[Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx)** elements. A **row** contains one or more **[Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx)** elements. Each cell contains a **[CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| SpreadsheetML Element | Open XML SDK Class | Description | -|---|---|---| -| workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | -| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | -| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell. | +[!include[Structure](./includes/spreadsheet/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md index 4dae0344..89db0be3 100644 --- a/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md +++ b/docs/how-to-create-a-spreadsheet-document-by-providing-a-file-name.md @@ -92,50 +92,8 @@ worksheet to the workbook. sheets.Append(sheet) ``` +[!include[Structure](./includes/spreadsheet/structure.md)] --------------------------------------------------------------------------------- -## Basic Structure of a SpreadsheetML Document -The following code example is the **SpreadsheetML** markup for the workbook that the -sample code creates. - -```xml - - - - - -``` - -The basic document structure of a **SpreadsheetML** document consists of the [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx) and [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) elements, which reference the -worksheets in the workbook. A separate XML file is created for each -worksheet. The worksheet XML files contain one or more block level -elements such as [SheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx). **sheetData** represents the cell table and contains -one or more [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) elements. A **row** contains one or more [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) elements. Each cell contains a [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) element that represents the cell -value. The following code example is the SpreadsheetML markup for the -worksheet created by the sample code. - -```xml - - - -``` - -Using the Open XML SDK, you can create document structure and -content by using strongly-typed classes that correspond to SpreadsheetML -elements. You can find these classes in the **DocumentFormat.OpenXml.Spreadsheet** namespace. The -following table lists the class names of the classes that correspond to -the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| SpreadsheetML Element | Open XML SDK Class | Description | -|---|---|---| -| workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block-level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | - - --------------------------------------------------------------------------------- ## Generating the SpreadsheetML Markup To create the basic document structure using the Open XML SDK, instantiate the **Workbook** class, assign it diff --git a/docs/how-to-delete-a-slide-from-a-presentation.md b/docs/how-to-delete-a-slide-from-a-presentation.md index 73896f29..e2c9d45d 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -87,80 +87,7 @@ statement. The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case **presentationDocument**. -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a class="keyword">slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -This following XML code segment represents a presentation that contains -two slides denoted by the IDs 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to PresentationML elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** namespace. The following table lists the class names of the classes that correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] ## Counting the Number of Slides diff --git a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md index 87a7916b..ed86116f 100644 --- a/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md +++ b/docs/how-to-delete-all-the-comments-by-an-author-from-all-the-slides-in-a-presentatio.md @@ -81,85 +81,7 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *doc*. - -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a **slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the ID numbers 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **PresentationML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | - +[!include[Structure](./includes/presentation/structure.md)] ## The Structure of the Comment Element diff --git a/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md b/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md index 72d0d30c..fb57d40c 100644 --- a/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md +++ b/docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md @@ -67,57 +67,7 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *document*. -## Basic structure of a spreadsheetML document - -The basic document structure of a **SpreadsheetML** document consists of the [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx) and [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) elements, which reference the worksheets in the workbook. A separate XML file is created for each worksheet. For example, the **SpreadsheetML** for a [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx) that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. - -```xml - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as -[sheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx) represents the cell table and contains -one or more [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) elements. A **row** contains one or more [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) elements. Each cell contains a [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) element that represents the value -of the cell. For example, the **SpreadsheetML** -for the first worksheet in a workbook, that only has the value 100 in -cell A1, is located in the Sheet1.xml file and is shown in the following -code example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and -content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these -classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The -following table lists the class names of the classes that correspond to -the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| **SpreadsheetML Element** | **Open XML SDK Class** | **Description** | -|:---|:---|:---| -| workbook | DocumentFormat.OpenXML.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXML.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXML.Spreadsheet. Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXML.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | -| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | -| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell. | +[!include[Structure](./includes/spreadsheet/structure.md)] ## How the sample code works diff --git a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md index 88af3177..fa38b3ab 100644 --- a/docs/how-to-get-a-column-heading-in-a-spreadsheet.md +++ b/docs/how-to-get-a-column-heading-in-a-spreadsheet.md @@ -73,62 +73,7 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case **mySpreadsheet**. - -## Basic Structure of a SpreadsheetML Document - -The basic document structure of a **SpreadsheetML** document consists of the [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx) and [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) elements, which reference the -worksheets in the [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx). A separate XML file is created -for each [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx). For example, the **SpreadsheetML** for a workbook that has two -worksheets name MySheet1 and MySheet2 is located in the Workbook.xml -file and is shown in the following code example. - -```xml - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as -[SheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx). **sheetData** represents the cell table and contains -one or more [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) elements. A **row** contains one or more [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) elements. Each cell contains a [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) element that represents the value -of the cell. For example, the SpreadsheetML for the first worksheet in a -workbook, that only has the value 100 in cell A1, is located in the -Sheet1.xml file and is shown in the following code example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and -content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these -classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The -following table lists the class names of the classes that correspond to -the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| SpreadsheetML Element | Open XML SDK Class | Description | -|---|---|---| -| workbook | **Workbook** | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | -| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | -| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell | - +[!include[Structure](./includes/spreadsheet/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md index 1e1cda07..1a073ebb 100644 --- a/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md +++ b/docs/how-to-get-all-the-external-hyperlinks-in-a-presentation.md @@ -78,84 +78,8 @@ object that is created or named in the **using** statement, in this case **docum -------------------------------------------------------------------------------- -## Basic Presentation Document Structure -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a class="keyword">slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **PresentationML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] -------------------------------------------------------------------------------- ## Structure of the Hyperlink Element diff --git a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md index b11ff44b..ef3a4478 100644 --- a/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md +++ b/docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md @@ -80,90 +80,9 @@ object that is created or named in the **using** statement, in this case **prese -------------------------------------------------------------------------------- -## Basic Presentation Document Structure -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A PresentationML package's main part starts with a presentation root -> element. That element contains a presentation, which, in turn, refers -> to a **slide** list, a **slide -> master** list, a **notes master** list, and -> a **handout master** list. The slide list refers -> to all of the slides in the presentation; the slide master list refers -> to the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A **handout** is a printed set of slides that -> can be provided to an **audience** for future -> reference. -> -> As well as text and graphics, each slide can contain class="term">comments** and **notes**, can -> have a **layout**, and can be part of one or -> more **custom presentations**. (A comment is an -> annotation intended for the person maintaining the presentation slide -> deck. A note is a reminder or piece of text intended for the presenter -> or the audience.) -> -> Other features that a PresentationML document can include the -> following: **animation**, class="term">audio, **video, and class="term">transitions** between slides. -> -> A PresentationML document is not stored as one large body in a single -> part. Instead, the elements that implement certain groupings of -> functionality are stored in separate parts. For example, all comments -> in a document are stored in one comment part while each slide has its -> own part. -> -> © ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **PresentationML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | Slide | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | SlideLayout | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | SlideMaster | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | NotesMaster | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] - --------------------------------------------------------------------------------- ## How the Sample Code Works The sample code consists of three overloads of the **GetAllTextInSlide** method. In the following segment, the first overloaded method opens the source presentation that diff --git a/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md b/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md index cf05b97a..a3bde9e7 100644 --- a/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md +++ b/docs/how-to-get-all-the-text-in-all-slides-in-a-presentation.md @@ -84,89 +84,9 @@ object that is created or named in the **using** statement, in this case **prese -------------------------------------------------------------------------------- -## Basic Presentation Document Structure -The basic document structure of a **PresentationML** document consists of a number of -parts, among which is the main part that contains the presentation -definition. The following text from the [ISO/IEC -29500](https://www.iso.org/standard/71691.html) specification -introduces the overall form of a **PresentationML** package. - -A **PresentationML** package's main part starts -with a presentation root element. That element contains a presentation, -which, in turn, refers to a **slide** list, a -**slide master** list, a **notes -master** list, and a **handout master** list. -The slide list refers to all of the slides in the presentation; the -slide master list refers to the entire slide masters used in the -presentation; the notes master contains information about the formatting -of notes pages; and the handout master describes how a handout looks. - -A **handout** is a printed set of slides that can -be provided to an **audience** for future -reference. - -As well as text and graphics, each slide can contain **comments** and **notes**, can -have a **layout**, and can be part of one or more -**custom presentations**. (A comment is an -annotation intended for the person maintaining the presentation slide -deck. A note is a reminder or piece of text intended for the presenter -or the audience.) - -Other features that a PresentationML document can contain include the -following: **animation**, **audio**, **video**, and **transitions** between slides. - -A PresentationML document is not stored as one large body in a single -part. Instead, the elements that implement certain groupings of -functionality are stored in separate parts. For example, all comments in -a document are stored in one comment part while each slide has its own -part. - -© ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to **PresentationML** elements. You can find these -classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] - --------------------------------------------------------------------------------- ## How the Sample Code Works The sample code starts by counting the number of slides in the presentation. It does that by using two overloads of the method **CountSlides**. The first overload uses a string diff --git a/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md b/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md index 76a5655d..936bcede 100644 --- a/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md +++ b/docs/how-to-get-the-titles-of-all-the-slides-in-a-presentation.md @@ -81,89 +81,8 @@ when the closing brace is reached. The block that follows the **using** statemen object that is created or named in the **using** statement, in this case *presentationDocument*. +[!include[Structure](./includes/presentation/structure.md)] ---------------------------------------------------------------------------------- -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a class="keyword">slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -This following XML code segment represents a presentation that contains -two slides denoted by the Id's 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to PresentationML -elements. You can find these classes in the **[DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | - - --------------------------------------------------------------------------------- ## How the Sample Code Works The sample code consists of two overloads of the method **GetSlideTitles**. In the first overloaded method, diff --git a/docs/how-to-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index 84d9773f..12e01bb8 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -55,50 +55,7 @@ The following code example calls the **Open** method to open the file specified The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case **mySpreadsheet**. -## Basic structure of a SpreadsheetML - -The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](/dotnet/api/documentformat.openxml.spreadsheet.sheets)** and **[Sheet](/dotnet/api/documentformat.openxml.spreadsheet.sheet)** elements, which reference the -worksheets in the **[Workbook](/dotnet/api/documentformat.openxml.spreadsheet.workbook)**. A separate XML file is created -for each **[Worksheet](/dotnet/api/documentformat.openxml.spreadsheet.worksheet)**. For example, the **SpreadsheetML** for a workbook that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. - -```xml - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](/dotnet/api/documentformat.openxml.spreadsheet.sheetdata)** represents the cell table and contains one or more **[Row](/dotnet/api/documentformat.openxml.spreadsheet.row )** elements. A **row** contains one or more **[Cell](/dotnet/api/documentformat.openxml.spreadsheet.cell)** elements. Each cell contains a **[CellValue](/dotnet/api/documentformat.openxml.spreadsheet.cellvalue)** element that represents the value of the cell. For example, the SpreadsheetML for the first worksheet in a workbook, that only has the value 100 in cell A1, is located in the Sheet1.xml file and is shown in the following code example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these -classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following table lists the class names of the classes that correspond to the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| SpreadsheetML Element | Open XML SDK Class | Description | -|---|---|---| -| workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | -| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | -| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell. | +[!include[Structure](./includes/spreadsheet/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-insert-a-chart-into-a-spreadsheet.md b/docs/how-to-insert-a-chart-into-a-spreadsheet.md index 8144172b..30c767da 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -78,69 +78,7 @@ The code that calls the **Open** method is shown in the following **using** stat The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *document*. -## Basic structure of a SpreadsheetML document - -The basic document structure of a **SpreadsheetML** document consists of the \<**sheets**\> and \<**sheet**\> elements, which reference the worksheets -in the [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx). A separate XML file is created -for each [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx). For example, the **SpreadsheetML** for a workbook that has three -worksheets named MySheet1, MySheet2, and Chart1 is located in the -Workbook.xml file and is shown in the following code example. - -```xml - - - - - - - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as -\<**sheetData**\>, which represents the cell -table and contains one or more row (\<**row**\>) elements. A row element contains one or -more cell elements (\<**c**\>). Each cell -element contains a cell value element (\<**v**\>) that represents the value of the cell. For -example, the **SpreadsheetML** for the first -worksheet in a workbook, that only has the value 100 in cell A1, is -located in the Sheet1.xml file and is shown in the following code -example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and -content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these -classes in the **DocumentFormat.OpenXml.Spreadsheet** namespace. The -following table lists the class names of the classes that correspond to -the **workbook**, [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx), [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx), **worksheet**, and [SheetData<](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx) elements. - -| **SpreadsheetML Element** | **Open XML SDK Class** | **Description** | -|:---|:---|:---| -| workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) | A row in the cell table. | -| c | [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) | A cell in a row. | -| v | [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) | The value of a cell. | +[!include[Structure](./includes/spreadsheet/structure.md)] ## Row element diff --git a/docs/how-to-insert-a-new-slide-into-a-presentation.md b/docs/how-to-insert-a-new-slide-into-a-presentation.md index 706130dc..0102142e 100644 --- a/docs/how-to-insert-a-new-slide-into-a-presentation.md +++ b/docs/how-to-insert-a-new-slide-into-a-presentation.md @@ -71,85 +71,7 @@ when the closing brace is reached. The block that follows the **using** statemen object that is created or named in the **using** statement, in this case *presentationDocument*. - -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of the main part -that contains the presentation definition. The following text from the -[ISO/IEC 29500](https://www.iso.org/standard/71691.html) -specification introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a **slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -The following XML code segment represents a presentation that contains -two slides denoted by the Id's 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to PresentationML -elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements: - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | - +[!include[Structure](./includes/presentation/structure.md)] ## How the Sample Code Works diff --git a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md index 4298a1ca..24d9ebd3 100644 --- a/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md +++ b/docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md @@ -81,65 +81,8 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *spreadSheet*. +[!include[Structure](./includes/spreadsheet/structure.md)] --------------------------------------------------------------------------------- -## The Basic Structure of a SpreadsheetML Document -The basic document structure of a **SpreadsheetML** document consists of the [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx) and [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) elements, which reference the -worksheets in the workbook. A separate XML file is created for each -[Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.aspx). For example, the **SpreadsheetML** for a [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx) that has two worksheets name -MySheet1 and MySheet2 is located in the Workbook.xml file and is shown -in the following code example. - -```xml - - - - - - - -``` - -The worksheet XML files contain one or more block level elements such as -[SheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx). **sheetData** represents the cell table and contains -one or more [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) elements. A **row** contains one or more [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) elements. Each cell contains a [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) element that represents the value -of the cell. For example, the SpreadsheetML for the first worksheet in a -workbook, that only has the value 100 in cell A1, is located in the -Sheet1.xml file and is shown in the following code example. - -```xml - - - - - - 100 - - - - -``` - -Using the Open XML SDK, you can create document structure and -content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these -classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The -following table lists the class names of the classes that correspond to -the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. - -| SpreadsheetML Element | Open XML SDK Class | Description | -|---|---|---| -| workbook | DocumentFormat.OpenXml.Spreadsheet.Workbook | The root element for the main document part. | -| sheets | DocumentFormat.OpenXml.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | -| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | -| worksheet | DocumentFormat.OpenXml.Spreadsheet.Worksheet | A sheet definition file that contains the sheet data. | -| sheetData | DocumentFormat.OpenXml.Spreadsheet.SheetData | The cell table, grouped together by rows. | -| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | -| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | -| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell. | - - - --------------------------------------------------------------------------------- ## How the Sample Code Works After opening the **SpreadsheetDocument** document for editing, the code inserts a blank [Worksheet](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.worksheetpart.worksheet.aspx) object into a [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) document package. Then, diff --git a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md index d66c9b5a..fbdf6c55 100644 --- a/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md +++ b/docs/how-to-move-a-paragraph-from-one-presentation-to-another.md @@ -71,85 +71,7 @@ used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *doc*. - -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of a number of -parts, among which is the main part that contains the presentation -definition. The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification -introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a **slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -This following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to PresentationML -elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. - -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | - +[!include[Structure](./includes/presentation/structure.md)] ## Structure of the Shape Text Body diff --git a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md index 3797ae4f..792eeadc 100644 --- a/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md +++ b/docs/how-to-move-a-slide-to-a-new-position-in-a-presentation.md @@ -78,87 +78,9 @@ object that is created or named in the **using** statement, in this case **prese -------------------------------------------------------------------------------- -## Basic Presentation Document Structure -The basic document structure of a **PresentationML** document consists of a number of -parts, among which is the main part that contains the presentation -definition. The following text from the [ISO/IEC -29500](https://www.iso.org/standard/71691.html) specification -introduces the overall form of a **PresentationML** package. - -> A **PresentationML** package's main part -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a class="keyword">slide** list, a *slide master* list, a *notes -> master* list, and a *handout master* list. The slide list refers to -> all of the slides in the presentation; the slide master list refers to -> the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A *handout* is a printed set of slides that can be provided to an -> *audience* for future reference. -> -> As well as text and graphics, each slide can contain *comments* and -> *notes*, can have a *layout*, and can be part of one or more *custom -> presentations*. (A comment is an annotation intended for the person -> maintaining the presentation slide deck. A note is a reminder or piece -> of text intended for the presenter or the audience.) -> -> Other features that a **PresentationML** -> document can include the following: *animation*, *audio*, *video*, and -> *transitions* between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -This following XML code segment represents a presentation that contains -two slides denoted by the ID 267 and 256. - -```xml - - - - - - - - - - - - - - - - - -``` - -Using the Open XML SDK, you can create document structure and -content using strongly-typed classes that correspond to PresentationML -elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) -namespace. The following table lists the class names of the classes that -correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. -| PresentationML Element | Open XML SDK Class | Description | -|---|---|---| -| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | -| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | -| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | -| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | +[!include[Structure](./includes/presentation/structure.md)] - --------------------------------------------------------------------------------- ## How the Sample Code Works In order to move a specific slide in a presentation file to a new position, you need to know first the number of slides in the diff --git a/docs/how-to-open-a-presentation-document-for-read-only-access.md b/docs/how-to-open-a-presentation-document-for-read-only-access.md index b8e9ee60..47661c3b 100644 --- a/docs/how-to-open-a-presentation-document-for-read-only-access.md +++ b/docs/how-to-open-a-presentation-document-for-read-only-access.md @@ -147,75 +147,7 @@ code segment performs this operation. End Using ``` -## Basic Presentation Document Structure - -The basic document structure of a **PresentationML** document consists of a number of -parts, among which the main part is that contains the presentation -definition. The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification -introduces the overall form of a **PresentationML** package. - -> The main part of a **PresentationML** package -> starts with a presentation root element. That element contains a -> presentation, which, in turn, refers to a **slide** list, a **slide -> master** list, a **notes master** list, and -> a **handout master** list. The slide list refers -> to all of the slides in the presentation; the slide master list refers -> to the entire slide masters used in the presentation; the notes master -> contains information about the formatting of notes pages; and the -> handout master describes how a handout looks. -> -> A **handout** is a printed set of slides that -> can be provided to an **audience** for future -> reference. -> -> As well as text and graphics, each slide can contain **comments** and **notes**, can -> have a **layout**, and can be part of one or -> more **custom presentations**. A comment is an -> annotation intended for the person maintaining the presentation slide -> deck. A note is a reminder or piece of text intended for the presenter -> or the audience. -> -> Other features that a **PresentationML** -> document can include the following: **animation**, **audio**, **video**, and **transitions** -> between slides. -> -> A **PresentationML** document is not stored -> as one large body in a single part. Instead, the elements that -> implement certain groupings of functionality are stored in separate -> parts. For example, all comments in a document are stored in one -> comment part while each slide has its own part. -> -> © ISO/IEC29500: 2008. - -This following XML code segment represents a presentation that contains -two slides denoted by the IDs 267 and 256. The **ID** property specifies the slide identifier that -contains a unique value throughout the presentation. The possible values -for this attribute are from 256 through 2147483647. - -```xml - - - - - - - - - - - - - - - - - -``` +[!include[Structure](./includes/presentation/structure.md)] ## How the Sample Code Works diff --git a/docs/includes/presentation/structure.md b/docs/includes/presentation/structure.md new file mode 100644 index 00000000..a1d15f8a --- /dev/null +++ b/docs/includes/presentation/structure.md @@ -0,0 +1,77 @@ +## Basic Presentation Document Structure + +The basic document structure of a **PresentationML** document consists of a number of +parts, among which is the main part that contains the presentation +definition. The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification +introduces the overall form of a **PresentationML** package. + +> The main part of a **PresentationML** package +> starts with a presentation root element. That element contains a +> presentation, which, in turn, refers to a **slide** list, a *slide master* list, a *notes +> master* list, and a *handout master* list. The slide list refers to +> all of the slides in the presentation; the slide master list refers to +> the entire slide masters used in the presentation; the notes master +> contains information about the formatting of notes pages; and the +> handout master describes how a handout looks. +> +> A *handout* is a printed set of slides that can be provided to an +> *audience*. +> +> As well as text and graphics, each slide can contain *comments* and +> *notes*, can have a *layout*, and can be part of one or more *custom +> presentations*. A comment is an annotation intended for the person +> maintaining the presentation slide deck. A note is a reminder or piece +> of text intended for the presenter or the audience. +> +> Other features that a **PresentationML** +> document can include the following: *animation*, *audio*, *video*, and +> *transitions* between slides. +> +> A **PresentationML** document is not stored +> as one large body in a single part. Instead, the elements that +> implement certain groupings of functionality are stored in separate +> parts. For example, all comments in a document are stored in one +> comment part while each slide has its own part. +> +> © ISO/IEC29500: 2008. + +The following XML code example represents a presentation that contains +two slides denoted by the IDs 267 and 256. + +```xml + + + + + + + + + + + + + + + + + +``` + +Using the Open XML SDK, you can create document structure and +content using strongly-typed classes that correspond to PresentationML +elements. You can find these classes in the [DocumentFormat.OpenXml.Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) +namespace. The following table lists the class names of the classes that +correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** elements. + +| PresentationML Element | Open XML SDK Class | Description | +|---|---|---| +| sld | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | Presentation Slide. It is the root element of SlidePart. | +| sldLayout | [SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | Slide Layout. It is the root element of SlideLayoutPart. | +| sldMaster | [SlideMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | Slide Master. It is the root element of SlideMasterPart. | +| notesMaster | [NotesMaster](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | Notes Master (or handoutMaster). It is the root element of NotesMasterPart. | \ No newline at end of file diff --git a/docs/includes/spreadsheet/structure.md b/docs/includes/spreadsheet/structure.md new file mode 100644 index 00000000..3cdbdc31 --- /dev/null +++ b/docs/includes/spreadsheet/structure.md @@ -0,0 +1,51 @@ +## Basic structure of a spreadsheetML document + +The basic document structure of a **SpreadsheetML** document consists of the [Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx) and [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) elements, which reference the worksheets in the workbook. A separate XML file is created for each worksheet. For example, the **SpreadsheetML** for a [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx) that has two worksheets name MySheet1 and MySheet2 is located in the Workbook.xml file and is shown in the following code example. + +```xml + + + + + + + +``` + +The worksheet XML files contain one or more block level elements such as +[sheetData](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheetdata.aspx) represents the cell table and contains +one or more [Row](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.aspx) elements. A **row** contains one or more [Cell](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cell.aspx) elements. Each cell contains a [CellValue](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.cellvalue.aspx) element that represents the value +of the cell. For example, the **SpreadsheetML** +for the first worksheet in a workbook, that only has the value 100 in +cell A1, is located in the Sheet1.xml file and is shown in the following +code example. + +```xml + + + + + + 100 + + + + +``` + +Using the Open XML SDK, you can create document structure and +content that uses strongly-typed classes that correspond to **SpreadsheetML** elements. You can find these +classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The +following table lists the class names of the classes that correspond to +the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elements. + +| **SpreadsheetML Element** | **Open XML SDK Class** | **Description** | +|:---|:---|:---| +| workbook | DocumentFormat.OpenXML.Spreadsheet.Workbook | The root element for the main document part. | +| sheets | DocumentFormat.OpenXML.Spreadsheet.Sheets | The container for the block level structures such as sheet, fileVersion, and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | +| sheet | DocumentFormat.OpenXml.Spreadsheet.Sheet | A sheet that points to a sheet definition file. | +| worksheet | DocumentFormat.OpenXML.Spreadsheet. Worksheet | A sheet definition file that contains the sheet data. | +| sheetData | DocumentFormat.OpenXML.Spreadsheet.SheetData | The cell table, grouped together by rows. | +| row | DocumentFormat.OpenXml.Spreadsheet.Row | A row in the cell table. | +| c | DocumentFormat.OpenXml.Spreadsheet.Cell | A cell in a row. | +| v | DocumentFormat.OpenXml.Spreadsheet.CellValue | The value of a cell. | diff --git a/docs/structure-of-a-wordprocessingml-document.md b/docs/structure-of-a-wordprocessingml-document.md index 7ae849af..dc343a21 100644 --- a/docs/structure-of-a-wordprocessingml-document.md +++ b/docs/structure-of-a-wordprocessingml-document.md @@ -26,8 +26,6 @@ with a common set of properties, such as formatting. A run contains one or more \<**t**\> elements. The \<**t**\> element contains a range of text. - - ## Important WordprocessingML Parts The Open XML SDK API provides strongly-typed classes in the From ebf3fe136fdab3eee55c89fed030ee6812e0cf3d Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 14:49:14 -0700 Subject: [PATCH 024/193] Add samples projects to a solution This starts the process of refactoring the samples to not be inline. Instead, this change creates a solution that the samples are added to in order to validate they are correct (and enable refactoring much easier in the future). This adds a script in the samples directory that helps scaffold out a new sample project. --- .github/workflows/samples.yml | 21 + ...revisions-in-a-word-processing-document.md | 361 +---------- ...-a-comment-to-a-slide-in-a-presentation.md | 601 +----------------- samples/Directory.Build.props | 8 + samples/Directory.Build.targets | 5 + samples/README.md | 18 + samples/add-sample.ps1 | 21 + .../presentation/add_comment/cs/Program.cs | 140 ++++ .../add_comment/cs/add_comment_cs.csproj | 1 + .../presentation/add_comment/vb/Program.vb | 148 +++++ .../add_comment/vb/add_comment_vb.vbproj | 1 + samples/samples.sln | 53 ++ .../word/accept_all_revisions/cs/Program.cs | 71 +++ .../cs/accept_all_revisions_cs.csproj | 2 + .../word/accept_all_revisions/vb/Program.vb | 66 ++ .../vb/accept_all_revisions_vb.vbproj | 2 + 16 files changed, 596 insertions(+), 923 deletions(-) create mode 100644 .github/workflows/samples.yml create mode 100644 samples/Directory.Build.props create mode 100644 samples/Directory.Build.targets create mode 100644 samples/README.md create mode 100644 samples/add-sample.ps1 create mode 100644 samples/presentation/add_comment/cs/Program.cs create mode 100644 samples/presentation/add_comment/cs/add_comment_cs.csproj create mode 100644 samples/presentation/add_comment/vb/Program.vb create mode 100644 samples/presentation/add_comment/vb/add_comment_vb.vbproj create mode 100644 samples/samples.sln create mode 100644 samples/word/accept_all_revisions/cs/Program.cs create mode 100644 samples/word/accept_all_revisions/cs/accept_all_revisions_cs.csproj create mode 100644 samples/word/accept_all_revisions/vb/Program.vb create mode 100644 samples/word/accept_all_revisions/vb/accept_all_revisions_vb.vbproj diff --git a/.github/workflows/samples.yml b/.github/workflows/samples.yml new file mode 100644 index 00000000..62a02fb7 --- /dev/null +++ b/.github/workflows/samples.yml @@ -0,0 +1,21 @@ +name: Samples compilation + +on: + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Setup .NET + uses: actions/setup-dotnet@v3 + with: + dotnet-version: 8.x + - name: Build + run: dotnet build samples/samples.sln /p:TreatWarningsAsErrors=true diff --git a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md index 666b0932..9c5e7e2f 100644 --- a/docs/how-to-accept-all-revisions-in-a-word-processing-document.md +++ b/docs/how-to-accept-all-revisions-in-a-word-processing-document.md @@ -18,44 +18,31 @@ ms.localizationpriority: high This topic shows how to use the Open XML SDK for Office to accept all revisions in a word processing document programmatically. -The following assembly directives are required to compile the code in this topic. - -```csharp - using DocumentFormat.OpenXml; - using DocumentFormat.OpenXml.Packaging; - using DocumentFormat.OpenXml.Wordprocessing; - using System.Linq; - using System.Collections.Generic; -``` - -```vb - Imports DocumentFormat.OpenXml - Imports DocumentFormat.OpenXml.Packaging - Imports DocumentFormat.OpenXml.Wordprocessing - Imports System.Linq - Imports System.Collections.Generic -``` - -## Open the Existing Document for Editing - -To open an existing document, you can instantiate the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class as shown in the following **using** statement. To do so, you open the word processing file with the specified *fileName* by using the [Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562234.aspx) method, with the Boolean parameter set to **true** in order to enable editing the document. - -```csharp - using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(fileName, true)) - { - // Insert other code here. - } -``` - -```vb - Using wdDoc As WordprocessingDocument = WordprocessingDocument.Open(fileName, True) - ' Insert other code here. - End Using -``` +[!include[Structure](./includes/word/structure.md)] -The **using** statement provides a recommended alternative to the typical .Open, .Save, .Close sequence. It ensures that the **Dispose** method (internal method used by the Open XML SDK to clean up resources) is automatically called when the closing brace is reached. The block that follows the **using** statement establishes a scope for the object that is created or named in the **using** statement, in this case *wdDoc*. Because the **WordprocessingDocument** class in the Open XML SDK automatically saves and closes the object as part of its **System.IDisposable** implementation, and because **Dispose** is automatically called when you exit the block, you do not have to explicitly call **Save** and **Close** as long as you use **using**. +The basic document structure of a **WordProcessingML** document consists of the **document** and **body** elements, followed by one or more block level elements such as **p**, which represents a paragraph. A paragraph contains one or more **r** elements. The **r** stands for run, which is a region of text with a common set of properties, such as formatting. A run contains one or more **t** elements. The **t** element contains a range of text. The following code example shows the **WordprocessingML** markup for a document that contains the text "Example text." -[!include[Structure](./includes/word/structure.md)] +```xml + + + + + Example text. + + + + +``` + +Using the Open XML SDK, you can create document structure and content using strongly-typed classes that correspond to **WordprocessingML** elements. You will find these classes in the [DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.aspx) namespace. The following table lists the class names of the classes that correspond to the **document**, **body**, **p**, **r**, and **t** elements. + +| WordprocessingML Element | Open XML SDK Class | Description | +|---|---|---| +| document | [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.document.aspx) | The root element for the main document part. | +| body | [Body](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.body.aspx) | The container for the block level structures such as paragraphs, tables, annotations and others specified in the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification. | +| p | [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) | A paragraph. | +| r | [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) | A run. | +| t | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) | A range of text. | ## ParagraphPropertiesChange Element @@ -175,310 +162,24 @@ a revision. © ISO/IEC29500: 2008. -## How the Sample Code Works - -After you have opened the document in the using statement, you -instantiate the **Body** class, and then handle -the formatting changes by creating the *changes* **List**, and removing each change (the **w:pPrChange** element) from the **List**, which is the same as accepting changes. - -```csharp - Body body = wdDoc.MainDocumentPart.Document.Body; - - // Handle the formatting changes. - List changes = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - foreach (OpenXmlElement change in changes) - { - change.Remove(); - } -``` - -```vb - Dim body As Body = wdDoc.MainDocumentPart.Document.Body - - ' Handle the formatting changes. - Dim changes As List(Of OpenXmlElement) = _ - body.Descendants(Of ParagraphPropertiesChange)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList() - - For Each change In changes - change.Remove() - Next -``` - -You then handle the deletions by constructing the *deletions* **List**, and removing each deletion element (**w:del**) from the **List**, which is similar to the process of -accepting deletion changes. - -```csharp - // Handle the deletions. - List deletions = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - deletions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - deletions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - foreach (OpenXmlElement deletion in deletions) - { - deletion.Remove(); - } -``` - -```vb - ' Handle the deletions. - Dim deletions As List(Of OpenXmlElement) = _ - body.Descendants(Of Deleted)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList() - - deletions.AddRange(body.Descendants(Of DeletedRun)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList()) - - deletions.AddRange(body.Descendants(Of DeletedMathControl)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList()) - - For Each deletion In deletions - deletion.Remove() - Next -``` - -Finally, you handle the insertions by constructing the *insertions* **List** and inserting the new text by removing the -insertion element (**w:ins**), which is the -same as accepting the inserted text. - -```csharp - // Handle the insertions. - List insertions = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - insertions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - insertions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - Run lastInsertedRun = null; - foreach (OpenXmlElement insertion in insertions) - { - // Found new content. - // Promote them to the same level as node, and then delete the node. - foreach (var run in insertion.Elements()) - { - if (run == insertion.FirstChild) - { - lastInsertedRun = insertion.InsertAfterSelf(new Run(run.OuterXml)); - } - else - { - lastInsertedRun = lastInsertedRun.Insertion.InsertAfterSelf(new Run(run.OuterXml)); - } - } - insertion.RemoveAttribute("rsidR", - "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); - insertion.RemoveAttribute("rsidRPr", - "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); - insertion.Remove(); - } -``` - -```vb - ' Handle the insertions. - Dim insertions As List(Of OpenXmlElement) = _ - body.Descendants(Of Inserted)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList() - - insertions.AddRange(body.Descendants(Of InsertedRun)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList()) - - insertions.AddRange(body.Descendants(Of InsertedMathControl)() _ - .Where(Function(c) c.Author.Value = authorName).Cast _ - (Of OpenXmlElement)().ToList()) - - Dim lastInsertedRun As Run = Nothing - For Each insertion In insertions - ' Found new content. Promote them to the same level as node, and then - ' delete the node. - For Each run In insertion.Elements(Of Run)() - If run Is insertion.FirstChild Then - lastInsertedRun = insertion.InsertAfterSelf(New Run(run.OuterXml)) - Else - lastInsertedRun = lastInsertedRun.Insertion.InsertAfterSelf(New Run(run.OuterXml)) - End If - Next - insertion.RemoveAttribute("rsidR", _ - "https://schemas.openxmlformats.org/wordprocessingml/2006/main") - insertion.RemoveAttribute("rsidRPr", _ - "https://schemas.openxmlformats.org/wordprocessingml/2006/main") - insertion.Remove() - Next -``` - ## Sample Code The following code example shows how to accept the entire revisions in a -word processing document. To run the program, you can call the method -**AcceptRevisions** to accept revisions in the -file "word1.docx" as in the following example. - -```csharp - string docName = @"C:\Users\Public\Documents\word1.docx"; - string authorName = "Katie Jordan"; - AcceptRevisions(docName, authorName); -``` +word processing document. To run the program, you can pass in the file path +and the author name: -```vb - Dim docName As String = "C:\Users\Public\Documents\word1.docx" - Dim authorName As String = "Katie Jordan" - AcceptRevisions(docName, authorName) +```dotnetcli +dotnet run -- [filePath] [authorName] ``` After you have run the program, open the word processing file to make sure that all revision marks have been accepted. -The following is the complete sample code in both C\# and Visual Basic. - -```csharp - public static void AcceptRevisions(string fileName, string authorName) - { - // Given a document name and an author name, accept revisions. - using (WordprocessingDocument wdDoc = - WordprocessingDocument.Open(fileName, true)) - { - Body body = wdDoc.MainDocumentPart.Document.Body; - - // Handle the formatting changes. - List changes = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - foreach (OpenXmlElement change in changes) - { - change.Remove(); - } - - // Handle the deletions. - List deletions = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - deletions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - deletions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - foreach (OpenXmlElement deletion in deletions) - { - deletion.Remove(); - } - - // Handle the insertions. - List insertions = - body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList(); - - insertions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - insertions.AddRange(body.Descendants() - .Where(c => c.Author.Value == authorName).Cast().ToList()); - - foreach (OpenXmlElement insertion in insertions) - { - // Found new content. - // Promote them to the same level as node, and then delete the node. - foreach (var run in insertion.Elements()) - { - if (run == insertion.FirstChild) - { - insertion.InsertAfterSelf(new Run(run.OuterXml)); - } - else - { - insertion.NextSibling().InsertAfterSelf(new Run(run.OuterXml)); - } - } - insertion.RemoveAttribute("rsidR", - "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); - insertion.RemoveAttribute("rsidRPr", - "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); - insertion.Remove(); - } - } - } -``` +### [CSharp](#tab/cs) +[!code-csharp[](../samples/word/accept_all_revisions/cs/Program.cs)] -```vb - Public Sub AcceptRevisions(ByVal fileName As String, ByVal authorName As String) - ' Given a document name and an author name, accept revisions. - Using wdDoc As WordprocessingDocument = WordprocessingDocument.Open(fileName, True) - Dim body As Body = wdDoc.MainDocumentPart.Document.Body - - ' Handle the formatting changes. - Dim changes As List(Of OpenXmlElement) = _ - body.Descendants(Of ParagraphPropertiesChange)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() - - For Each change In changes - change.Remove() - Next - - ' Handle the deletions. - Dim deletions As List(Of OpenXmlElement) = _ - body.Descendants(Of Deleted)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() - - deletions.AddRange(body.Descendants(Of DeletedRun)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) - - deletions.AddRange(body.Descendants(Of DeletedMathControl)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) - - For Each deletion In deletions - deletion.Remove() - Next - - ' Handle the insertions. - Dim insertions As List(Of OpenXmlElement) = _ - body.Descendants(Of Inserted)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() - - insertions.AddRange(body.Descendants(Of InsertedRun)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) - - insertions.AddRange(body.Descendants(Of InsertedMathControl)() _ - .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) - - For Each insertion In insertions - ' Found new content. Promote them to the same level as node, and then - ' delete the node. - For Each run In insertion.Elements(Of Run)() - If run Is insertion.FirstChild Then - insertion.InsertAfterSelf(New Run(run.OuterXml)) - Else - insertion.NextSibling().InsertAfterSelf(New Run(run.OuterXml)) - End If - Next - insertion.RemoveAttribute("rsidR", _ - "https://schemas.openxmlformats.org/wordprocessingml/2006/main") - insertion.RemoveAttribute("rsidRPr", _ - "https://schemas.openxmlformats.org/wordprocessingml/2006/main") - insertion.Remove() - Next - End Using - End Sub -``` +### [Visual Basic](#tab/vb) +[!code-vb[](../samples/word/accept_all_revisions/vb/Program.vb)] ## See also diff --git a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md index 70471fe5..84b6f8ad 100644 --- a/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md +++ b/docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md @@ -21,56 +21,6 @@ This topic shows how to use the classes in the Open XML SDK for Office to add a comment to the first slide in a presentation programmatically. -The following assembly directives are required to compile the code in -this topic. - -```csharp - using System; - using System.Linq; - using DocumentFormat.OpenXml.Presentation; - using DocumentFormat.OpenXml.Packaging; -``` - -```vb - Imports System - Imports System.Linq - Imports DocumentFormat.OpenXml.Presentation - Imports DocumentFormat.OpenXml.Packaging -``` - -## Getting a PresentationDocument Object - -In the Open XML SDK, the [PresentationDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.aspx) class represents a -presentation document package. To work with a presentation document, -first create an instance of the **PresentationDocument** class, and then work with -that instance. To create the class instance from the document call the -[Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562287.aspx) method that uses a -file path, and a Boolean value as the second parameter to specify -whether a document is editable. To open a document for read/write, -specify the value **true** for this parameter -as shown in the following **using** statement. -In this code, the *file* parameter is a string that represents the path -for the file from which you want to open the document. - -```csharp - using (PresentationDocument doc = PresentationDocument.Open(file, true)) - { - // Insert other code here. - } -``` - -```vb - Using doc As PresentationDocument = PresentationDocument.Open(file, True) - ' Insert other code here. - End Using -``` - -The **using** statement provides a recommended -alternative to the typical .Open, .Save, .Close sequence. It ensures -that the **Dispose** method (internal method -used by the Open XML SDK to clean up resources) is automatically called -when the closing brace is reached. The block that follows the **using** statement establishes a scope for the -object that is created or named in the **using** statement, in this case *doc*. [!include[Structure](./includes/presentation/structure.md)] @@ -125,558 +75,23 @@ optional attributes. ``` -## How the Sample Code Works - -The sample code opens the presentation document in the **using** statement. Then it instantiates the **CommentAuthorsPart**, and verifies that there is an -existing comment authors part. If there is not, it adds one. - -```csharp - // Declare a CommentAuthorsPart object. - CommentAuthorsPart authorsPart; - - // Verify that there is an existing comment authors part. - if (doc.PresentationPart.CommentAuthorsPart == null) - { - // If not, add a new one. - authorsPart = doc.PresentationPart.AddNewPart(); - } - else - { - authorsPart = doc.PresentationPart.CommentAuthorsPart; - } -``` - -```vb - ' Declare a CommentAuthorsPart object. - Dim authorsPart As CommentAuthorsPart - - ' Verify that there is an existing comment authors part. - If doc.PresentationPart.CommentAuthorsPart Is Nothing Then - ' If not, add a new one. - authorsPart = doc.PresentationPart.AddNewPart(Of CommentAuthorsPart)() - Else - authorsPart = doc.PresentationPart.CommentAuthorsPart - End If -``` - -The code determines whether there is an existing comment author list in -the comment-authors part; if not, it adds one. It also verifies that the -author that is passed in is on the list of existing comment authors; if -so, it assigns the existing author ID. If not, it adds a new author to -the list of comment authors and assigns an author ID and the parameter -values. - -```csharp - // Verify that there is a comment author list in the comment authors part. - if (authorsPart.CommentAuthorList == null) - { - // If not, add a new one. - authorsPart.CommentAuthorList = new CommentAuthorList(); - } - - // Declare a new author ID. - uint authorId = 0; - CommentAuthor author = null; - - // If there are existing child elements in the comment authors list... - if (authorsPart.CommentAuthorList.HasChildren) - { - // Verify that the author passed in is on the list. - var authors = authorsPart.CommentAuthorList.Elements().Where(a => a.Name == name && a.Initials == initials); - - // If so... - if (authors.Any()) - { - // Assign the new comment author the existing author ID. - author = authors.First(); - authorId = author.Id; - } - - // If not... - if (author == null) - { - // Assign the author passed in a new ID - authorId = authorsPart.CommentAuthorList.Elements().Select(a => a.Id.Value).Max(); - } - } - - // If there are no existing child elements in the comment authors list. - if (author == null) - { - authorId++; - - // Add a new child element(comment author) to the comment author list. - author = authorsPart.CommentAuthorList.AppendChild - (new CommentAuthor() - { - Id = authorId, - Name = name, - Initials = initials, - ColorIndex = 0 - }); - } -``` - -```vb - ' Verify that there is a comment author list in the comment authors part. - If authorsPart.CommentAuthorList Is Nothing Then - ' If not, add a new one. - authorsPart.CommentAuthorList = New CommentAuthorList() - End If - - ' Declare a new author ID. - Dim authorId As UInteger = 0 - Dim author As CommentAuthor = Nothing - - ' If there are existing child elements in the comment authors list... - If authorsPart.CommentAuthorList.HasChildren Then - ' Verify that the author passed in is on the list. - Dim authors = authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Where(Function(a) a.Name = name AndAlso a.Initials = initials) - - ' If so... - If authors.Any() Then - ' Assign the new comment author the existing author ID. - author = authors.First() - authorId = author.Id - End If - - ' If not... - If author Is Nothing Then - ' Assign the author passed in a new ID - authorId = authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Select(Function(a) a.Id.Value).Max() - End If - End If - - ' If there are no existing child elements in the comment authors list. - If author Is Nothing Then - authorId += 1 - - ' Add a new child element(comment author) to the comment author list. - author = authorsPart.CommentAuthorList.AppendChild(Of CommentAuthor) (New CommentAuthor() With {.Id = authorId, .Name = name, .Initials = initials, .ColorIndex = 0}) - End If -``` - -In the following code segment, the code gets the first slide in the -presentation by calling the *GetFirstSlide* method. Then it verifies -that there is a comments part in the slide; if not, it adds one. It also -verifies that a comments list exists in the comments part; if not, it -creates one. - -```csharp - // Get the first slide, using the GetFirstSlide method. - SlidePart slidePart1 = GetFirstSlide(doc); - - // Declare a comments part. - SlideCommentsPart commentsPart; - - // Verify that there is a comments part in the first slide part. - if (slidePart1.GetPartsOfType().Count() == 0) - { - // If not, add a new comments part. - commentsPart = slidePart1.AddNewPart(); - } - else - { - // Else, use the first comments part in the slide part. - commentsPart = slidePart1.SlideCommentsPart; - } - - // If the comment list does not exist. - if (commentsPart.CommentList == null) - { - // Add a new comments list. - commentsPart.CommentList = new CommentList(); - } -``` - -```vb - ' Get the first slide, using the GetFirstSlide method. - Dim slidePart1 As SlidePart = GetFirstSlide(doc) - - ' Declare a comments part. - Dim commentsPart As SlideCommentsPart - - ' Verify that there is a comments part in the first slide part. - If slidePart1.GetPartsOfType(Of SlideCommentsPart)().Count() = 0 Then - ' If not, add a new comments part. - commentsPart = slidePart1.AddNewPart(Of SlideCommentsPart)() - Else - ' Else, use the first comments part in the slide part. - commentsPart = slidePart1.SlideCommentsPart - End If - - ' If the comment list does not exist. - If commentsPart.CommentList Is Nothing Then - ' Add a new comments list. - commentsPart.CommentList = New CommentList() - End If -``` - -The code then gets the ID of the new comment, and adds the specified -comment, containing the specified text, at the specified position. Then -it saves the comment authors part and the comments part. - -```csharp - // Get the new comment ID. - uint commentIdx = author.LastIndex == null ? 1 : author.LastIndex + 1; - author.LastIndex = commentIdx; - - // Add a new comment. - Comment comment = commentsPart.CommentList.AppendChild( - new Comment() - { - AuthorId = authorId, - Index = commentIdx, - DateTime = DateTime.Now - }); - - // Add the position child node to the comment element. - comment.Append( - new Position() { X = 100, Y = 200 }, - new Text() { Text = text }); - - // Save the comment authors part. - authorsPart.CommentAuthorList.Save(); - - // Save the comments part. - commentsPart.CommentList.Save(); -``` - -```vb - ' Get the new comment ID. - Dim commentIdx As UInteger = If(author.LastIndex Is Nothing, 1, author.LastIndex + 1) - author.LastIndex = commentIdx - - ' Add a new comment. - Dim comment As Comment = commentsPart.CommentList.AppendChild(Of Comment)(New Comment() With {.AuthorId = authorId, .Index = commentIdx, .DateTime = Date.Now}) - - ' Add the position child node to the comment element. - comment.Append(New Position() With {.X = 100, .Y = 200}, New Text() With {.Text = text}) - - ' Save the comment authors part. - authorsPart.CommentAuthorList.Save() - - ' Save the comments part. - commentsPart.CommentList.Save() -``` - ## Sample Code -The **AddCommentToPresentation** method can be -used to add a comment to a slide. The method takes as parameters the -source presentation file name and path, the initials and name of the -comment author, and the text of the comment to be added. It adds an -author to the list of comment authors and then adds the specified -comment text at the specified coordinates in the first slide in the -presentation. +The following code example shows how to add comments to a +presentation document. To run the program, you can pass in the arguments: -The second method, **GetFirstSlide**, is used -to get the first slide in the presentation. It takes the **PresentationDocument** object passed in, gets its -presentation part, and then gets the ID of the first slide in its slide -list. It then gets the relationship ID of the slide, gets the slide part -from the relationship ID, and returns the slide part to the calling -method. - -The following code example shows a call to the **AddCommentToPresentation** which adds the specified -comment string to the first slide in the presentation file Myppt1.pptx. - -```csharp - AddCommentToPresentation(@"C:\Users\Public\Documents\Myppt1.pptx", - "Katie Jordan", "KJ", - "This is my programmatically added comment."); -``` - -```vb - AddCommentToPresentation("C:\Users\Public\Documents\Myppt1.pptx", _ - "Katie Jordan", "KJ", _ - "This is my programmatically added comment.") +```dotnetcli +dotnet run -- [filePath] [initials] [name] [test ...] ``` > [!NOTE] > To get the exact author name and initials, open the presentation file and click the **File** menu item, and then click **Options**. The **PowerPointOptions** window opens and the content of the **General** tab is displayed. The author name and initials must match the **User name** and **Initials** in this tab. +### [CSharp](#tab/cs) +[!code-csharp[](../samples/presentation/add_comment/cs/Program.cs)] -```csharp - // Adds a comment to the first slide of the presentation document. - // The presentation document must contain at least one slide. - public static void AddCommentToPresentation(string file, string initials, string name, string text) - { - using (PresentationDocument doc = PresentationDocument.Open(file, true)) - { - - // Declare a CommentAuthorsPart object. - CommentAuthorsPart authorsPart; - - // Verify that there is an existing comment authors part. - if (doc.PresentationPart.CommentAuthorsPart == null) - { - // If not, add a new one. - authorsPart = doc.PresentationPart.AddNewPart(); - } - else - { - authorsPart = doc.PresentationPart.CommentAuthorsPart; - } - - // Verify that there is a comment author list in the comment authors part. - if (authorsPart.CommentAuthorList == null) - { - // If not, add a new one. - authorsPart.CommentAuthorList = new CommentAuthorList(); - } - - // Declare a new author ID. - uint authorId = 0; - CommentAuthor author = null; - - // If there are existing child elements in the comment authors list... - if (authorsPart.CommentAuthorList.HasChildren) - { - // Verify that the author passed in is on the list. - var authors = authorsPart.CommentAuthorList.Elements().Where(a => a.Name == name && a.Initials == initials); - - // If so... - if (authors.Any()) - { - // Assign the new comment author the existing author ID. - author = authors.First(); - authorId = author.Id; - } - - // If not... - if (author == null) - { - // Assign the author passed in a new ID - authorId = authorsPart.CommentAuthorList.Elements().Select(a => a.Id.Value).Max(); - } - } - - // If there are no existing child elements in the comment authors list. - if (author == null) - { - - authorId++; - - // Add a new child element(comment author) to the comment author list. - author = authorsPart.CommentAuthorList.AppendChild - (new CommentAuthor() - { - Id = authorId, - Name = name, - Initials = initials, - ColorIndex = 0 - }); - } - - // Get the first slide, using the GetFirstSlide method. - SlidePart slidePart1 = GetFirstSlide(doc); - - // Declare a comments part. - SlideCommentsPart commentsPart; - - // Verify that there is a comments part in the first slide part. - if (slidePart1.GetPartsOfType().Count() == 0) - { - // If not, add a new comments part. - commentsPart = slidePart1.AddNewPart(); - } - else - { - // Else, use the first comments part in the slide part. - commentsPart = slidePart1.GetPartsOfType().First(); - } - - // If the comment list does not exist. - if (commentsPart.CommentList == null) - { - // Add a new comments list. - commentsPart.CommentList = new CommentList(); - } - - // Get the new comment ID. - uint commentIdx = author.LastIndex == null ? 1 : author.LastIndex + 1; - author.LastIndex = commentIdx; - - // Add a new comment. - Comment comment = commentsPart.CommentList.AppendChild( - new Comment() - { - AuthorId = authorId, - Index = commentIdx, - DateTime = DateTime.Now - }); - - // Add the position child node to the comment element. - comment.Append( - new Position() { X = 100, Y = 200 }, - new Text() { Text = text }); - - // Save the comment authors part. - authorsPart.CommentAuthorList.Save(); - - // Save the comments part. - commentsPart.CommentList.Save(); - } - } - // Get the slide part of the first slide in the presentation document. - public static SlidePart GetFirstSlide(PresentationDocument presentationDocument) - { - // Get relationship ID of the first slide - PresentationPart part = presentationDocument.PresentationPart; - SlideId slideId = part.Presentation.SlideIdList.GetFirstChild(); - string relId = slideId.RelationshipId; - - // Get the slide part by the relationship ID. - SlidePart slidePart = (SlidePart)part.GetPartById(relId); - - return slidePart; - } -``` - -```vb - ' Adds a comment to the first slide of the presentation document. - ' The presentation document must contain at least one slide. - Public Sub AddCommentToPresentation(ByVal file As String, _ - ByVal initials As String, _ - ByVal name As String, _ - ByVal text As String) - - Dim doc As PresentationDocument = _ - PresentationDocument.Open(file, True) - - Using (doc) - - ' Declare a CommentAuthorsPart object. - Dim authorsPart As CommentAuthorsPart - - ' Verify that there is an existing comment authors part. - If (doc.PresentationPart.CommentAuthorsPart Is Nothing) Then - - ' If not, add a new one. - authorsPart = doc.PresentationPart.AddNewPart(Of CommentAuthorsPart)() - Else - authorsPart = doc.PresentationPart.CommentAuthorsPart - End If - - ' Verify that there is a comment author list in the comment authors part. - If (authorsPart.CommentAuthorList Is Nothing) Then - - ' If not, add a new one. - authorsPart.CommentAuthorList = New CommentAuthorList() - End If - - ' Declare a new author ID. - Dim authorId As UInteger = 0 - Dim author As CommentAuthor = Nothing - - ' If there are existing child elements in the comment authors list. - If authorsPart.CommentAuthorList.HasChildren = True Then - - ' Verify that the author passed in is on the list. - Dim authors = authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Where _ - (Function(a) a.Name = name AndAlso a.Initials = initials) - - ' If so... - If (authors.Any()) Then - - ' Assign the new comment author the existing ID. - author = authors.First() - authorId = author.Id - End If - - ' If not... - If (author Is Nothing) Then - - ' Assign the author passed in a new ID. - authorId = _ - authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Select(Function(a) a.Id.Value).Max() - End If - - End If - - ' If there are no existing child elements in the comment authors list. - If (author Is Nothing) Then - - authorId = authorId + 1 - - ' Add a new child element (comment author) to the comment author list. - author = (authorsPart.CommentAuthorList.AppendChild(Of CommentAuthor) _ - (New CommentAuthor() With {.Id = authorId, _ - .Name = name, _ - .Initials = initials, _ - .ColorIndex = 0})) - End If - - ' Get the first slide, using the GetFirstSlide() method. - Dim slidePart1 As SlidePart - slidePart1 = GetFirstSlide(doc) - - ' Declare a comments part. - Dim commentsPart As SlideCommentsPart - - ' Verify that there is a comments part in the first slide part. - If slidePart1.GetPartsOfType(Of SlideCommentsPart)().Count() = 0 Then - - ' If not, add a new comments part. - commentsPart = slidePart1.AddNewPart(Of SlideCommentsPart)() - Else - - ' Else, use the first comments part in the slide part. - commentsPart = _ - slidePart1.GetPartsOfType(Of SlideCommentsPart)().First() - End If - - ' If the comment list does not exist. - If (commentsPart.CommentList Is Nothing) Then - - ' Add a new comments list. - commentsPart.CommentList = New CommentList() - End If - - ' Get the new comment ID. - Dim commentIdx As UInteger - If author.LastIndex Is Nothing Then - commentIdx = 1 - Else - commentIdx = CType(author.LastIndex, UInteger) + 1 - End If - - author.LastIndex = commentIdx - - ' Add a new comment. - Dim comment As Comment = _ - (commentsPart.CommentList.AppendChild(Of Comment)(New Comment() _ - With {.AuthorId = authorId, .Index = commentIdx, .DateTime = DateTime.Now})) - - ' Add the position child node to the comment element. - comment.Append(New Position() With _ - {.X = 100, .Y = 200}, New Text() With {.Text = text}) - - - ' Save comment authors part. - authorsPart.CommentAuthorList.Save() - - ' Save comments part. - commentsPart.CommentList.Save() - - End Using - - End Sub - - ' Get the slide part of the first slide in the presentation document. - Public Function GetFirstSlide(ByVal presentationDocument As PresentationDocument) As SlidePart - ' Get relationship ID of the first slide - Dim part As PresentationPart = presentationDocument.PresentationPart - Dim slideId As SlideId = part.Presentation.SlideIdList.GetFirstChild(Of SlideId)() - Dim relId As String = slideId.RelationshipId - - ' Get the slide part by the relationship ID. - Dim slidePart As SlidePart = DirectCast(part.GetPartById(relId), SlidePart) - - Return slidePart - End Function - End Module -``` +### [Visual Basic](#tab/vb) +[!code-vb[](../samples/presentation/add_comment/vb/Program.vb)] ## See also diff --git a/samples/Directory.Build.props b/samples/Directory.Build.props new file mode 100644 index 00000000..6aee36e9 --- /dev/null +++ b/samples/Directory.Build.props @@ -0,0 +1,8 @@ + + + net8.0 + disable + disable + Exe + + \ No newline at end of file diff --git a/samples/Directory.Build.targets b/samples/Directory.Build.targets new file mode 100644 index 00000000..ea8a1477 --- /dev/null +++ b/samples/Directory.Build.targets @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/samples/README.md b/samples/README.md new file mode 100644 index 00000000..9f15cb49 --- /dev/null +++ b/samples/README.md @@ -0,0 +1,18 @@ +# Adding samples + +To add a sample, run the the following: + +```powershell +./add-sample.ps1 [word|presentation|spreadsheet] sample-name +``` + +This will scaffold out the projects in a common layout. Samples should be a single file, with the entrypoint being the command line so that `dotnet run -- [args]` can be used in the docs. + +In the future, we expect to set up .editorconfig/stylecop to enforce a shared style across the samples, but for now, the goal is to move the inline samples to this compilable solution. + +General changes to move a sample: + +- Many examples give details on how to open a project; this can be removed +- Sections about what `Dispose/Close/etc` is can be removed - this is an artifact from before `using` was common +- Samples currently have a "How the Sample Works" section followed by the actual sample. Going forward, this will be collapsed to just the sample - any comments required will be in the cs/vb +- Many users use the VB examples, so we will maintain them. Using docfx tabs allows us to hide the languages not needed by a viewer \ No newline at end of file diff --git a/samples/add-sample.ps1 b/samples/add-sample.ps1 new file mode 100644 index 00000000..f2aa05e6 --- /dev/null +++ b/samples/add-sample.ps1 @@ -0,0 +1,21 @@ +param($area, $name) + +# Basic normalization +$name = $name.Replace("-", "_") + +$dir = "$PSScriptRoot\$area\$name\cs" +$proj = "$dir\${name}_cs.csproj" +mkdir $dir -ErrorAction Ignore +echo "" > $proj +echo "" > "$dir\Program.cs" +dotnet sln add $proj --solution-folder $area + +$dir = "$PSScriptRoot\$area\$name\vb" +$proj = "$dir\${name}_vb.vbproj" +mkdir $dir -ErrorAction Ignore +echo "" > $proj +echo "Module Program ` + Sub Main(args As String())` + End Sub` +End Module" > "$dir\Program.vb" +dotnet sln add $proj --solution-folder $area diff --git a/samples/presentation/add_comment/cs/Program.cs b/samples/presentation/add_comment/cs/Program.cs new file mode 100644 index 00000000..cbe7f9c2 --- /dev/null +++ b/samples/presentation/add_comment/cs/Program.cs @@ -0,0 +1,140 @@ +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Presentation; +using System; +using System.Linq; + +AddCommentToPresentation(args[0], args[1], args[2], string.Join(' ', args[3..])); + +static void AddCommentToPresentation(string file, string initials, string name, string text) +{ + using (PresentationDocument doc = PresentationDocument.Open(file, true)) + { + + // Declare a CommentAuthorsPart object. + CommentAuthorsPart authorsPart; + + // Verify that there is an existing comment authors part. + if (doc.PresentationPart.CommentAuthorsPart == null) + { + // If not, add a new one. + authorsPart = doc.PresentationPart.AddNewPart(); + } + else + { + authorsPart = doc.PresentationPart.CommentAuthorsPart; + } + + // Verify that there is a comment author list in the comment authors part. + if (authorsPart.CommentAuthorList == null) + { + // If not, add a new one. + authorsPart.CommentAuthorList = new CommentAuthorList(); + } + + // Declare a new author ID. + uint authorId = 0; + CommentAuthor author = null; + + // If there are existing child elements in the comment authors list... + if (authorsPart.CommentAuthorList.HasChildren) + { + // Verify that the author passed in is on the list. + var authors = authorsPart.CommentAuthorList.Elements().Where(a => a.Name == name && a.Initials == initials); + + // If so... + if (authors.Any()) + { + // Assign the new comment author the existing author ID. + author = authors.First(); + authorId = author.Id; + } + + // If not... + if (author == null) + { + // Assign the author passed in a new ID + authorId = authorsPart.CommentAuthorList.Elements().Select(a => a.Id.Value).Max(); + } + } + + // If there are no existing child elements in the comment authors list. + if (author == null) + { + + authorId++; + + // Add a new child element(comment author) to the comment author list. + author = authorsPart.CommentAuthorList.AppendChild + (new CommentAuthor() + { + Id = authorId, + Name = name, + Initials = initials, + ColorIndex = 0 + }); + } + + // Get the first slide, using the GetFirstSlide method. + SlidePart slidePart1 = GetFirstSlide(doc); + + // Declare a comments part. + SlideCommentsPart commentsPart; + + // Verify that there is a comments part in the first slide part. + if (slidePart1.GetPartsOfType().Count() == 0) + { + // If not, add a new comments part. + commentsPart = slidePart1.AddNewPart(); + } + else + { + // Else, use the first comments part in the slide part. + commentsPart = slidePart1.GetPartsOfType().First(); + } + + // If the comment list does not exist. + if (commentsPart.CommentList == null) + { + // Add a new comments list. + commentsPart.CommentList = new CommentList(); + } + + // Get the new comment ID. + uint commentIdx = author.LastIndex == null ? 1 : author.LastIndex + 1; + author.LastIndex = commentIdx; + + // Add a new comment. + Comment comment = commentsPart.CommentList.AppendChild( + new Comment() + { + AuthorId = authorId, + Index = commentIdx, + DateTime = DateTime.Now + }); + + // Add the position child node to the comment element. + comment.Append( + new Position() { X = 100, Y = 200 }, + new Text() { Text = text }); + + // Save the comment authors part. + authorsPart.CommentAuthorList.Save(); + + // Save the comments part. + commentsPart.CommentList.Save(); + } +} + +// Get the slide part of the first slide in the presentation document. +static SlidePart GetFirstSlide(PresentationDocument presentationDocument) +{ + // Get relationship ID of the first slide + PresentationPart part = presentationDocument.PresentationPart; + SlideId slideId = part.Presentation.SlideIdList.GetFirstChild(); + string relId = slideId.RelationshipId; + + // Get the slide part by the relationship ID. + SlidePart slidePart = (SlidePart)part.GetPartById(relId); + + return slidePart; +} diff --git a/samples/presentation/add_comment/cs/add_comment_cs.csproj b/samples/presentation/add_comment/cs/add_comment_cs.csproj new file mode 100644 index 00000000..d6ca42c7 --- /dev/null +++ b/samples/presentation/add_comment/cs/add_comment_cs.csproj @@ -0,0 +1 @@ + diff --git a/samples/presentation/add_comment/vb/Program.vb b/samples/presentation/add_comment/vb/Program.vb new file mode 100644 index 00000000..39f99e74 --- /dev/null +++ b/samples/presentation/add_comment/vb/Program.vb @@ -0,0 +1,148 @@ +Imports DocumentFormat.OpenXml.Packaging +Imports DocumentFormat.OpenXml.Presentation + +Module Program + Sub Main(args As String()) + AddCommentToPresentation(args(0), args(1), args(2), String.Join(" ", args.Skip(3))) + End Sub + + Public Sub AddCommentToPresentation(ByVal file As String, + ByVal initials As String, + ByVal name As String, + ByVal text As String) + + Dim doc As PresentationDocument = + PresentationDocument.Open(file, True) + + Using (doc) + + ' Declare a CommentAuthorsPart object. + Dim authorsPart As CommentAuthorsPart + + ' Verify that there is an existing comment authors part. + If (doc.PresentationPart.CommentAuthorsPart Is Nothing) Then + + ' If not, add a new one. + authorsPart = doc.PresentationPart.AddNewPart(Of CommentAuthorsPart)() + Else + authorsPart = doc.PresentationPart.CommentAuthorsPart + End If + + ' Verify that there is a comment author list in the comment authors part. + If (authorsPart.CommentAuthorList Is Nothing) Then + + ' If not, add a new one. + authorsPart.CommentAuthorList = New CommentAuthorList() + End If + + ' Declare a new author ID. + Dim authorId As UInteger = 0 + Dim author As CommentAuthor = Nothing + + ' If there are existing child elements in the comment authors list. + If authorsPart.CommentAuthorList.HasChildren = True Then + + ' Verify that the author passed in is on the list. + Dim authors = authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Where _ + (Function(a) a.Name = name AndAlso a.Initials = initials) + + ' If so... + If (authors.Any()) Then + + ' Assign the new comment author the existing ID. + author = authors.First() + authorId = author.Id + End If + + ' If not... + If (author Is Nothing) Then + + ' Assign the author passed in a new ID. + authorId = + authorsPart.CommentAuthorList.Elements(Of CommentAuthor)().Select(Function(a) a.Id.Value).Max() + End If + + End If + + ' If there are no existing child elements in the comment authors list. + If (author Is Nothing) Then + + authorId = authorId + 1 + + ' Add a new child element (comment author) to the comment author list. + author = (authorsPart.CommentAuthorList.AppendChild(Of CommentAuthor) _ + (New CommentAuthor() With {.Id = authorId, + .Name = name, + .Initials = initials, + .ColorIndex = 0})) + End If + + ' Get the first slide, using the GetFirstSlide() method. + Dim slidePart1 As SlidePart + slidePart1 = GetFirstSlide(doc) + + ' Declare a comments part. + Dim commentsPart As SlideCommentsPart + + ' Verify that there is a comments part in the first slide part. + If slidePart1.GetPartsOfType(Of SlideCommentsPart)().Count() = 0 Then + + ' If not, add a new comments part. + commentsPart = slidePart1.AddNewPart(Of SlideCommentsPart)() + Else + + ' Else, use the first comments part in the slide part. + commentsPart = + slidePart1.GetPartsOfType(Of SlideCommentsPart)().First() + End If + + ' If the comment list does not exist. + If (commentsPart.CommentList Is Nothing) Then + + ' Add a new comments list. + commentsPart.CommentList = New CommentList() + End If + + ' Get the new comment ID. + Dim commentIdx As UInteger + If author.LastIndex Is Nothing Then + commentIdx = 1 + Else + commentIdx = CType(author.LastIndex, UInteger) + 1 + End If + + author.LastIndex = commentIdx + + ' Add a new comment. + Dim comment As Comment = +(commentsPart.CommentList.AppendChild(Of Comment)(New Comment() _ + With {.AuthorId = authorId, .Index = commentIdx, .DateTime = DateTime.Now})) + + ' Add the position child node to the comment element. + comment.Append(New Position() With + {.X = 100, .Y = 200}, New Text() With {.Text = text}) + + + ' Save comment authors part. + authorsPart.CommentAuthorList.Save() + + ' Save comments part. + commentsPart.CommentList.Save() + + End Using + + End Sub + + ' Get the slide part of the first slide in the presentation document. + Public Function GetFirstSlide(ByVal presentationDocument As PresentationDocument) As SlidePart + ' Get relationship ID of the first slide + Dim part As PresentationPart = presentationDocument.PresentationPart + Dim slideId As SlideId = part.Presentation.SlideIdList.GetFirstChild(Of SlideId)() + Dim relId As String = slideId.RelationshipId + + ' Get the slide part by the relationship ID. + Dim slidePart As SlidePart = DirectCast(part.GetPartById(relId), SlidePart) + + Return slidePart + End Function +End Module diff --git a/samples/presentation/add_comment/vb/add_comment_vb.vbproj b/samples/presentation/add_comment/vb/add_comment_vb.vbproj new file mode 100644 index 00000000..d6ca42c7 --- /dev/null +++ b/samples/presentation/add_comment/vb/add_comment_vb.vbproj @@ -0,0 +1 @@ + diff --git a/samples/samples.sln b/samples/samples.sln new file mode 100644 index 00000000..b159a822 --- /dev/null +++ b/samples/samples.sln @@ -0,0 +1,53 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31903.59 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "word", "word", "{D207D3D7-FD4D-4FD4-A7D0-79A82086FB6F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "accept_all_revisions_cs", "word\accept_all_revisions\cs\accept_all_revisions_cs.csproj", "{93E0FE7B-9437-449F-852D-25C5F183BBCF}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "accept_all_revisions_vb", "word\accept_all_revisions\vb\accept_all_revisions_vb.vbproj", "{E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "presentation", "presentation", "{CDB9D4A6-7A7A-4CDF-A7A3-4F17F5F1602D}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "add_comment_cs", "presentation\add_comment\cs\add_comment_cs.csproj", "{B87B46CC-6642-4754-AA32-2AD057D877DC}" +EndProject +Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "add_comment_vb", "presentation\add_comment\vb\add_comment_vb.vbproj", "{F5204024-B0D0-4106-AE8B-8CB1552C1F87}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {93E0FE7B-9437-449F-852D-25C5F183BBCF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {93E0FE7B-9437-449F-852D-25C5F183BBCF}.Debug|Any CPU.Build.0 = Debug|Any CPU + {93E0FE7B-9437-449F-852D-25C5F183BBCF}.Release|Any CPU.ActiveCfg = Release|Any CPU + {93E0FE7B-9437-449F-852D-25C5F183BBCF}.Release|Any CPU.Build.0 = Release|Any CPU + {E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0}.Release|Any CPU.Build.0 = Release|Any CPU + {B87B46CC-6642-4754-AA32-2AD057D877DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B87B46CC-6642-4754-AA32-2AD057D877DC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B87B46CC-6642-4754-AA32-2AD057D877DC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B87B46CC-6642-4754-AA32-2AD057D877DC}.Release|Any CPU.Build.0 = Release|Any CPU + {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {93E0FE7B-9437-449F-852D-25C5F183BBCF} = {D207D3D7-FD4D-4FD4-A7D0-79A82086FB6F} + {E079BD07-B6BB-441C-8FB6-3FFC8B30E6B0} = {D207D3D7-FD4D-4FD4-A7D0-79A82086FB6F} + {B87B46CC-6642-4754-AA32-2AD057D877DC} = {CDB9D4A6-7A7A-4CDF-A7A3-4F17F5F1602D} + {F5204024-B0D0-4106-AE8B-8CB1552C1F87} = {CDB9D4A6-7A7A-4CDF-A7A3-4F17F5F1602D} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {721B3030-08D7-4412-9087-D1CFBB3F5046} + EndGlobalSection +EndGlobal diff --git a/samples/word/accept_all_revisions/cs/Program.cs b/samples/word/accept_all_revisions/cs/Program.cs new file mode 100644 index 00000000..79f58e33 --- /dev/null +++ b/samples/word/accept_all_revisions/cs/Program.cs @@ -0,0 +1,71 @@ +using DocumentFormat.OpenXml; +using DocumentFormat.OpenXml.Packaging; +using DocumentFormat.OpenXml.Wordprocessing; +using System.Collections.Generic; +using System.Linq; + +string fileName = args[0]; +string authorName = args[1]; + +using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(fileName, true)) +{ + Body body = wdDoc.MainDocumentPart.Document.Body; + + // Handle the formatting changes. + List changes = body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList(); + + foreach (OpenXmlElement change in changes) + { + change.Remove(); + } + + // Handle the deletions. + List deletions = body + .Descendants() + .Where(c => c.Author.Value == authorName) + .Cast().ToList(); + + deletions.AddRange(body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList()); + + deletions.AddRange(body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList()); + + foreach (OpenXmlElement deletion in deletions) + { + deletion.Remove(); + } + + // Handle the insertions. + List insertions = + body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList(); + + insertions.AddRange(body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList()); + + insertions.AddRange(body.Descendants() + .Where(c => c.Author.Value == authorName).Cast().ToList()); + + foreach (OpenXmlElement insertion in insertions) + { + // Found new content. + // Promote them to the same level as node, and then delete the node. + foreach (var run in insertion.Elements()) + { + if (run == insertion.FirstChild) + { + insertion.InsertAfterSelf(new Run(run.OuterXml)); + } + else + { + insertion.NextSibling().InsertAfterSelf(new Run(run.OuterXml)); + } + } + + insertion.RemoveAttribute("rsidR", "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); + insertion.RemoveAttribute("rsidRPr", "https://schemas.openxmlformats.org/wordprocessingml/2006/main"); + insertion.Remove(); + } +} \ No newline at end of file diff --git a/samples/word/accept_all_revisions/cs/accept_all_revisions_cs.csproj b/samples/word/accept_all_revisions/cs/accept_all_revisions_cs.csproj new file mode 100644 index 00000000..bef03830 --- /dev/null +++ b/samples/word/accept_all_revisions/cs/accept_all_revisions_cs.csproj @@ -0,0 +1,2 @@ + + diff --git a/samples/word/accept_all_revisions/vb/Program.vb b/samples/word/accept_all_revisions/vb/Program.vb new file mode 100644 index 00000000..9056b765 --- /dev/null +++ b/samples/word/accept_all_revisions/vb/Program.vb @@ -0,0 +1,66 @@ +Imports DocumentFormat.OpenXml +Imports DocumentFormat.OpenXml.Packaging +Imports DocumentFormat.OpenXml.Wordprocessing + +Module Program + Sub Main(args As String()) + Dim fileName = args(0) + Dim authorName = args(1) + + 'Public Sub AcceptRevisions(ByVal fileName As String, ByVal authorName As String) + ' Given a document name and an author name, accept revisions. + Using wdDoc As WordprocessingDocument = WordprocessingDocument.Open(fileName, True) + Dim body As Body = wdDoc.MainDocumentPart.Document.Body + + ' Handle the formatting changes. + Dim changes As List(Of OpenXmlElement) = + body.Descendants(Of ParagraphPropertiesChange)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() + + For Each change In changes + change.Remove() + Next + + ' Handle the deletions. + Dim deletions As List(Of OpenXmlElement) = + body.Descendants(Of Deleted)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() + + deletions.AddRange(body.Descendants(Of DeletedRun)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) + + deletions.AddRange(body.Descendants(Of DeletedMathControl)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) + + For Each deletion In deletions + deletion.Remove() + Next + + ' Handle the insertions. + Dim insertions As List(Of OpenXmlElement) = + body.Descendants(Of Inserted)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList() + + insertions.AddRange(body.Descendants(Of InsertedRun)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) + + insertions.AddRange(body.Descendants(Of InsertedMathControl)() _ + .Where(Function(c) c.Author.Value = authorName).Cast(Of OpenXmlElement)().ToList()) + + For Each insertion In insertions + ' Found new content. Promote them to the same level as node, and then + ' delete the node. + For Each run In insertion.Elements(Of Run)() + If run Is insertion.FirstChild Then + insertion.InsertAfterSelf(New Run(run.OuterXml)) + Else + insertion.NextSibling().InsertAfterSelf(New Run(run.OuterXml)) + End If + Next + insertion.RemoveAttribute("rsidR", "https://schemas.openxmlformats.org/wordprocessingml/2006/main") + insertion.RemoveAttribute("rsidRPr", "https://schemas.openxmlformats.org/wordprocessingml/2006/main") + insertion.Remove() + Next + End Using + End Sub +End Module diff --git a/samples/word/accept_all_revisions/vb/accept_all_revisions_vb.vbproj b/samples/word/accept_all_revisions/vb/accept_all_revisions_vb.vbproj new file mode 100644 index 00000000..bef03830 --- /dev/null +++ b/samples/word/accept_all_revisions/vb/accept_all_revisions_vb.vbproj @@ -0,0 +1,2 @@ + + From d781d7dc76a9a2f0acadee6e61ca89f1505937f5 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 20:13:52 -0700 Subject: [PATCH 025/193] add better migrator tool --- samples/README.md | 20 ++++-- samples/migrate-sample.ps1 | 3 + samples/samples.sln | 6 ++ samples/tools/migrator/Program.cs | 86 ++++++++++++++++++++++++++ samples/tools/migrator/migrator.csproj | 10 +++ 5 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 samples/migrate-sample.ps1 create mode 100644 samples/tools/migrator/Program.cs create mode 100644 samples/tools/migrator/migrator.csproj diff --git a/samples/README.md b/samples/README.md index 9f15cb49..814cd586 100644 --- a/samples/README.md +++ b/samples/README.md @@ -1,18 +1,30 @@ # Adding samples +## New Samples + To add a sample, run the the following: ```powershell -./add-sample.ps1 [word|presentation|spreadsheet] sample-name +./add-sample.ps1 area name ``` -This will scaffold out the projects in a common layout. Samples should be a single file, with the entrypoint being the command line so that `dotnet run -- [args]` can be used in the docs. +This will create an initial scaffold for a sample and add it to the solution file. -In the future, we expect to set up .editorconfig/stylecop to enforce a shared style across the samples, but for now, the goal is to move the inline samples to this compilable solution. +## Migrate old samples + +```powershell +./migrate-sample.ps1 path-to-md-file +``` + +This will do an inital extraction and clean up of the file, as well as add the code to the solution. Additional clean up will be necessary, but should be minimal. General changes to move a sample: - Many examples give details on how to open a project; this can be removed - Sections about what `Dispose/Close/etc` is can be removed - this is an artifact from before `using` was common - Samples currently have a "How the Sample Works" section followed by the actual sample. Going forward, this will be collapsed to just the sample - any comments required will be in the cs/vb -- Many users use the VB examples, so we will maintain them. Using docfx tabs allows us to hide the languages not needed by a viewer \ No newline at end of file +- Many users use the VB examples, so we will maintain them. Using docfx tabs allows us to hide the languages not needed by a viewer + +## Code set up + +In the future, we expect to set up .editorconfig/stylecop to enforce a shared style across the samples, but for now, the goal is to move the inline samples to this compilable solution. diff --git a/samples/migrate-sample.ps1 b/samples/migrate-sample.ps1 new file mode 100644 index 00000000..b07ea5f7 --- /dev/null +++ b/samples/migrate-sample.ps1 @@ -0,0 +1,3 @@ +param($path) + +dotnet run "$(PSScriptRoot)\tools\migrator.csproj" -- $path \ No newline at end of file diff --git a/samples/samples.sln b/samples/samples.sln index b159a822..e7daa0f9 100644 --- a/samples/samples.sln +++ b/samples/samples.sln @@ -15,6 +15,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "add_comment_cs", "presentat EndProject Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "add_comment_vb", "presentation\add_comment\vb\add_comment_vb.vbproj", "{F5204024-B0D0-4106-AE8B-8CB1552C1F87}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "migrator", "tools\migrator\migrator.csproj", "{0470C4B3-18CE-4621-A41C-A1C70DDF8EAD}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,6 +39,10 @@ Global {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Debug|Any CPU.Build.0 = Debug|Any CPU {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Release|Any CPU.ActiveCfg = Release|Any CPU {F5204024-B0D0-4106-AE8B-8CB1552C1F87}.Release|Any CPU.Build.0 = Release|Any CPU + {0470C4B3-18CE-4621-A41C-A1C70DDF8EAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0470C4B3-18CE-4621-A41C-A1C70DDF8EAD}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0470C4B3-18CE-4621-A41C-A1C70DDF8EAD}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0470C4B3-18CE-4621-A41C-A1C70DDF8EAD}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/samples/tools/migrator/Program.cs b/samples/tools/migrator/Program.cs new file mode 100644 index 00000000..bd10fa5b --- /dev/null +++ b/samples/tools/migrator/Program.cs @@ -0,0 +1,86 @@ +using System.Diagnostics; +using System.Text.RegularExpressions; + +if (args is not [string path]) +{ + Console.WriteLine("Must supply a path"); + return; +} + +var samplesDir = Path.GetFullPath(Path.Combine(path, "..", "..", "samples"))!; + +if (!Directory.Exists(samplesDir)) +{ + Console.WriteLine("Not a valid document"); + return; +} + +var text = File.ReadAllText(path); + +text = Matchers.GetAssemblyDirective().Replace(text, string.Empty); +text = Matchers.HowWorks().Replace(text, "##"); + +var csMatch = Matchers.Csharp().Match(text); +var cs = csMatch.Groups[2].Value; +var vbMatch = Matchers.Vb().Match(text); +var vb = vbMatch.Groups[2].Value; + +var area = Matchers.Area().Match(text).Groups[1].Value; +Console.WriteLine($"Enter name for {Path.GetFileName(path)}"); +string name = Console.ReadLine() ?? throw new InvalidOperationException(); + +name = name.Replace("-", "_"); + +text = text.Replace(csMatch.Groups[1].Value, $""" + ### [CSharp](#tab/cs) + [!code-csharp[](../samples/{area}/{name}/cs/Program.cs)] + """); + +text = text.Replace(vbMatch.Groups[1].Value, $""" + ### [CSharp](#tab/cs) + [!code-vb[](../samples/{area}/{name}/vb/Program.vb)] + """); + +var thisSampleDir = Path.Combine(samplesDir, area, name); + +var csDir = Path.Combine(thisSampleDir, "cs"); +Directory.CreateDirectory(csDir); +var csProj = Path.Combine(csDir, $"{name}_cs.csproj"); +File.WriteAllText(csProj, """"""); +File.WriteAllText(Path.Combine(csDir, "Program.cs"), cs); + +var vbDir = Path.Combine(thisSampleDir, "vb"); +Directory.CreateDirectory(vbDir); +var vbProj = Path.Combine(vbDir, $"{name}_vb.vbproj"); +File.WriteAllText(vbProj, """"""); +File.WriteAllText(Path.Combine(vbDir, "Program.vb"), $""" + Module Program ` + Sub Main(args As String())` + End Sub` + + {vb} + End Module + """); + +File.WriteAllText(path, text); + +Process.Start(new ProcessStartInfo("dotnet", $"sln add {csProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); +Process.Start(new ProcessStartInfo("dotnet", $"sln add {vbProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); + +partial class Matchers +{ + [GeneratedRegex("""The following assembly directives.*?```vb.*?```""", RegexOptions.Singleline)] + public static partial Regex GetAssemblyDirective(); + + [GeneratedRegex("## How the Sample Code Works .*?##", RegexOptions.Singleline)] + public static partial Regex HowWorks(); + + [GeneratedRegex(".*(```csharp(.*?)```)", RegexOptions.Singleline)] + public static partial Regex Csharp(); + + [GeneratedRegex(".*(```vb(.*?)```)", RegexOptions.Singleline)] + public static partial Regex Vb(); + + [GeneratedRegex("./includes/(.*?)/structure\\.md")] + public static partial Regex Area(); +} \ No newline at end of file diff --git a/samples/tools/migrator/migrator.csproj b/samples/tools/migrator/migrator.csproj new file mode 100644 index 00000000..2150e379 --- /dev/null +++ b/samples/tools/migrator/migrator.csproj @@ -0,0 +1,10 @@ + + + + Exe + net8.0 + enable + enable + + + From b9a3a2823067dcffd05ca2fc47773be875aa5d94 Mon Sep 17 00:00:00 2001 From: Taylor Southwick Date: Tue, 17 Oct 2023 20:24:59 -0700 Subject: [PATCH 026/193] Add docs output directory to .gitignore docs/open-xml-docs is where the docfx build ends up - it appears to have out of date assets that are overwritten with the build. This change removes the directory and adds it to .gitignore As part of this change, a default template is added to docfx.json so that local builds can work. --- .gitignore | 2 + docs/docfx.json | 5 +- docs/open-xml-docs/manifest.json | 375 ------------------ docs/open-xml-docs/media/Octocat.png | Bin 4980 -> 0 bytes ...OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif | Bin 8427 -> 0 bytes .../OpenXmlCon_CreateCharacterStyle_Fig1.gif | Bin 4421 -> 0 bytes .../OpenXmlCon_HowToReplaceStyles_Fig1.gif | Bin 8865 -> 0 bytes .../OpenXmlCon_HowToSetCustomPropertyFig2.gif | Bin 19175 -> 0 bytes ...OpenXmlCon_HowToSetCustomProperty_Fig1.gif | Bin 26072 -> 0 bytes docs/open-xml-docs/media/a-theme01.gif | Bin 44387 -> 0 bytes .../odc_oxml_ppt_documentstructure_fig01.jpg | Bin 10461 -> 0 bytes .../odc_oxml_ppt_documentstructure_fig02.jpg | Bin 58548 -> 0 bytes .../odc_oxml_wd_documentstructure_fig01.jpg | Bin 103722 -> 0 bytes .../odc_oxml_xl_documentstructure_fig01.gif | Bin 74568 -> 0 bytes .../odc_oxml_xl_documentstructure_fig02.gif | Bin 920 -> 0 bytes docs/open-xml-docs/media/w-comment01.gif | Bin 788 -> 0 bytes .../open-xml-docs/media/w-delparagraphs01.gif | Bin 1240 -> 0 bytes .../open-xml-docs/media/w-delparagraphs02.gif | Bin 1165 -> 0 bytes docs/open-xml-docs/media/w-headerref01.gif | Bin 9024 -> 0 bytes 19 files changed, 6 insertions(+), 376 deletions(-) delete mode 100644 docs/open-xml-docs/manifest.json delete mode 100644 docs/open-xml-docs/media/Octocat.png delete mode 100644 docs/open-xml-docs/media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif delete mode 100644 docs/open-xml-docs/media/OpenXmlCon_CreateCharacterStyle_Fig1.gif delete mode 100644 docs/open-xml-docs/media/OpenXmlCon_HowToReplaceStyles_Fig1.gif delete mode 100644 docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomPropertyFig2.gif delete mode 100644 docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif delete mode 100644 docs/open-xml-docs/media/a-theme01.gif delete mode 100644 docs/open-xml-docs/media/odc_oxml_ppt_documentstructure_fig01.jpg delete mode 100644 docs/open-xml-docs/media/odc_oxml_ppt_documentstructure_fig02.jpg delete mode 100644 docs/open-xml-docs/media/odc_oxml_wd_documentstructure_fig01.jpg delete mode 100644 docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig01.gif delete mode 100644 docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig02.gif delete mode 100644 docs/open-xml-docs/media/w-comment01.gif delete mode 100644 docs/open-xml-docs/media/w-delparagraphs01.gif delete mode 100644 docs/open-xml-docs/media/w-delparagraphs02.gif delete mode 100644 docs/open-xml-docs/media/w-headerref01.gif diff --git a/.gitignore b/.gitignore index 940794e6..4f4f50e5 100644 --- a/.gitignore +++ b/.gitignore @@ -286,3 +286,5 @@ __pycache__/ *.btm.cs *.odx.cs *.xsd.cs + +docs/open-xml-docs/ \ No newline at end of file diff --git a/docs/docfx.json b/docs/docfx.json index 7d5e9be1..fe6c0e66 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -48,7 +48,10 @@ "**/*.yml": ["csharp", "vb"] } }, - "template": [], + "template": [ + "default", + "modern" + ], "dest": "open-xml-docs", "markdownEngineName": "markdig" } diff --git a/docs/open-xml-docs/manifest.json b/docs/open-xml-docs/manifest.json deleted file mode 100644 index 28dd3799..00000000 --- a/docs/open-xml-docs/manifest.json +++ /dev/null @@ -1,375 +0,0 @@ -{ - "homepages": [], - "source_base_path": "D:/a/1/s/target_repo/docs", - "xrefmap": "xrefmap.yml", - "files": [ - { - "type": "Resource", - "source_relative_path": "media/Octocat.png", - "output": { - "resource": { - "relative_path": "media/Octocat.png" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif", - "output": { - "resource": { - "relative_path": "media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/OpenXmlCon_CreateCharacterStyle_Fig1.gif", - "output": { - "resource": { - "relative_path": "media/OpenXmlCon_CreateCharacterStyle_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/OpenXmlCon_HowToReplaceStyles_Fig1.gif", - "output": { - "resource": { - "relative_path": "media/OpenXmlCon_HowToReplaceStyles_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/OpenXmlCon_HowToSetCustomPropertyFig2.gif", - "output": { - "resource": { - "relative_path": "media/OpenXmlCon_HowToSetCustomPropertyFig2.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif", - "output": { - "resource": { - "relative_path": "media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/a-theme01.gif", - "output": { - "resource": { - "relative_path": "media/a-theme01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/odc_oxml_ppt_documentstructure_fig01.jpg", - "output": { - "resource": { - "relative_path": "media/odc_oxml_ppt_documentstructure_fig01.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/odc_oxml_ppt_documentstructure_fig02.jpg", - "output": { - "resource": { - "relative_path": "media/odc_oxml_ppt_documentstructure_fig02.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/odc_oxml_wd_documentstructure_fig01.jpg", - "output": { - "resource": { - "relative_path": "media/odc_oxml_wd_documentstructure_fig01.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/odc_oxml_xl_documentstructure_fig01.gif", - "output": { - "resource": { - "relative_path": "media/odc_oxml_xl_documentstructure_fig01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/odc_oxml_xl_documentstructure_fig02.gif", - "output": { - "resource": { - "relative_path": "media/odc_oxml_xl_documentstructure_fig02.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/w-comment01.gif", - "output": { - "resource": { - "relative_path": "media/w-comment01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/w-delparagraphs01.gif", - "output": { - "resource": { - "relative_path": "media/w-delparagraphs01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/w-delparagraphs02.gif", - "output": { - "resource": { - "relative_path": "media/w-delparagraphs02.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "media/w-headerref01.gif", - "output": { - "resource": { - "relative_path": "media/w-headerref01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/Octocat.png", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/Octocat.png" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/OpenXmlCon_CreateCharacterStyle_Fig1.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/OpenXmlCon_CreateCharacterStyle_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/OpenXmlCon_HowToReplaceStyles_Fig1.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/OpenXmlCon_HowToReplaceStyles_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/OpenXmlCon_HowToSetCustomPropertyFig2.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/OpenXmlCon_HowToSetCustomPropertyFig2.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/a-theme01.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/a-theme01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/odc_oxml_ppt_documentstructure_fig01.jpg", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/odc_oxml_ppt_documentstructure_fig01.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/odc_oxml_ppt_documentstructure_fig02.jpg", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/odc_oxml_ppt_documentstructure_fig02.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/odc_oxml_wd_documentstructure_fig01.jpg", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/odc_oxml_wd_documentstructure_fig01.jpg" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/odc_oxml_xl_documentstructure_fig01.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/odc_oxml_xl_documentstructure_fig01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/odc_oxml_xl_documentstructure_fig02.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/odc_oxml_xl_documentstructure_fig02.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/w-comment01.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/w-comment01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/w-delparagraphs01.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/w-delparagraphs01.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/w-delparagraphs02.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/w-delparagraphs02.gif" - } - }, - "is_incremental": false, - "version": "" - }, - { - "type": "Resource", - "source_relative_path": "open-xml-docs/media/w-headerref01.gif", - "output": { - "resource": { - "relative_path": "open-xml-docs/media/w-headerref01.gif" - } - }, - "is_incremental": false, - "version": "" - } - ], - "incremental_info": [ - { - "status": { - "can_incremental": false, - "details": "Cannot support incremental post processing, the reason is: it's disabled.", - "incrementalPhase": "postProcessing" - }, - "processors": {} - } - ], - "version_info": {}, - "groups": [ - { - "xrefmap": "xrefmap.yml" - } - ] -} \ No newline at end of file diff --git a/docs/open-xml-docs/media/Octocat.png b/docs/open-xml-docs/media/Octocat.png deleted file mode 100644 index 4cd60c93314ba7d981b34ff3005dde76ed854b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4980 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 diff --git a/docs/open-xml-docs/media/OpenXmlCon_CreateCharacterStyle_Fig1.gif b/docs/open-xml-docs/media/OpenXmlCon_CreateCharacterStyle_Fig1.gif deleted file mode 100644 index 6e509eb072d8aaea0a6908c9e16607f71a6b3471..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4421 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 diff --git a/docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomPropertyFig2.gif b/docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomPropertyFig2.gif deleted file mode 100644 index fdd968433762586d473e9e56f9ce42b5da96700e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19175 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�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 CM?=H_ diff --git a/docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif b/docs/open-xml-docs/media/OpenXmlCon_HowToSetCustomProperty_Fig1.gif deleted file mode 100644 index a202a6f88ff9da70ff033e2f805d5a23a15a6962..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26072 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 bAX1Vc{O1(-|Be55YJ4K_-=|pcl9~SjBw@fW diff --git a/docs/open-xml-docs/media/odc_oxml_ppt_documentstructure_fig02.jpg b/docs/open-xml-docs/media/odc_oxml_ppt_documentstructure_fig02.jpg deleted file mode 100644 index 207ff26898b81607d2f8e08f538f9b4952ff398f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58548 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 diff --git a/docs/open-xml-docs/media/odc_oxml_wd_documentstructure_fig01.jpg b/docs/open-xml-docs/media/odc_oxml_wd_documentstructure_fig01.jpg deleted file mode 100644 index bd51d76c162d6918d07ff3d541adddd168356ac8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103722 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 diff --git a/docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig01.gif b/docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig01.gif deleted file mode 100644 index 137d10a233f549854a81d7f8b1b91f0569a367b8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74568 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 G2mm|OTobwg diff --git a/docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig02.gif b/docs/open-xml-docs/media/odc_oxml_xl_documentstructure_fig02.gif deleted file mode 100644 index f0c07d919770c5d7e075473d23d5489755fe26f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 920 zcmZ?wbhEHbJj7te@Rfn#|Ns9C3=A6%U9On1_0ON*fB*je^XJ$1Z=b(^|N8y=mv7&` zeEjhG>BC!VR?PhR_2d29mp*-Z_u<2vw{M@ndHw9w%g2u&+`N75%#(*V@7y?lLNu7Jy zn;nxDH82_^^9d9fG@P9#QK+=Va>8;y2K(|=dv*qBlf$q8Bk zE7hjfnMet0hqd~1w_UvztZ;F)`r3J+Gfj0bY&Q>H_EmCfmiL^(v-@0c2fvM6RC)H- z)a=mpafkAFn@t58H!^bZ9Gj*qUAq3x-WlrpC8s5e(@*DoytT9@@?+wul!uG#Vuela zo#Bw?F%U3kU^}_&Ig{BOiEZzp3Jl?3HaNAE}J zD1$zuXndjkDoP9X~wFxdW(LoTy4u|u&`C!jXgf|Fkjp9MMqv` z$*otZ)D)g^#!dU}mMdY|Z@1n^*c$ZmquSMu9RE7sIudnss3KaF3SgH|Fyd14yc53H5{6@%2g`i^v2io>N%8O3Lkvy zIY;WKsJ!KewQuYyGLE~Dl9irtgmd^&A#T<7x{lj}L3&sscR^ZA_3_cx!< KJF&4aSOWlb{I84v diff --git a/docs/open-xml-docs/media/w-comment01.gif b/docs/open-xml-docs/media/w-comment01.gif deleted file mode 100644 index 147a054ce60aaab0073145c9b2037b82d2a382b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 788 zcmZ?wbhEHboXB9rP{6>T_>+Z^fx(PHhXDvcVy*vy;Of=?jEw*9&+!0>GL-BG3hggp zVDOl8|363+Bmm-B-1E{WK|NRo{rvF#x z|G&C>j{69a@qiMHC;{5%I z)*cLr`>$RtDFNCF)Qk_X{dZ_6@X(R!Ke43fWRBJR3oA;z)<&(rv8L?w+p7H!HdOfN z%|8EPOV!!D-S?>=@e!a*}`$gnM-uF*zT?39IRpz_asm5xc7AT9j4W+`|sZ0E%lONtMr>s z3`{aYYz#aP9x`(TD=y)k)o`}AEp+=e!)%6iVXj4Mr8*=o_DXj4x=iDIsqy472ZNNm zMe#HKg!V>O{;E#_hmLe+GD;j%yy(Yl@n3N(4~yudGwRLBulN=Od_N-@w7~nbqQ^(! zr`zfo6QyJv{Ej+ivxc!GTx4pzvC&-ItYxxRW8eagmSd`?&Sb2rSRKV#yozgm+&sax zT*WIzTe`(tA`VE1Ftcz=8VfByyYri``S#FeK2e?ndYe>~7;SVXb+Or<(^cIwN6a{# zQIIj_!O{asMp1LDZckV-d)>7oy|cTUlslJ*dpx?M^~bAIC?#u_$T251lZUO{o13#9 z?^(NT_Gc5`u(|8Da;1FOW&iRjcV)SpeSu2dwOv>3zD9(`#fq;Gv^=7<{+3|Kq5Am1 z2X{Re>U{JPjR?H#k;iGaae>OkoaYLq*Iiy5X$j^jHdIuR^71&<-q*52u~}`|ibq{K m+g?2CHaMp7xX0vL#^YX#XDc4}*?fEPxZiFOQ{b z6C09ry4@jMC8Ch@nA?bMqEp>_O^@BJf8l=5`F_vmdA@%B)EzsI$^bf$0syuu6aoO8 z0B1lmS}jkl9R&;mkX)@50T5Ow)M`2O0|8oDYeRB53~DSntTDB50G7kr6eQPFwI#J$ zLo`UEfdB}>u!bpM2n2y2Z3xmNwK0W4uEC&Yf4uv@M_28YodP;rmJT+Yyq~bEc2o=n zv_#6Ln$w5gXUb<<&jh+uKU(O>98S8U_|WxBuE331mA@!7a1w_`KT+H#D;>p|l%B=9QVpuU5LKWjb8FYY0i z0$#|Ou56JT*PKDHBW>u;=aSGcgPl_7r9RxhkqWgc{o z?F(E_`;pG5C03-pjbf6VGITP!AwOijf0n_sAe_KrdnMfvkIr_J$l)b8DH%5uz9!@Q z3TsQ})R#Epjl8ap6_AO}C%b)TF-gN7g&#vLBw5I>>`$8zuZnLSX8+qCV`cc=0L#pn zaRHX87p;W2 zx~Uibk9;u0xo@I-AKo`ffF}+y{0hHOh2oL0=o;#lG!8Go*`l*@zf=7Kqh?l)o@09S zIe;9sZsN0*;l4J<@+-b$>}lqHYj!D3OhG#*GANXY*yN?j$hM0J&aYb$9GhN3{IzSs zy(`#v7HtDPqJA@GTB?ujjdB&mJbCV6{8SOf-XrcTNSX`3pQr$*3ZDyl%Qw)?*BPe=S5GE7{|Tp0_m(i!I(j=m4fRat|w zAm;h40XZy;c+FEA`fwdlnvl)gIcT9gLNk4Qd9X6r#(MjPGxyxxH=lFOS@w=+EmFDL zP9M-eMkjr2S*hUrxu|B#4E7=i$v5QRhl5_vET^TetUMa3Nw9gHC2`TvfL&?ez7L{!fis)!g4u_}A} z9CoPpXqc&^k8Ck`OO4Url8eXJn;CDyI?-M3z3&?4c8A-@% zS|D|TkWL+-+0m?})l9z_x}khqvO#NDOFGI%k{1^Inpr~d(WENetfr}ABW!27?ok%i z-3@39oW!=k77Kx3Ihx+b_s+1a_TYq~uGR=WY^@<)dDGBu(hN}2guD;1_=F!6>>j6R zs15E`ce)xOdhLx(VS_KPQ;u{v+It~=`Ybk<@kj1z*OT#AZ$A7!y7Ioy!@`3*@1Q#= zdo<^G-Xf;^UHa?6?Rjnldvp&IJGN+TA{faeNaL27=9|M?g%i#JGbuMB&;A{GEv6RV zti#|0&?mn<*2%{baS*pRu+tkaR52;qJE{GBpgeAwxECXr2Q5B?`Du!TAy0zR82+iJ zieIp9@~LI+(+t~a>aSV2G`vTgZacFF)PqbVc(i;irL`WkEnMQ z!kCb^KOO!8G_GWAsHXc-$HNCc7UQXInHNp;W|Ud9)6u0x{`=0Av3`}aACUwa#UpRD zFt_Jw0QkHV7lD&=WWsv-zAWd@Q>X735=>V!=v&U0^L$gRR;?P0Y2{|@jZ@lYv4*#o zoEUV$nyE`(KaE<`K@qrBme&L}mhmx079*{$l&@uhYYr}=h$afZmtSy**(?k_G7yj6e?rr$NV-YB_g?N&;DFA#GcSb3w8oaOodlPY*`` diff --git a/docs/open-xml-docs/media/w-headerref01.gif b/docs/open-xml-docs/media/w-headerref01.gif deleted file mode 100644 index 0aade1bd468aeb2686346f276faf2854383c5b4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9024 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 m$cd!LinPd!#K?@)$c^O4j`YZn1j&#T$&n< Date: Mon, 23 Oct 2023 08:36:42 -0700 Subject: [PATCH 027/193] update regex and pwsh --- samples/migrate-sample.ps1 | 2 +- samples/tools/migrator/Program.cs | 150 +++++++++++++++++++++--------- 2 files changed, 107 insertions(+), 45 deletions(-) diff --git a/samples/migrate-sample.ps1 b/samples/migrate-sample.ps1 index b07ea5f7..2007aa30 100644 --- a/samples/migrate-sample.ps1 +++ b/samples/migrate-sample.ps1 @@ -1,3 +1,3 @@ param($path) -dotnet run "$(PSScriptRoot)\tools\migrator.csproj" -- $path \ No newline at end of file +dotnet run --project "$PSScriptRoot\tools\migrator\migrator.csproj" -- $path \ No newline at end of file diff --git a/samples/tools/migrator/Program.cs b/samples/tools/migrator/Program.cs index bd10fa5b..e43edc06 100644 --- a/samples/tools/migrator/Program.cs +++ b/samples/tools/migrator/Program.cs @@ -1,59 +1,93 @@ -using System.Diagnostics; +using System.IO; +using System.Diagnostics; using System.Text.RegularExpressions; +using Microsoft.VisualBasic; -if (args is not [string path]) +if (args is not [string folder]) { - Console.WriteLine("Must supply a path"); + Console.WriteLine("Must supply a folder"); return; } -var samplesDir = Path.GetFullPath(Path.Combine(path, "..", "..", "samples"))!; +var files = Directory.GetFiles(folder, "*.md"); -if (!Directory.Exists(samplesDir)) +foreach (var path in files) { - Console.WriteLine("Not a valid document"); - return; -} - -var text = File.ReadAllText(path); - -text = Matchers.GetAssemblyDirective().Replace(text, string.Empty); -text = Matchers.HowWorks().Replace(text, "##"); - -var csMatch = Matchers.Csharp().Match(text); -var cs = csMatch.Groups[2].Value; -var vbMatch = Matchers.Vb().Match(text); -var vb = vbMatch.Groups[2].Value; - -var area = Matchers.Area().Match(text).Groups[1].Value; -Console.WriteLine($"Enter name for {Path.GetFileName(path)}"); -string name = Console.ReadLine() ?? throw new InvalidOperationException(); - -name = name.Replace("-", "_"); - -text = text.Replace(csMatch.Groups[1].Value, $""" - ### [CSharp](#tab/cs) + var samplesDir = Path.GetFullPath(Path.Combine(path, "..", "..", "samples"))!; + + if (!Directory.Exists(samplesDir)) + { + Console.WriteLine("Not a valid document"); + return; + } + + var text = File.ReadAllText(path); + + var csMatch = Matchers.Csharp().Match(text); + var csCodeMatches = Matchers.GetCsharpCode(text); + + var vbMatch = Matchers.Vb().Match(text); + var vbCodeMatches = Matchers.GetVbCode(text); + + if (csCodeMatches is null || vbCodeMatches is null || csCodeMatches.Count < 1 || vbCodeMatches.Count < 1) + { + Console.WriteLine("No code found"); + continue; + } + + var cs = string.Concat(csCodeMatches?[0].Value, csCodeMatches?[csCodeMatches.Count - 1].Value.TrimEnd()); + var vb = string.Concat(vbCodeMatches?[0].Value, vbCodeMatches?[vbCodeMatches.Count - 1].Value.TrimEnd()); + var area = Matchers.Area().Match(text).Groups[1].Value; + + if (area is null || area == string.Empty) + { + + if (cs.Contains("SpreadsheetDocument") || text.Contains("SpreadsheetML")) + { + area = "spreadsheet"; + } + else if (cs.Contains("WordprocessingDocument") || text.Contains("WordprocessingML")) + { + area = "word"; + } + else if (cs.Contains("PresentationDocument") || text.Contains("PresentationML")) + { + area = "presentation"; + } + + text = Matchers.GetAssemblyDirective().Replace(text, string.Empty); + text = Matchers.HowWorks().Replace(text, "##"); + + var name = Path.GetFileName(path).Replace("-", "_").Replace(".md", string.Empty); + + if (csMatch is not null && csMatch.Groups is not null && csMatch.Groups[1] is not null && csMatch.Groups[1].Value.Length > 0) + { + text = text.Replace(csMatch.Groups[1].Value, $""" + ### [C#](#tab/cs) [!code-csharp[](../samples/{area}/{name}/cs/Program.cs)] """); - -text = text.Replace(vbMatch.Groups[1].Value, $""" - ### [CSharp](#tab/cs) + } + if (vbMatch is not null && vbMatch.Groups is not null && vbMatch.Groups[1] is not null && vbMatch.Groups[1].Value.Length > 0) + { + text = text.Replace(vbMatch.Groups[1].Value, $""" + ### [Visual Basic](#tab/vb) [!code-vb[](../samples/{area}/{name}/vb/Program.vb)] """); + } -var thisSampleDir = Path.Combine(samplesDir, area, name); + var thisSampleDir = Path.Combine(samplesDir, area, name); -var csDir = Path.Combine(thisSampleDir, "cs"); -Directory.CreateDirectory(csDir); -var csProj = Path.Combine(csDir, $"{name}_cs.csproj"); -File.WriteAllText(csProj, """"""); -File.WriteAllText(Path.Combine(csDir, "Program.cs"), cs); + var csDir = Path.Combine(thisSampleDir, "cs"); + Directory.CreateDirectory(csDir); + var csProj = Path.Combine(csDir, $"{name}_cs.csproj"); + File.WriteAllText(csProj, """"""); + File.WriteAllText(Path.Combine(csDir, "Program.cs"), cs); -var vbDir = Path.Combine(thisSampleDir, "vb"); -Directory.CreateDirectory(vbDir); -var vbProj = Path.Combine(vbDir, $"{name}_vb.vbproj"); -File.WriteAllText(vbProj, """"""); -File.WriteAllText(Path.Combine(vbDir, "Program.vb"), $""" + var vbDir = Path.Combine(thisSampleDir, "vb"); + Directory.CreateDirectory(vbDir); + var vbProj = Path.Combine(vbDir, $"{name}_vb.vbproj"); + File.WriteAllText(vbProj, """"""); + File.WriteAllText(Path.Combine(vbDir, "Program.vb"), $""" Module Program ` Sub Main(args As String())` End Sub` @@ -62,11 +96,13 @@ End Sub` End Module """); -File.WriteAllText(path, text); + File.WriteAllText(path, text); -Process.Start(new ProcessStartInfo("dotnet", $"sln add {csProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); -Process.Start(new ProcessStartInfo("dotnet", $"sln add {vbProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); + Process.Start(new ProcessStartInfo("dotnet", $"sln add {csProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); + Process.Start(new ProcessStartInfo("dotnet", $"sln add {vbProj} --solution-folder {area}") { WorkingDirectory = samplesDir })!.WaitForExit(); + } +} partial class Matchers { [GeneratedRegex("""The following assembly directives.*?```vb.*?```""", RegexOptions.Singleline)] @@ -78,9 +114,35 @@ partial class Matchers [GeneratedRegex(".*(```csharp(.*?)```)", RegexOptions.Singleline)] public static partial Regex Csharp(); + [GeneratedRegex("```csharp(.*?)```", RegexOptions.Singleline)] + public static partial Regex CsharpUsings(); + [GeneratedRegex(".*(```vb(.*?)```)", RegexOptions.Singleline)] public static partial Regex Vb(); + [GeneratedRegex("```vb(.*?)```", RegexOptions.Singleline)] + public static partial Regex VbUsings(); + [GeneratedRegex("./includes/(.*?)/structure\\.md")] public static partial Regex Area(); + + public static MatchCollection? GetCsharpCode(string str) + { + var pattern = @"(?<=```csharp).*?(?=```)"; + + var regex = new Regex(pattern, RegexOptions.Singleline); + var matchCollection = regex.Matches(str); + + return matchCollection; + } + + public static MatchCollection? GetVbCode(string str) + { + var pattern = @"(?<=```vb).*?(?=```)"; + + var regex = new Regex(pattern, RegexOptions.Singleline); + var matchCollection = regex.Matches(str); + + return matchCollection; + } } \ No newline at end of file From 513a3d84bc5b17955dd6cda03c1acf57bc6bde5d Mon Sep 17 00:00:00 2001 From: Michael Bowen Date: Mon, 23 Oct 2023 11:40:40 -0700 Subject: [PATCH 028/193] migrate samples and markdown --- ...add-custom-ui-to-a-spreadsheet-document.md | 83 +-- ...add-tables-to-word-processing-documents.md | 124 +--- ...n-a-table-in-a-word-processing-document.md | 74 +- ...fill-color-of-a-shape-in-a-presentation.md | 99 +-- ...ientation-of-a-word-processing-document.md | 192 +---- ...t-from-the-docm-to-the-docx-file-format.md | 100 +-- ...ation-document-by-providing-a-file-name.md | 621 +--------------- ...ter-style-to-a-word-processing-document.md | 121 +-- ...aph-style-to-a-word-processing-document.md | 167 +---- ...ic-author-in-a-word-processing-document.md | 155 +--- ...-styles-from-a-word-processing-document.md | 82 +-- ...comment-into-a-word-processing-document.md | 124 +--- ...sert-a-new-worksheet-into-a-spreadsheet.md | 149 +--- ...picture-into-a-word-processing-document.md | 154 +--- ...a-table-into-a-word-processing-document.md | 131 +--- ...rge-two-adjacent-cells-in-a-spreadsheet.md | 422 +---------- ...readsheet-document-for-read-only-access.md | 61 +- ...en-a-spreadsheet-document-from-a-stream.md | 91 +-- ...w-to-parse-and-read-a-large-spreadsheet.md | 93 +-- ...en-text-from-a-word-processing-document.md | 81 +-- ...footers-from-a-word-processing-document.md | 107 +-- ...he-header-in-a-word-processing-document.md | 90 +-- ...les-parts-in-a-word-processing-document.md | 178 +---- ...heme-part-in-a-word-processing-document.md | 62 +- ...ry-of-all-named-ranges-in-a-spreadsheet.md | 60 +- ...hidden-rows-or-columns-in-a-spreadsheet.md | 109 +-- ...-the-hidden-worksheets-in-a-spreadsheet.md | 51 +- ...list-of-the-worksheets-in-a-spreadsheet.md | 77 +- ...-values-from-a-word-processing-document.md | 63 +- ...omments-from-a-word-processing-document.md | 54 +- ...er-of-slides-in-a-presentation-document.md | 65 +- ...ve-the-values-of-cells-in-a-spreadsheet.md | 170 +---- ...rch-and-replace-text-in-a-document-part.md | 95 +-- ...-property-in-a-word-processing-document.md | 257 +------ docs/how-to-set-the-font-for-a-text-run.md | 57 +- ...-to-validate-a-word-processing-document.md | 149 +--- docs/structure-of-a-spreadsheetml-document.md | 63 +- ...tructure-of-a-wordprocessingml-document.md | 40 +- docs/working-with-comments.md | 87 +-- docs/working-with-handout-master-slides.md | 74 +- docs/working-with-notes-slides.md | 49 +- docs/working-with-paragraphs.md | 37 +- docs/working-with-presentation-slides.md | 26 +- docs/working-with-presentations.md | 68 +- docs/working-with-runs.md | 42 +- docs/working-with-sheets.md | 107 +-- docs/working-with-slide-layouts.md | 48 +- docs/working-with-slide-masters.md | 68 +- docs/working-with-the-shared-string-table.md | 61 +- .../cs/Program.cs | 46 ++ ...lor_of_a_shape_in_a_presentation_cs.csproj | 1 + .../vb/Program.vb | 47 ++ ...lor_of_a_shape_in_a_presentation_vb.vbproj | 1 + .../cs/Program.cs | 277 +++++++ ...ocument_by_providing_a_file_name_cs.csproj | 1 + .../vb/Program.vb | 357 +++++++++ ...ocument_by_providing_a_file_name_vb.vbproj | 1 + .../cs/Program.cs | 36 + ...lides_in_a_presentation_document_cs.csproj | 1 + .../vb/Program.vb | 34 + ...lides_in_a_presentation_document_vb.vbproj | 1 + .../working_with_comments/cs/Program.cs | 80 ++ .../cs/working_with_comments_cs.csproj | 1 + .../working_with_comments/vb/Program.vb | 87 +++ .../vb/working_with_comments_vb.vbproj | 1 + .../cs/Program.cs | 72 ++ ...rking_with_handout_master_slides_cs.csproj | 1 + .../vb/Program.vb | 69 ++ ...rking_with_handout_master_slides_vb.vbproj | 1 + .../working_with_notes_slides/cs/Program.cs | 50 ++ .../cs/working_with_notes_slides_cs.csproj | 1 + .../working_with_notes_slides/vb/Program.vb | 41 ++ .../vb/working_with_notes_slides_vb.vbproj | 1 + .../cs/Program.cs | 36 + ...working_with_presentation_slides_cs.csproj | 1 + .../vb/Program.vb | 32 + ...working_with_presentation_slides_vb.vbproj | 1 + .../working_with_presentations/cs/Program.cs | 50 ++ .../cs/working_with_presentations_cs.csproj | 1 + .../working_with_presentations/vb/Program.vb | 79 ++ .../vb/working_with_presentations_vb.vbproj | 1 + .../working_with_slide_layouts/cs/Program.cs | 50 ++ .../cs/working_with_slide_layouts_cs.csproj | 1 + .../working_with_slide_layouts/vb/Program.vb | 39 + .../vb/working_with_slide_layouts_vb.vbproj | 1 + .../working_with_slide_masters/cs/Program.cs | 54 ++ .../cs/working_with_slide_masters_cs.csproj | 1 + .../working_with_slide_masters/vb/Program.vb | 75 ++ .../vb/working_with_slide_masters_vb.vbproj | 1 + samples/samples.sln | 688 ++++++++++++++++++ .../cs/Program.cs | 42 ++ ...tom_ui_to_a_spreadsheet_document_cs.csproj | 1 + .../vb/Program.vb | 46 ++ ...tom_ui_to_a_spreadsheet_document_vb.vbproj | 1 + .../cs/Program.cs | 33 + ...new_worksheet_into_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 41 ++ ...new_worksheet_into_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 146 ++++ ..._adjacent_cells_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 130 ++++ ..._adjacent_cells_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 18 + ...et_document_for_read_only_access_cs.csproj | 1 + .../vb/Program.vb | 21 + ...et_document_for_read_only_access_vb.vbproj | 1 + .../cs/Program.cs | 40 + ...readsheet_document_from_a_stream_cs.csproj | 1 + .../vb/Program.vb | 45 ++ ...readsheet_document_from_a_stream_vb.vbproj | 1 + .../cs/Program.cs | 53 ++ ...rse_and_read_a_large_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 51 ++ ...rse_and_read_a_large_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 32 + ...ll_named_ranges_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 35 + ...ll_named_ranges_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 61 ++ ...rows_or_columns_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 58 ++ ...rows_or_columns_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 29 + ...dden_worksheets_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 30 + ...dden_worksheets_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 43 ++ ..._the_worksheets_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 40 + ..._the_worksheets_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 92 +++ ...values_of_cells_in_a_spreadsheet_cs.csproj | 1 + .../vb/Program.vb | 83 +++ ...values_of_cells_in_a_spreadsheet_vb.vbproj | 1 + .../cs/Program.cs | 54 ++ ...ture_of_a_spreadsheetml_document_cs.csproj | 1 + .../vb/Program.vb | 65 ++ ...ture_of_a_spreadsheetml_document_vb.vbproj | 1 + .../working_with_sheets/cs/Program.cs | 104 +++ .../cs/working_with_sheets_cs.csproj | 1 + .../working_with_sheets/vb/Program.vb | 103 +++ .../vb/working_with_sheets_vb.vbproj | 1 + .../cs/Program.cs | 60 ++ ...ing_with_the_shared_string_table_cs.csproj | 1 + .../vb/Program.vb | 55 ++ ...ing_with_the_shared_string_table_vb.vbproj | 1 + .../cs/Program.cs | 71 ++ ...les_to_word_processing_documents_cs.csproj | 1 + .../vb/Program.vb | 60 ++ ...les_to_word_processing_documents_vb.vbproj | 1 + .../cs/Program.cs | 34 + ...le_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 35 + ...le_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 111 +++ ...on_of_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 89 +++ ...on_of_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 52 ++ ...the_docm_to_the_docx_file_format_cs.csproj | 1 + .../vb/Program.vb | 55 ++ ...the_docm_to_the_docx_file_format_vb.vbproj | 1 + .../cs/Program.cs | 61 ++ ...le_to_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 68 ++ ...le_to_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 83 +++ ...le_to_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 91 +++ ...le_to_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 84 +++ ...or_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 79 ++ ...or_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 45 ++ ..._from_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 46 ++ ..._from_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 64 ++ ..._into_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 54 ++ ..._into_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 76 ++ ..._into_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 73 ++ ..._into_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 67 ++ ..._into_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 58 ++ ..._into_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 37 + ..._from_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 38 + ..._from_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 57 ++ ..._from_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 58 ++ ..._from_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 52 ++ ...er_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 47 ++ ...er_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 92 +++ ...ts_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 94 +++ ...ts_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 26 + ...rt_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 30 + ...rt_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 33 + ..._from_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 34 + ..._from_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 22 + ..._from_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 26 + ..._from_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 25 + ..._replace_text_in_a_document_part_cs.csproj | 1 + .../vb/Program.vb | 30 + ..._replace_text_in_a_document_part_vb.vbproj | 1 + .../cs/Program.cs | 143 ++++ ...ty_in_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 125 ++++ ...ty_in_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 26 + ...w_to_set_the_font_for_a_text_run_cs.csproj | 1 + .../vb/Program.vb | 25 + ...w_to_set_the_font_for_a_text_run_vb.vbproj | 1 + .../cs/Program.cs | 77 ++ ...idate_a_word_processing_document_cs.csproj | 1 + .../vb/Program.vb | 66 ++ ...idate_a_word_processing_document_vb.vbproj | 1 + .../cs/Program.cs | 36 + ...e_of_a_wordprocessingml_document_cs.csproj | 1 + .../vb/Program.vb | 37 + ...e_of_a_wordprocessingml_document_vb.vbproj | 1 + .../working_with_paragraphs/cs/Program.cs | 32 + .../cs/working_with_paragraphs_cs.csproj | 1 + .../working_with_paragraphs/vb/Program.vb | 35 + .../vb/working_with_paragraphs_vb.vbproj | 1 + samples/word/working_with_runs/cs/Program.cs | 38 + .../cs/working_with_runs_cs.csproj | 1 + samples/word/working_with_runs/vb/Program.vb | 39 + .../vb/working_with_runs_vb.vbproj | 1 + 246 files changed, 7041 insertions(+), 5340 deletions(-) create mode 100644 samples/presentation/how_to_change_the_fill_color_of_a_shape_in_a_presentation/cs/Program.cs create mode 100644 samples/presentation/how_to_change_the_fill_color_of_a_shape_in_a_presentation/cs/how_to_change_the_fill_color_of_a_shape_in_a_presentation_cs.csproj create mode 100644 samples/presentation/how_to_change_the_fill_color_of_a_shape_in_a_presentation/vb/Program.vb create mode 100644 samples/presentation/how_to_change_the_fill_color_of_a_shape_in_a_presentation/vb/how_to_change_the_fill_color_of_a_shape_in_a_presentation_vb.vbproj create mode 100644 samples/presentation/how_to_create_a_presentation_document_by_providing_a_file_name/cs/Program.cs create mode 100644 samples/presentation/how_to_create_a_presentation_document_by_providing_a_file_name/cs/how_to_create_a_presentation_document_by_providing_a_file_name_cs.csproj create mode 100644 samples/presentation/how_to_create_a_presentation_document_by_providing_a_file_name/vb/Program.vb create mode 100644 samples/presentation/how_to_create_a_presentation_document_by_providing_a_file_name/vb/how_to_create_a_presentation_document_by_providing_a_file_name_vb.vbproj create mode 100644 samples/presentation/how_to_retrieve_the_number_of_slides_in_a_presentation_document/cs/Program.cs create mode 100644 samples/presentation/how_to_retrieve_the_number_of_slides_in_a_presentation_document/cs/how_to_retrieve_the_number_of_slides_in_a_presentation_document_cs.csproj create mode 100644 samples/presentation/how_to_retrieve_the_number_of_slides_in_a_presentation_document/vb/Program.vb create mode 100644 samples/presentation/how_to_retrieve_the_number_of_slides_in_a_presentation_document/vb/how_to_retrieve_the_number_of_slides_in_a_presentation_document_vb.vbproj create mode 100644 samples/presentation/working_with_comments/cs/Program.cs create mode 100644 samples/presentation/working_with_comments/cs/working_with_comments_cs.csproj create mode 100644 samples/presentation/working_with_comments/vb/Program.vb create mode 100644 samples/presentation/working_with_comments/vb/working_with_comments_vb.vbproj create mode 100644 samples/presentation/working_with_handout_master_slides/cs/Program.cs create mode 100644 samples/presentation/working_with_handout_master_slides/cs/working_with_handout_master_slides_cs.csproj create mode 100644 samples/presentation/working_with_handout_master_slides/vb/Program.vb create mode 100644 samples/presentation/working_with_handout_master_slides/vb/working_with_handout_master_slides_vb.vbproj create mode 100644 samples/presentation/working_with_notes_slides/cs/Program.cs create mode 100644 samples/presentation/working_with_notes_slides/cs/working_with_notes_slides_cs.csproj create mode 100644 samples/presentation/working_with_notes_slides/vb/Program.vb create mode 100644 samples/presentation/working_with_notes_slides/vb/working_with_notes_slides_vb.vbproj create mode 100644 samples/presentation/working_with_presentation_slides/cs/Program.cs create mode 100644 samples/presentation/working_with_presentation_slides/cs/working_with_presentation_slides_cs.csproj create mode 100644 samples/presentation/working_with_presentation_slides/vb/Program.vb create mode 100644 samples/presentation/working_with_presentation_slides/vb/working_with_presentation_slides_vb.vbproj create mode 100644 samples/presentation/working_with_presentations/cs/Program.cs create mode 100644 samples/presentation/working_with_presentations/cs/working_with_presentations_cs.csproj create mode 100644 samples/presentation/working_with_presentations/vb/Program.vb create mode 100644 samples/presentation/working_with_presentations/vb/working_with_presentations_vb.vbproj create mode 100644 samples/presentation/working_with_slide_layouts/cs/Program.cs create mode 100644 samples/presentation/working_with_slide_layouts/cs/working_with_slide_layouts_cs.csproj create mode 100644 samples/presentation/working_with_slide_layouts/vb/Program.vb create mode 100644 samples/presentation/working_with_slide_layouts/vb/working_with_slide_layouts_vb.vbproj create mode 100644 samples/presentation/working_with_slide_masters/cs/Program.cs create mode 100644 samples/presentation/working_with_slide_masters/cs/working_with_slide_masters_cs.csproj create mode 100644 samples/presentation/working_with_slide_masters/vb/Program.vb create mode 100644 samples/presentation/working_with_slide_masters/vb/working_with_slide_masters_vb.vbproj create mode 100644 samples/spreadsheet/how_to_add_custom_ui_to_a_spreadsheet_document/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_add_custom_ui_to_a_spreadsheet_document/cs/how_to_add_custom_ui_to_a_spreadsheet_document_cs.csproj create mode 100644 samples/spreadsheet/how_to_add_custom_ui_to_a_spreadsheet_document/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_add_custom_ui_to_a_spreadsheet_document/vb/how_to_add_custom_ui_to_a_spreadsheet_document_vb.vbproj create mode 100644 samples/spreadsheet/how_to_insert_a_new_worksheet_into_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_insert_a_new_worksheet_into_a_spreadsheet/cs/how_to_insert_a_new_worksheet_into_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_insert_a_new_worksheet_into_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_insert_a_new_worksheet_into_a_spreadsheet/vb/how_to_insert_a_new_worksheet_into_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_merge_two_adjacent_cells_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_merge_two_adjacent_cells_in_a_spreadsheet/cs/how_to_merge_two_adjacent_cells_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_merge_two_adjacent_cells_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_merge_two_adjacent_cells_in_a_spreadsheet/vb/how_to_merge_two_adjacent_cells_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_for_read_only_access/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_for_read_only_access/cs/how_to_open_a_spreadsheet_document_for_read_only_access_cs.csproj create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_for_read_only_access/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_for_read_only_access/vb/how_to_open_a_spreadsheet_document_for_read_only_access_vb.vbproj create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_from_a_stream/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_from_a_stream/cs/how_to_open_a_spreadsheet_document_from_a_stream_cs.csproj create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_from_a_stream/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_open_a_spreadsheet_document_from_a_stream/vb/how_to_open_a_spreadsheet_document_from_a_stream_vb.vbproj create mode 100644 samples/spreadsheet/how_to_parse_and_read_a_large_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_parse_and_read_a_large_spreadsheet/cs/how_to_parse_and_read_a_large_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_parse_and_read_a_large_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_parse_and_read_a_large_spreadsheet/vb/how_to_parse_and_read_a_large_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet/cs/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet/vb/how_to_retrieve_a_dictionary_of_all_named_ranges_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet/cs/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet/vb/how_to_retrieve_a_list_of_the_hidden_rows_or_columns_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet/cs/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet/vb/how_to_retrieve_a_list_of_the_hidden_worksheets_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet/cs/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet/vb/how_to_retrieve_a_list_of_the_worksheets_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/how_to_retrieve_the_values_of_cells_in_a_spreadsheet/cs/Program.cs create mode 100644 samples/spreadsheet/how_to_retrieve_the_values_of_cells_in_a_spreadsheet/cs/how_to_retrieve_the_values_of_cells_in_a_spreadsheet_cs.csproj create mode 100644 samples/spreadsheet/how_to_retrieve_the_values_of_cells_in_a_spreadsheet/vb/Program.vb create mode 100644 samples/spreadsheet/how_to_retrieve_the_values_of_cells_in_a_spreadsheet/vb/how_to_retrieve_the_values_of_cells_in_a_spreadsheet_vb.vbproj create mode 100644 samples/spreadsheet/structure_of_a_spreadsheetml_document/cs/Program.cs create mode 100644 samples/spreadsheet/structure_of_a_spreadsheetml_document/cs/structure_of_a_spreadsheetml_document_cs.csproj create mode 100644 samples/spreadsheet/structure_of_a_spreadsheetml_document/vb/Program.vb create mode 100644 samples/spreadsheet/structure_of_a_spreadsheetml_document/vb/structure_of_a_spreadsheetml_document_vb.vbproj create mode 100644 samples/spreadsheet/working_with_sheets/cs/Program.cs create mode 100644 samples/spreadsheet/working_with_sheets/cs/working_with_sheets_cs.csproj create mode 100644 samples/spreadsheet/working_with_sheets/vb/Program.vb create mode 100644 samples/spreadsheet/working_with_sheets/vb/working_with_sheets_vb.vbproj create mode 100644 samples/spreadsheet/working_with_the_shared_string_table/cs/Program.cs create mode 100644 samples/spreadsheet/working_with_the_shared_string_table/cs/working_with_the_shared_string_table_cs.csproj create mode 100644 samples/spreadsheet/working_with_the_shared_string_table/vb/Program.vb create mode 100644 samples/spreadsheet/working_with_the_shared_string_table/vb/working_with_the_shared_string_table_vb.vbproj create mode 100644 samples/word/how_to_add_tables_to_word_processing_documents/cs/Program.cs create mode 100644 samples/word/how_to_add_tables_to_word_processing_documents/cs/how_to_add_tables_to_word_processing_documents_cs.csproj create mode 100644 samples/word/how_to_add_tables_to_word_processing_documents/vb/Program.vb create mode 100644 samples/word/how_to_add_tables_to_word_processing_documents/vb/how_to_add_tables_to_word_processing_documents_vb.vbproj create mode 100644 samples/word/how_to_change_text_in_a_table_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_change_text_in_a_table_in_a_word_processing_document/cs/how_to_change_text_in_a_table_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_change_text_in_a_table_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_change_text_in_a_table_in_a_word_processing_document/vb/how_to_change_text_in_a_table_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_change_the_print_orientation_of_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_change_the_print_orientation_of_a_word_processing_document/cs/how_to_change_the_print_orientation_of_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_change_the_print_orientation_of_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_change_the_print_orientation_of_a_word_processing_document/vb/how_to_change_the_print_orientation_of_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format/cs/Program.cs create mode 100644 samples/word/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format/cs/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format_cs.csproj create mode 100644 samples/word/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format/vb/Program.vb create mode 100644 samples/word/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format/vb/how_to_convert_a_word_processing_document_from_the_docm_to_the_docx_file_format_vb.vbproj create mode 100644 samples/word/how_to_create_and_add_a_character_style_to_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_create_and_add_a_character_style_to_a_word_processing_document/cs/how_to_create_and_add_a_character_style_to_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_create_and_add_a_character_style_to_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_create_and_add_a_character_style_to_a_word_processing_document/vb/how_to_create_and_add_a_character_style_to_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document/cs/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document/vb/how_to_create_and_add_a_paragraph_style_to_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document/cs/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document/vb/how_to_delete_comments_by_all_or_a_specific_author_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_extract_styles_from_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_extract_styles_from_a_word_processing_document/cs/how_to_extract_styles_from_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_extract_styles_from_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_extract_styles_from_a_word_processing_document/vb/how_to_extract_styles_from_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_insert_a_comment_into_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_insert_a_comment_into_a_word_processing_document/cs/how_to_insert_a_comment_into_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_insert_a_comment_into_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_insert_a_comment_into_a_word_processing_document/vb/how_to_insert_a_comment_into_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_insert_a_picture_into_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_insert_a_picture_into_a_word_processing_document/cs/how_to_insert_a_picture_into_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_insert_a_picture_into_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_insert_a_picture_into_a_word_processing_document/vb/how_to_insert_a_picture_into_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_insert_a_table_into_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_insert_a_table_into_a_word_processing_document/cs/how_to_insert_a_table_into_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_insert_a_table_into_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_insert_a_table_into_a_word_processing_document/vb/how_to_insert_a_table_into_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_remove_hidden_text_from_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_remove_hidden_text_from_a_word_processing_document/cs/how_to_remove_hidden_text_from_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_remove_hidden_text_from_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_remove_hidden_text_from_a_word_processing_document/vb/how_to_remove_hidden_text_from_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_remove_the_headers_and_footers_from_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_remove_the_headers_and_footers_from_a_word_processing_document/cs/how_to_remove_the_headers_and_footers_from_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_remove_the_headers_and_footers_from_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_remove_the_headers_and_footers_from_a_word_processing_document/vb/how_to_remove_the_headers_and_footers_from_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_replace_the_header_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_replace_the_header_in_a_word_processing_document/cs/how_to_replace_the_header_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_replace_the_header_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_replace_the_header_in_a_word_processing_document/vb/how_to_replace_the_header_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_replace_the_styles_parts_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_replace_the_styles_parts_in_a_word_processing_document/cs/how_to_replace_the_styles_parts_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_replace_the_styles_parts_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_replace_the_styles_parts_in_a_word_processing_document/vb/how_to_replace_the_styles_parts_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_replace_the_theme_part_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_replace_the_theme_part_in_a_word_processing_document/cs/how_to_replace_the_theme_part_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_replace_the_theme_part_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_replace_the_theme_part_in_a_word_processing_document/vb/how_to_replace_the_theme_part_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_retrieve_application_property_values_from_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_retrieve_application_property_values_from_a_word_processing_document/cs/how_to_retrieve_application_property_values_from_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_retrieve_application_property_values_from_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_retrieve_application_property_values_from_a_word_processing_document/vb/how_to_retrieve_application_property_values_from_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_retrieve_comments_from_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_retrieve_comments_from_a_word_processing_document/cs/how_to_retrieve_comments_from_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_retrieve_comments_from_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_retrieve_comments_from_a_word_processing_document/vb/how_to_retrieve_comments_from_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_search_and_replace_text_in_a_document_part/cs/Program.cs create mode 100644 samples/word/how_to_search_and_replace_text_in_a_document_part/cs/how_to_search_and_replace_text_in_a_document_part_cs.csproj create mode 100644 samples/word/how_to_search_and_replace_text_in_a_document_part/vb/Program.vb create mode 100644 samples/word/how_to_search_and_replace_text_in_a_document_part/vb/how_to_search_and_replace_text_in_a_document_part_vb.vbproj create mode 100644 samples/word/how_to_set_a_custom_property_in_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_set_a_custom_property_in_a_word_processing_document/cs/how_to_set_a_custom_property_in_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_set_a_custom_property_in_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_set_a_custom_property_in_a_word_processing_document/vb/how_to_set_a_custom_property_in_a_word_processing_document_vb.vbproj create mode 100644 samples/word/how_to_set_the_font_for_a_text_run/cs/Program.cs create mode 100644 samples/word/how_to_set_the_font_for_a_text_run/cs/how_to_set_the_font_for_a_text_run_cs.csproj create mode 100644 samples/word/how_to_set_the_font_for_a_text_run/vb/Program.vb create mode 100644 samples/word/how_to_set_the_font_for_a_text_run/vb/how_to_set_the_font_for_a_text_run_vb.vbproj create mode 100644 samples/word/how_to_validate_a_word_processing_document/cs/Program.cs create mode 100644 samples/word/how_to_validate_a_word_processing_document/cs/how_to_validate_a_word_processing_document_cs.csproj create mode 100644 samples/word/how_to_validate_a_word_processing_document/vb/Program.vb create mode 100644 samples/word/how_to_validate_a_word_processing_document/vb/how_to_validate_a_word_processing_document_vb.vbproj create mode 100644 samples/word/structure_of_a_wordprocessingml_document/cs/Program.cs create mode 100644 samples/word/structure_of_a_wordprocessingml_document/cs/structure_of_a_wordprocessingml_document_cs.csproj create mode 100644 samples/word/structure_of_a_wordprocessingml_document/vb/Program.vb create mode 100644 samples/word/structure_of_a_wordprocessingml_document/vb/structure_of_a_wordprocessingml_document_vb.vbproj create mode 100644 samples/word/working_with_paragraphs/cs/Program.cs create mode 100644 samples/word/working_with_paragraphs/cs/working_with_paragraphs_cs.csproj create mode 100644 samples/word/working_with_paragraphs/vb/Program.vb create mode 100644 samples/word/working_with_paragraphs/vb/working_with_paragraphs_vb.vbproj create mode 100644 samples/word/working_with_runs/cs/Program.cs create mode 100644 samples/word/working_with_runs/cs/working_with_runs_cs.csproj create mode 100644 samples/word/working_with_runs/vb/Program.vb create mode 100644 samples/word/working_with_runs/vb/working_with_runs_vb.vbproj diff --git a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md index de4945af..f69eef40 100644 --- a/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md +++ b/docs/how-to-add-custom-ui-to-a-spreadsheet-document.md @@ -169,86 +169,11 @@ Given a reference to the ribbon extensibility part, the following code finishes The following is the complete **AddCustomUI** code sample in C\# and Visual Basic. -```csharp - static public void AddCustomUI(string fileName, string customUIContent) - { - // Add a custom UI part to the document. - // Use this sample XML to test: - // - // - // - // - // - //