From 066149e6174dcbe6bc6622a2752f1bb3ce23eff0 Mon Sep 17 00:00:00 2001 From: p-kaczynski Date: Tue, 1 Sep 2020 13:57:09 +0100 Subject: [PATCH 001/275] Update how-to-insert-a-picture-into-a-word-processing-document.md The current code contains a bug that makes the document not open in MS Word. This single error (`https` instead of `http` in URI) causes the document to be unopenable in any tested Word product (Word for Office 365 Win/macOS/iOS, MS Word Professional 2016). Interestingly it does open fine in LibreOffice and others. --- 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 481797ad..0fa56cd7 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 @@ -185,7 +185,7 @@ Then, append the reference to the body. The element should be in a [Run](https:/ new A.PresetGeometry( new A.AdjustValueList() ) { Preset = A.ShapeTypeValues.Rectangle })) - ) { Uri = "https://schemas.openxmlformats.org/drawingml/2006/picture" }) + ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" }) ) { DistanceFromTop = (UInt32Value)0U, From 25dc20137a6ae50c4938bb4090bc6ca9be0fed7d Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 16 Mar 2021 10:53:43 -0700 Subject: [PATCH 002/275] Update docfx.json missing final bracket } --- docs/docfx.json | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docfx.json b/docs/docfx.json index 65e43111..087c4e47 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -51,3 +51,4 @@ "dest": "open-xml-docs", "markdownEngineName": "markdig" } +} From 005932729c1aa6a3be0236449e7f0a17129a6c53 Mon Sep 17 00:00:00 2001 From: xchimera Date: Fri, 28 May 2021 15:22:07 +0200 Subject: [PATCH 003/275] Update how-to-insert-a-picture-into-a-word-processing-document.md using https makes the document invalid in Word --- ...how-to-insert-a-picture-into-a-word-processing-document.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 0fa56cd7..5e8955b0 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 @@ -331,7 +331,7 @@ The following is the complete sample code in both C\# and Visual Basic. new A.PresetGeometry( new A.AdjustValueList() ) { Preset = A.ShapeTypeValues.Rectangle })) - ) { Uri = "https://schemas.openxmlformats.org/drawingml/2006/picture" }) + ) { Uri = "http://schemas.openxmlformats.org/drawingml/2006/picture" }) ) { DistanceFromTop = (UInt32Value)0U, DistanceFromBottom = (UInt32Value)0U, DistanceFromLeft = (UInt32Value)0U, @@ -391,7 +391,7 @@ The following is the complete sample code in both C\# and Visual Basic. ) 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 7dc6d5b18ac6736574e61c91135aa3f48e2ae0d7 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 11:01:49 -0700 Subject: [PATCH 004/275] Fix broken link Bad link to open xml sdk 2.5 download --- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- ...pply-a-style-to-a-paragraph-in-a-word-processing-document.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 +- ...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 +- ...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 +- ...e-the-headers-and-footers-from-a-word-processing-document.md | 2 +- docs/how-to-replace-the-header-in-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 +- ...retrieve-a-list-of-the-hidden-worksheets-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 +- ...-retrieve-the-number-of-slides-in-a-presentation-document.md | 2 +- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 2 +- ...ow-to-set-a-custom-property-in-a-word-processing-document.md | 2 +- docs/open-xml-sdk.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 8d8d5bd5..018b65a0 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -21,7 +21,7 @@ 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 ffecf1dc..ff473833 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 @@ -19,7 +19,7 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). 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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 97ce414b..9c08aa20 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 @@ -23,7 +23,7 @@ Office to programmatically set the print orientation of a Microsoft Word **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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 27a657a3..c9c443bd 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 @@ -24,7 +24,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 dc1d8cec..c29659b2 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 @@ -20,7 +20,7 @@ localization_priority: Priority This topic shows how to use the classes in the Open XML SDK 2.5 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 931e89a1..353b11b0 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 @@ -22,7 +22,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 bfa85ea2..0d5bf112 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 @@ -23,7 +23,7 @@ processing document. It contains an example 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must also explicitly reference the following assemblies in your project: - WindowsBase 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 a2c16094..fd0d3504 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 a5bdefcb..e415fd62 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 @@ -24,7 +24,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 4e9a9ad7..d21fcb93 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must then explicitly reference the following assemblies in your project. - WindowsBase 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 9926f537..ef31fd33 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 @@ -20,7 +20,7 @@ This topic shows how to use the classes in the Open XML SDK 2.5 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 032c7e3f..580bd1cc 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 @@ -23,7 +23,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 7385a19d..1f74080d 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 @@ -22,7 +22,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 c622f558..111109d0 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 @@ -22,7 +22,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 a1c748f5..286febe3 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 6756bc4e..aeac5079 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 4420d4b9..430dc1d4 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 d30e6987..b5358409 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 @@ -23,7 +23,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 aeaadd17..e6c7f29e 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 8991c86a..159f1b9f 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 @@ -21,7 +21,7 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 315ba745..6ec5cc94 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -53,7 +53,7 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. ## See also -- [Open XML SDK 2.5 for Microsoft Office](https://www.microsoft.com/download/details.aspx?id=30425) +- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/Open-XML-SDK/2.5.0) - [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) From f012548f17dbb3e8202b9fc50221d49baeaa8bf8 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 11:07:47 -0700 Subject: [PATCH 005/275] Revert "Fix broken link" This reverts commit 7dc6d5b18ac6736574e61c91135aa3f48e2ae0d7. --- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- ...pply-a-style-to-a-paragraph-in-a-word-processing-document.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 +- ...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 +- ...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 +- ...e-the-headers-and-footers-from-a-word-processing-document.md | 2 +- docs/how-to-replace-the-header-in-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 +- ...retrieve-a-list-of-the-hidden-worksheets-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 +- ...-retrieve-the-number-of-slides-in-a-presentation-document.md | 2 +- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 2 +- ...ow-to-set-a-custom-property-in-a-word-processing-document.md | 2 +- docs/open-xml-sdk.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 018b65a0..8d8d5bd5 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -21,7 +21,7 @@ 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 ff473833..ffecf1dc 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 @@ -19,7 +19,7 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 9c08aa20..97ce414b 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 @@ -23,7 +23,7 @@ Office to programmatically set the print orientation of a Microsoft Word **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/Open-XML-SDK/2.5.0). You +2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 c9c443bd..27a657a3 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 @@ -24,7 +24,7 @@ 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/Open-XML-SDK/2.5.0). You +2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 c29659b2..dc1d8cec 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 @@ -20,7 +20,7 @@ localization_priority: Priority This topic shows how to use the classes in the Open XML SDK 2.5 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 353b11b0..931e89a1 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 0d5bf112..bfa85ea2 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 @@ -23,7 +23,7 @@ processing document. It contains an example 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/Open-XML-SDK/2.5.0). You +2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must also explicitly reference the following assemblies in your project: - WindowsBase 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 fd0d3504..a2c16094 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 e415fd62..a5bdefcb 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 @@ -24,7 +24,7 @@ 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/Open-XML-SDK/2.5.0). You +2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 d21fcb93..4e9a9ad7 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must then explicitly reference the following assemblies in your project. - WindowsBase 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 ef31fd33..9926f537 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 @@ -20,7 +20,7 @@ This topic shows how to use the classes in the Open XML SDK 2.5 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 580bd1cc..032c7e3f 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 @@ -23,7 +23,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 1f74080d..7385a19d 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 111109d0..c622f558 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 286febe3..a1c748f5 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 aeac5079..6756bc4e 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 430dc1d4..4420d4b9 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 b5358409..d30e6987 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 @@ -23,7 +23,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 e6c7f29e..aeaadd17 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase 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 159f1b9f..8991c86a 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 @@ -21,7 +21,7 @@ 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/Open-XML-SDK/2.5.0). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). You must explicitly reference the following assemblies in your project: - WindowsBase diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 6ec5cc94..315ba745 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -53,7 +53,7 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. ## See also -- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/Open-XML-SDK/2.5.0) +- [Open XML SDK 2.5 for Microsoft Office](https://www.microsoft.com/download/details.aspx?id=30425) - [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) From 6e1f5c1fa22276318942078b6d324dcb76db5b02 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 11:40:29 -0700 Subject: [PATCH 006/275] Update how-to-add-tables-to-word-processing-documents.md --- ...add-tables-to-word-processing-documents.md | 89 ++++++------------- 1 file changed, 25 insertions(+), 64 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 8d8d5bd5..5675cc8e 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -11,17 +11,15 @@ ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # 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 2.5 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase @@ -47,9 +45,7 @@ the code in this topic. ----------------------------------------------------------------------------- ## AddTable Method -You can use the **AddTable** method to add a -simple table to a word processing document. The **AddTable** method accepts two parameters, -indicating the following: +You can use the **AddTable** method to add a simple table to a word processing document. The **AddTable** method accepts two parameters, indicating the following: - The name of the document to modify (string). @@ -68,10 +64,7 @@ indicating the following: ----------------------------------------------------------------------------- ## Calling the AddTable Method -The **AddTable** method modifies the document -you specify, adding a table that contains the information in the -two-dimensional array that you provide. To call the method, pass both of -the parameter values, as shown in the following code. +The **AddTable** method modifies the document you specify, adding a table that contains the information in the two-dimensional array that you provide. To call the method, pass both of the parameter values, as shown in the following code. ```csharp const string fileName = @"C:\Users\Public\Documents\AddTable.docx"; @@ -95,11 +88,8 @@ the parameter values, as shown in the following code. -------------------------------------------------------------------------------- ## How the Code Works -The following code starts by opening the document, using the [WordprocessingDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method and -indicating that the document should be open for read/write access (the -final **true** parameter value). Next the code -retrieves a reference to the root element of the main document part, -using the [Document](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.maindocumentpart.document.aspx) property of the [MainDocumentPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.aspx) of the word processing +The following code starts by opening the document, using the [WordprocessingDocument.Open](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open?view=openxml-2.8.1) method and +indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document?view=openxml-2.8.1) property of the [MainDocumentPart](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart?view=openxml-2.8.1) of the word processing document. ```csharp @@ -120,10 +110,7 @@ document. ----------------------------------------------------------------------------- ## Creating the Table Object and Setting Its Properties -Before you can insert a table into a document, you must create the [Table](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.table.aspx) object and set its properties. To set -a table's properties, you create and supply values for a [TableProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.aspx) object. The **TableProperties** class provides many -table-oriented properties, like [Shading](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.shading.aspx), [TableBorders](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.tableborders.aspx), [TableCaption](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.tablecaption.aspx), [TableCellSpacing](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing.aspx), [TableJustification](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.tablejustification.aspx), and more. The sample -method includes the following code. +Before you can insert a table into a document, you must create the [Table](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.table?view=openxml-2.8.1) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties?view=openxml-2.8.1) object. The **TableProperties** class provides many table-oriented properties, like [Shading](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading?view=openxml-2.8.1), [TableBorders](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders?view=openxml-2.8.1), [TableCaption](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption?view=openxml-2.8.1), [TableCellSpacing](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing?view=openxml-2.8.1), [TableJustification](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification?view=openxml-2.8.1), and more. The sample method includes the following code. ```csharp Table table = new Table(); @@ -190,33 +177,16 @@ method includes the following code. 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](https://msdn2.microsoft.com/library/bb358354) -constructor). In this case, the code creates [TopBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.topborder.aspx), [BottomBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.bottomborder.aspx), [LeftBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.leftborder.aspx), [RightBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.rightborder.aspx), [InsideHorizontalBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.insidehorizontalborder.aspx), and [InsideVerticalBorder](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.insideverticalborder.aspx) 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, you create an -instance of the [EnumValue\](https://msdn.microsoft.com/library/office/cc801792.aspx) generic type, passing the -specific border type ([Single](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.bordervalues.aspx)) as a parameter to the constructor. -Once the code has set all the table border value it needs to set, it -calls the [AppendChild\](https://msdn.microsoft.com/library/office/cc846487.aspx) method of the table, -indicating that the generic type is [TableProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tableproperties.aspx)—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](https://docs.microsoft.com/dotnet/api/system.xml.linq.xelement?view=net-5.0) +constructor). In this case, the code creates [TopBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.topborder?view=openxml-2.8.1), [BottomBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.bottomborder?view=openxml-2.8.1), [LeftBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.leftborder?view=openxml-2.8.1), [RightBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.rightborder?view=openxml-2.8.1), [InsideHorizontalBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder?view=openxml-2.8.1), and [InsideVerticalBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder?view=openxml-2.8.1) 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, you create an instance of the [EnumValue\](https://docs.microsoft.com/dotnet/api/documentformat.openxml.enumvalue-1?view=openxml-2.8.1) generic type, passing the specific border type ([Single](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.bordervalues?view=openxml-2.8.1) as a parameter to the constructor. +Once the code has set all the table border value it needs to set, it calls the [AppendChild\](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.tableproperties?view=openxml-2.8.1)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. ----------------------------------------------------------------------------- ## Filling the Table with Data -Given that table and its properties, now it is time to fill the table -with data. The sample procedure iterates first through all the rows of -data in the array of strings that you specified, creating a new [TableRow](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablerow.aspx) instance for each row of data. The -following code leaves out the details of filling in the row with data, -but it shows how you create and append the row to the table: +Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablerow?view=openxml-2.8.1) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: ```csharp for (var i = 0; i <= data.GetUpperBound(0); i++) @@ -235,11 +205,7 @@ but it shows how you create and append the row to the table: Next ``` -For each row, the code iterates through all the columns in the array of -strings you specified. For each column, the code creates a new [TableCell](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecell.aspx) object, fills it with data, and -appends it to the row. The following code leaves out the details of -filling each cell with data, but it shows how you create and append the -column to the table: +For each row, the code iterates through all the columns in the array of strings you specified. For each column, the code creates a new [TableCell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecell?view=openxml-2.8.1) object, fills it with data, and appends it to the row. The following code leaves out the details of filling each cell with data, but it shows how you create and append the column to the table: ```csharp for (var j = 0; j <= data.GetUpperBound(1); j++) @@ -260,16 +226,16 @@ column to the table: Next, the code does the following: -- Creates a new [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) object that contains a value from +- Creates a new [Text](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.text?view=openxml-2.8.1) object that contains a value from the array of strings. -- Passes the [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.text.aspx) object to the constructor for a - new [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) object. +- Passes the [Text](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.text?view=openxml-2.8.1) object to the constructor for a + new [Run](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.run?redirectedfrom=MSDN&view=openxml-2.8.1) object. -- Passes the [Run](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.run.aspx) object to the constructor for a new - [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) object. +- Passes the [Run](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.run?view=openxml-2.8.1) object to the constructor for a new + [Paragraph](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.paragraph?view=openxml-2.8.1) object. -- Passes the [Paragraph](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.paragraph.aspx) object to the [Append](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.append.aspx)method of the cell. +- Passes the [Paragraph](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.paragraph?view=openxml-2.8.1) object to the [Append](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.append.aspx)method of the cell. In other words, the following code appends the text to the new **TableCell** object. @@ -281,11 +247,8 @@ In other words, the following code appends the text to the new **TableCell** obj tc.Append(New Paragraph(New Run(New Text(data(i, j))))) ``` -The code then appends a new [TableCellProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecellproperties.aspx) object to the cell. -This **TableCellProperties** object, like the -**TableProperties** object you already saw, can -accept as many objects in its constructor as you care to supply. In this -case, the code passes only a new [TableCellWidth](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablecellwidth.aspx) object, with its [Type](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablewidthtype.type.aspx) property set to [Auto](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.tablewidthunitvalues.aspx) (so that the table automatically sizes +The code then appends a new [TableCellProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties?view=openxml-2.8.1) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this +case, the code passes only a new [TableCellWidth](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth?view=openxml-2.8.1) object, with its [Type](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type?view=openxml-2.8.1) property set to [Auto](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues?view=openxml-2.8.1) (so that the table automatically sizes the width of each column). ```csharp @@ -303,8 +266,7 @@ the width of each column). ----------------------------------------------------------------------------- ## Finishing Up -The following code concludes by appending the table to the body of the -document, and then saving the document. +The following code concludes by appending the table to the body of the document, and then saving the document. ```csharp doc.Body.Append(table); @@ -319,8 +281,7 @@ document, and then saving the document. ----------------------------------------------------------------------------- ## Sample Code -The following is the complete **AddTable** code -sample in C\# and Visual Basic. +The following is the complete **AddTable** code sample in C\# and Visual Basic. ```csharp // Take the data from a two-dimensional array and build a table at the From 6c87e7d276e7342a6d4e6599247fe57053539eaf Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 12:24:14 -0700 Subject: [PATCH 007/275] Update how-to-add-tables-to-word-processing-documents.md fix relative URL --- ...add-tables-to-word-processing-documents.md | 75 +++++++++---------- 1 file changed, 37 insertions(+), 38 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 5675cc8e..92416001 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS +ms.prod: office365 api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -19,16 +19,13 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- 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. +You must also use the following **using** directives or **Imports** statements to compile the code in this topic. ```csharp using DocumentFormat.OpenXml; @@ -43,13 +40,14 @@ the code in this topic. ``` ----------------------------------------------------------------------------- -## AddTable Method + +## AddTable Method You can use the **AddTable** method to add a simple table to a word processing document. The **AddTable** method accepts two parameters, indicating the following: -- The name of the document to modify (string). +- The name of the document to modify (string). -- A two-dimensional array of strings to insert into the document as a +- A two-dimensional array of strings to insert into the document as a table. ```csharp @@ -62,7 +60,8 @@ You can use the **AddTable** method to add a simple table to a word processing d ``` ----------------------------------------------------------------------------- -## Calling the AddTable Method + +## Calling the AddTable Method The **AddTable** method modifies the document you specify, adding a table that contains the information in the two-dimensional array that you provide. To call the method, pass both of the parameter values, as shown in the following code. @@ -85,11 +84,12 @@ The **AddTable** method modifies the document you specify, adding a table that c {"Massachusetts", "MA"}}) ``` --------------------------------------------------------------------------------- +----------------------------------------------------------------------------- + ## How the Code Works -The following code starts by opening the document, using the [WordprocessingDocument.Open](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open?view=openxml-2.8.1) method and -indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document?view=openxml-2.8.1) property of the [MainDocumentPart](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart?view=openxml-2.8.1) of the word processing +The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open.md) method and +indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document.md) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.md) of the word processing document. ```csharp @@ -108,9 +108,10 @@ document. ``` ----------------------------------------------------------------------------- + ## Creating the Table Object and Setting Its Properties -Before you can insert a table into a document, you must create the [Table](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.table?view=openxml-2.8.1) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties?view=openxml-2.8.1) object. The **TableProperties** class provides many table-oriented properties, like [Shading](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading?view=openxml-2.8.1), [TableBorders](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders?view=openxml-2.8.1), [TableCaption](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption?view=openxml-2.8.1), [TableCellSpacing](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing?view=openxml-2.8.1), [TableJustification](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification?view=openxml-2.8.1), and more. The sample method includes the following code. +Before you can insert a table into a document, you must create the [Table](/dotnet/api/documentformat.openxml.wordprocessing.table.md) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md) object. The **TableProperties** class provides many table-oriented properties, like [Shading](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading.md), [TableBorders](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders.md), [TableCaption](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption.md), [TableCellSpacing](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing.md), [TableJustification](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification.md), and more. The sample method includes the following code. ```csharp Table table = new Table(); @@ -178,15 +179,16 @@ Before you can insert a table into a document, you must create the [Table](https ``` The constructor for the **TableProperties** class allows you to specify as many child elements as you like (much like the [XElement](https://docs.microsoft.com/dotnet/api/system.xml.linq.xelement?view=net-5.0) -constructor). In this case, the code creates [TopBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.topborder?view=openxml-2.8.1), [BottomBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.bottomborder?view=openxml-2.8.1), [LeftBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.leftborder?view=openxml-2.8.1), [RightBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.rightborder?view=openxml-2.8.1), [InsideHorizontalBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder?view=openxml-2.8.1), and [InsideVerticalBorder](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder?view=openxml-2.8.1) 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, you create an instance of the [EnumValue\](https://docs.microsoft.com/dotnet/api/documentformat.openxml.enumvalue-1?view=openxml-2.8.1) generic type, passing the specific border type ([Single](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.bordervalues?view=openxml-2.8.1) as a parameter to the constructor. -Once the code has set all the table border value it needs to set, it calls the [AppendChild\](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement.appendchild) method of the table, indicating that the generic type is [TableProperties](https://docs.microsoft.com/en-us/dotnet/api/documentformat.openxml.wordprocessing.tableproperties?view=openxml-2.8.1)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. +target="M:System.Xml.Linq.XElement.#ctor(System.Xml.Linq.XName,System.Object[])">[XElement](/dotnet/api/system.xml.linq.xelement.md) +constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. ----------------------------------------------------------------------------- + ## Filling the Table with Data -Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablerow?view=openxml-2.8.1) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: +Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](/dotnet/api/documentformat.openxml.wordprocessing.tablerow.md) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: ```csharp for (var i = 0; i <= data.GetUpperBound(0); i++) @@ -205,7 +207,7 @@ Given that table and its properties, now it is time to fill the table with data. Next ``` -For each row, the code iterates through all the columns in the array of strings you specified. For each column, the code creates a new [TableCell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecell?view=openxml-2.8.1) object, fills it with data, and appends it to the row. The following code leaves out the details of filling each cell with data, but it shows how you create and append the column to the table: +For each row, the code iterates through all the columns in the array of strings you specified. For each column, the code creates a new [TableCell](/dotnet/api/documentformat.openxml.wordprocessing.tablecell.md) object, fills it with data, and appends it to the row. The following code leaves out the details of filling each cell with data, but it shows how you create and append the column to the table: ```csharp for (var j = 0; j <= data.GetUpperBound(1); j++) @@ -226,16 +228,16 @@ For each row, the code iterates through all the columns in the array of strings Next, the code does the following: -- Creates a new [Text](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.text?view=openxml-2.8.1) object that contains a value from +- Creates a new [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object that contains a value from the array of strings. -- Passes the [Text](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.text?view=openxml-2.8.1) object to the constructor for a - new [Run](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.run?redirectedfrom=MSDN&view=openxml-2.8.1) object. +- Passes the [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object to the constructor for a + new [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object. -- Passes the [Run](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.run?view=openxml-2.8.1) object to the constructor for a new - [Paragraph](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.paragraph?view=openxml-2.8.1) object. +- Passes the [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object to the constructor for a new + [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object. -- Passes the [Paragraph](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.paragraph?view=openxml-2.8.1) object to the [Append](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.append.aspx)method of the cell. +- Passes the [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object to the [Append](/dotnet/api/documentformat.openxml.openxmlelement.append.md)method of the cell. In other words, the following code appends the text to the new **TableCell** object. @@ -247,8 +249,8 @@ In other words, the following code appends the text to the new **TableCell** obj tc.Append(New Paragraph(New Run(New Text(data(i, j))))) ``` -The code then appends a new [TableCellProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties?view=openxml-2.8.1) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this -case, the code passes only a new [TableCellWidth](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth?view=openxml-2.8.1) object, with its [Type](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type?view=openxml-2.8.1) property set to [Auto](https://docs.microsoft.com/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues?view=openxml-2.8.1) (so that the table automatically sizes +The code then appends a new [TableCellProperties](/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties.md) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this +case, the code passes only a new [TableCellWidth](/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth.md) object, with its [Type](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type.md) property set to [Auto](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues.md) (so that the table automatically sizes the width of each column). ```csharp @@ -264,6 +266,7 @@ the width of each column). ``` ----------------------------------------------------------------------------- + ## Finishing Up The following code concludes by appending the table to the body of the document, and then saving the document. @@ -279,7 +282,8 @@ The following code concludes by appending the table to the body of the document, ``` ----------------------------------------------------------------------------- -## Sample Code + +## Sample Code The following is the complete **AddTable** code sample in C\# and Visual Basic. @@ -406,12 +410,7 @@ The following is the complete **AddTable** code sample in C\# and Visual Basic. ``` ----------------------------------------------------------------------------- -## See also - - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) - - +## See also +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) \ No newline at end of file From 69bfc95c99642ebd05e5643b9a7fe371955a2eaf Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 12:39:30 -0700 Subject: [PATCH 008/275] add desc to metadata --- docs/how-to-add-tables-to-word-processing-documents.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) 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 92416001..20722d9f 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -1,11 +1,12 @@ --- -ms.prod: office365 +ms.prod: MULTIPLEPRODUCTS api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: - schema ms.assetid: 65c377d2-1763-4bb6-8915-bc6839ccf62d title: 'How to: Add tables to word processing documents (Open XML SDK)' +description: 'Learn how to add tables to word processing documents using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx From 18d69cd7915f85da51ffd1f1d057de56e01bc1b9 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 12:44:16 -0700 Subject: [PATCH 009/275] Add desc to metadata --- ...picture-into-a-word-processing-document.md | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) 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 5e8955b0..4048d2ff 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 @@ -6,21 +6,20 @@ api_type: - schema ms.assetid: ae8c98d9-dd11-4b75-804c-165095d60ffd title: 'How to: Insert a picture into a word processing document (Open XML SDK)' +description: 'Learn how to insert a picture into a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # 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 2.5 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. +The following assembly directives are required to compile the code in this topic. ```csharp using System.IO; @@ -43,7 +42,9 @@ this topic. ``` -------------------------------------------------------------------------------- + ## Opening an Existing Document for Editing + To open an existing document, instantiate the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class as shown in the following **using** statement. In the same statement, open the word processing file at the specified **filepath** by using the [Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562234.aspx) method, with the @@ -77,7 +78,6 @@ automatically saves and closes the object as part of its **System.IDisposable** exit the block, you do not have to explicitly call **Save** and **Close**─as long as you use **using**. - -------------------------------------------------------------------------------- ## The XML Representation of the Graphic Object The following text from the [ISO/IEC @@ -106,7 +106,9 @@ The following XML Schema fragment defines the contents of this element ``` -------------------------------------------------------------------------------- + ## How the Sample Code Works + After you have opened the document, add the [ImagePart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.imagepart.aspx) object to the [MainDocumentPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.maindocumentpart.aspx) object by using a file stream as shown in the following code segment. @@ -248,6 +250,7 @@ Then, append the reference to the body. The element should be in a [Run](https:/ ``` -------------------------------------------------------------------------------- + ## Sample Code The following code example adds a picture to an existing word document. In your code, you can call the **InsertAPicture** method by passing in the path of @@ -405,7 +408,7 @@ The following is the complete sample code in both C\# and Visual Basic. ``` -------------------------------------------------------------------------------- -## See also +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) From a4008b571431dd367ce0047a4895a26bc80cd28a Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 15:06:58 -0700 Subject: [PATCH 010/275] add desc to metadata fix relative link, run linter --- ...paragraph-in-a-word-processing-document.md | 11 +- ...ientation-of-a-word-processing-document.md | 49 ++++---- ...t-from-the-docm-to-the-docx-file-format.md | 22 ++-- ...ation-document-by-providing-a-file-name.md | 23 ++-- ...ter-style-to-a-word-processing-document.md | 45 +++---- ...aph-style-to-a-word-processing-document.md | 76 ++++++------ ...ic-author-in-a-word-processing-document.md | 25 +++- ...-styles-from-a-word-processing-document.md | 37 ++++-- ...footers-from-a-word-processing-document.md | 14 +-- ...he-header-in-a-word-processing-document.md | 49 +++----- ...les-parts-in-a-word-processing-document.md | 56 +++++---- ...ry-of-all-named-ranges-in-a-spreadsheet.md | 43 ++----- ...hidden-rows-or-columns-in-a-spreadsheet.md | 111 ++++++------------ ...-the-hidden-worksheets-in-a-spreadsheet.md | 104 ++++------------ ...list-of-the-worksheets-in-a-spreadsheet.md | 23 ++-- ...-values-from-a-word-processing-document.md | 9 +- ...er-of-slides-in-a-presentation-document.md | 51 ++++---- ...ve-the-values-of-cells-in-a-spreadsheet.md | 41 ++++--- ...-property-in-a-word-processing-document.md | 18 ++- docs/open-xml-sdk.md | 8 +- 20 files changed, 360 insertions(+), 455 deletions(-) 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 ffecf1dc..24ca3963 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 8d465a77-6c1b-453a-8375-ecf80d2f1bdc title: 'How to: Apply a style to a paragraph in a word processing document' +description: 'Learn how to apply a style to a paragraph in a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- @@ -19,11 +20,11 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). 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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- 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. @@ -54,7 +55,6 @@ The **ApplyStyleToParagraph** example method can be used to apply a style to a p The following sections in this topic explain the implementation of this method and the supporting code, as well as how to call it. The complete sample code listing can be found in the [Sample Code](#sample-code) section at the end of this topic. - ## Getting a WordprocessingDocument Object The Sample Code section also shows the code required to set up for @@ -925,4 +925,3 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also - [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/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 97ce414b..5828d091 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 @@ -5,13 +5,14 @@ api_name: api_type: - schema ms.assetid: bb5319c8-ee99-4862-937b-94dcae8deaca -title: 'How to: Change the print orientation of a word processing document' +title: 'How to: Change the print orientation of a word processing document (Open XML SDK)' +description: 'Learn how to change the print orientation of a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- @@ -23,12 +24,12 @@ Office to programmatically set the print orientation of a Microsoft Word **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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -48,7 +49,9 @@ the code in this topic. ``` ----------------------------------------------------------------------------- + ## SetPrintOrientation Method + You can use the **SetPrintOrientation** method to change the print orientation of a word processing document. The method accepts two parameters that indicate the name of the document to @@ -72,9 +75,10 @@ the section's current print orientation, the code modifies the print orientation for the section. In addition, the code must manually update the width, height, and margins for each section. - ----------------------------------------------------------------------------- + ## Calling the Sample SetPrintOrientation Method + To call the sample **SetPrintOrientation** method, pass a string that contains the name of the file to convert. The following code shows an example method call. @@ -90,7 +94,9 @@ following code shows an example method call. ``` ----------------------------------------------------------------------------- + ## How the Code Works + The following code first opens the document by using the [Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method and sets the **isEditable** parameter to **true** to indicate that the document should be read/write. The code maintains a Boolean variable that tracks whether @@ -125,15 +131,10 @@ each section in turn. ``` ----------------------------------------------------------------------------- + ## Iterating Through All the Sections -The next block of code iterates through all the sections in the -collection of **SectionProperties** elements. -For each section, the code initializes a variable that tracks whether -the page orientation for the section was changed so the code can update -the page size and margins. (If the new orientation matches the original -orientation, the code will not update the page.) The code continues by -retrieving a reference to the first [PageSize](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.pagesize.aspx) descendant of the **SectionProperties** element. If the reference is -not null, the code updates the orientation as required. + +The next block of code iterates through all the sections in the collection of **SectionProperties** elements. For each section, the code initializes a variable that tracks whether the page orientation for the section was changed so the code can update the page size and margins. (If the new orientation matches the original orientation, the code will not update the page.) The code continues by retrieving a reference to the first [PageSize](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.pagesize.aspx) descendant of the **SectionProperties** element. If the reference is not null, the code updates the orientation as required. ```csharp foreach (SectionProperties sectPr in sections) @@ -162,7 +163,9 @@ not null, the code updates the orientation as required. ``` ----------------------------------------------------------------------------- + ## Setting the Orientation for the Section + The next block of code first checks whether the [Orient](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.pagesize.orient.aspx) property of the **PageSize** element exists. As with many properties of Open XML elements, the property or attribute might not exist yet. In that case, retrieving the property returns a null reference. By default, @@ -218,7 +221,9 @@ save the document at the end.) ``` ----------------------------------------------------------------------------- + ## Updating the Page Size + At this point in the code, the page orientation may have changed. If so, the code must complete two more tasks. It must update the page size, and update the page margins for the section. The first task is easy—the @@ -251,7 +256,9 @@ in the **PageSize** element. ``` ----------------------------------------------------------------------------- + ## Updating the Margins + The next step in the sample procedure handles margins for the section. If the page orientation has changed, the code must rotate the margins to match. To do so, the code retrieves a reference to the [PageMargin](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.pagemargin.aspx) element for the section. If the @@ -301,7 +308,9 @@ margin settings, as shown in the following code. ``` ----------------------------------------------------------------------------- + ## Saving the Document + After all the modifications, the code determines whether the document has changed. If the document has changed, the code saves it. @@ -318,8 +327,10 @@ has changed. If the document has changed, the code saves it. End If ``` --------------------------------------------------------------------------------- +----------------------------------------------------------------------------- + ## Sample Code + The following is the complete **SetPrintOrientation** code sample in C\# and Visual Basic. @@ -513,10 +524,8 @@ Basic. End Sub ``` --------------------------------------------------------------------------------- -## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +----------------------------------------------------------------------------- +## See also +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 27a657a3..5be34cbc 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 @@ -5,13 +5,15 @@ api_name: api_type: - schema ms.assetid: 80cdc1e8-d023-4886-b8d6-ee26327df739 -title: 'How to: Convert a word processing document from the DOCM to the DOCX file format' +title: 'How to: Convert a word processing document from the DOCM to the DOCX file format (Open XML SDK)' +description: 'Learn how to convert a word processing document from the DOCM to the DOCX file format using the Open XML SDK.' + ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- @@ -24,12 +26,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (Installed by the Open XML SDK) +- DocumentFormat.OpenXml (Installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -66,7 +68,6 @@ parameter that indicates the file name of the file to convert. The complete code listing for the method can be found in the [Sample Code](#sample-code) section. - ## Calling the Sample Method To call the sample method, pass a string that contains the name of the @@ -101,14 +102,12 @@ document parts in a sample document that contains a macro. The vbaProject part is highlighted. Figure 1. The vbaProject part - ![vbaProject part shown in the Document Explorer](media/OpenXMLCon_HowToConvertDOCMtoDOCX_Fig1.gif) The task of converting a macro enabled document to one that is not macro enabled therefore consists largely of removing the vbaProject part from the document package. - ## How the Code Works The sample code modifies the document that you specify, verifying that @@ -359,9 +358,4 @@ Basic. ## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) - - - +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 dc1d8cec..99e316ec 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 3d4a800e-64f0-4715-919f-a8f7d92a5c37 title: 'How to: Create a presentation document by providing a file name (Open XML SDK)' +description: 'Learn how to create a presentation document by providing a file name using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- @@ -20,12 +21,12 @@ localization_priority: Priority This topic shows how to use the classes in the Open XML SDK 2.5 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (Installed by the Open XML SDK) +- DocumentFormat.OpenXml (Installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -50,7 +51,9 @@ the code in this topic. ``` -------------------------------------------------------------------------------- -## Create a Presentation + +## Create a Presentation + 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 @@ -143,7 +146,9 @@ two slides. ``` -------------------------------------------------------------------------------- -## Sample Code + +## Sample Code + Following is the complete sample C\# and VB code to create a presentation, given a file path. @@ -767,8 +772,8 @@ presentation, given a file path. ``` -------------------------------------------------------------------------------- -## See also +## See also [About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) @@ -782,6 +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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 931e89a1..cd875f4e 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: c38f2c94-f0b5-4bb5-8c95-02e556d4e9f1 title: 'Create and add a character style to a word processing document' +description: 'Learn how to create and add a character style to a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Create and add a character style to a word processing document @@ -22,12 +23,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -72,8 +73,7 @@ in the user interface). The complete code listing for the method can be found in the [Sample Code](#sample-code) section. - -## About Style IDs, Style Names, and Aliases +## About Style IDs, Style Names, and Aliases The style ID is used by the document to refer to the style, and can be thought of as its primary identifier. Typically, you use the style ID to @@ -102,7 +102,6 @@ are comma separated. Each name must be separated by one or more commas. Finally, the name element specifies the primary style name, which is the one typically shown in an application's user interface. - ## Calling the Sample Method You can use the **CreateAndAddCharacterStyle** @@ -248,18 +247,18 @@ of style created with this style definition. WordprocessingML supports six types of style definitions by the values for the style definition's type attribute: -- Paragraph styles +- Paragraph styles -- Character styles +- Character styles -- Linked styles (paragraph + character) [*Note*: Accomplished via the +- Linked styles (paragraph + character) [*Note*: Accomplished via the link element (§17.7.4.6). *end note*] -- Table styles +- Table styles -- Numbering styles +- Numbering styles -- Default paragraph + character properties +- Default paragraph + character properties *Example*: Consider a style called Heading 1 in a document as shown in the following code example. @@ -286,7 +285,6 @@ You can set the paragraph, character, table and numbering styles types by specifying the corresponding value in the style element's type attribute. - ## Character Style Type You specify character as the style type by setting the value of the type @@ -296,7 +294,7 @@ The following information from section 17.7.9 of the ISO/IEC 29500 specification discusses character styles. Be aware that section numbers preceded by § indicate sections in the ISO specification. -**17.7.9 Run (Character) Styles** +### 17.7.9 Run (Character) Styles *Character styles* are styles which apply to the contents of one or more runs of text within a document's contents. This definition implies that @@ -308,12 +306,9 @@ propertieselement. A character style has two defining style type-specific characteristics: -- The type attribute on the style has a value of character, which - indicates that the following style definition is a character style. +- The type attribute on the style has a value of character, which indicates that the following style definition is a character style. -- The style specifies only character-level properties using the rPr - element. In this case, the run properties are the set of properties - applied to each run which is of this style. +- The style specifies only character-level properties using the rPr element. In this case, the run properties are the set of properties applied to each run which is of this style. The character style is then applied to runs by referencing the styleId attribute value for this style in the run properties' rStyle element. @@ -326,9 +321,7 @@ range of text. Figure 1. Text with a character style applied - - ![A character style applied to some text](./media/OpenXmlCon_CreateCharacterStyle_Fig1.gif) - +![A character style applied to some text](./media/OpenXmlCon_CreateCharacterStyle_Fig1.gif) ## How the Code Works @@ -654,10 +647,6 @@ C\# and Visual Basic. ## 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 bfa85ea2..a7892ec6 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 @@ -5,13 +5,14 @@ api_name: api_type: - schema ms.assetid: 73cbca2d-3603-45a5-8a73-c2e718376b01 -title: 'Create and add a paragraph style to a word processing document' +title: 'How to: Create and add a paragraph style to a word processing document (Open XML SDK)' +description: 'Learn how to create and add a paragraph style to a word processing document using hte Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # Create and add a paragraph style to a word processing document @@ -23,12 +24,12 @@ processing document. It contains an example 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must also explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -47,7 +48,8 @@ the code in this topic. ``` --------------------------------------------------------------------------------- -## CreateAndAddParagraphStyle Method + +## CreateAndAddParagraphStyle Method The **CreateAndAddParagraphStyle** sample method can be used to add a style to a word processing document. You must first obtain a reference @@ -74,8 +76,8 @@ in the user interface). The complete code listing for the method can be found in the [Sample Code](#sample-code) section. - --------------------------------------------------------------------------------- + ## About Style IDs, Style Names, and Aliases The style ID is used by the document to refer to the style, and can be @@ -106,9 +108,9 @@ commas. Finally, the name element specifies the primary style name, which is the one typically shown in the user interface of an application. +--------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -## Calling the Sample Method +## Calling the Sample Method Use the **CreateAndAddParagraphStyle** example method to create and add a named style to a word processing document @@ -228,8 +230,9 @@ applies the style to the paragraph. End Using ``` --------------------------------------------------------------------------------- -## Style Types +--------------------------------------------------------------------------------- + +## Style Types WordprocessingML supports six style types, four of which you can specify using the type attribute on the style element. The following @@ -241,18 +244,18 @@ of style created with this style definition. WordprocessingML supports six types of style definitions by the values for the style definition's type attribute: -- Paragraph styles +- Paragraph styles -- Character styles +- Character styles -- Linked styles (paragraph + character) [*Note*: Accomplished via the +- Linked styles (paragraph + character) [*Note*: Accomplished via the link element (§17.7.4.6). *end note*] -- Table styles +- Table styles -- Numbering styles +- Numbering styles -- Default paragraph + character properties +- Default paragraph + character properties *Example*: Consider a style called Heading 1 in a document as follows: @@ -278,9 +281,9 @@ You can set the paragraph, character, table and numbering styles types by specifying the corresponding value in the type attribute of the style element. - --------------------------------------------------------------------------------- -## Paragraph Style Type + +## Paragraph Style Type You specify paragraph as the style type by setting the value of the type attribute on the style element to "paragraph". @@ -289,7 +292,7 @@ The following information from section 17.7.8 of the ISO/IEC 29500 specification discusses paragraph styles. Note that section numbers preceded by § indicate sections in the ISO specification. -**17.7.8 Paragraph Styles** +## 17.7.8 Paragraph Styles *Paragraph styles* are styles which apply to the contents of an entire paragraph as well as the paragraph mark. This definition implies that @@ -322,9 +325,9 @@ styleId attribute value for this style in the paragraph properties' © ISO/IEC29500: 2008. +--------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -## How the Code Works +## How the Code Works The **CreateAndAddParagraphStyle** method begins by retrieving a reference to the styles element in the styles @@ -351,8 +354,9 @@ styles element is created and saved to the part. End If ``` --------------------------------------------------------------------------------- -## Creating the Style +--------------------------------------------------------------------------------- + +## Creating the Style To create the style, the code instantiates the **[Style](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.style.aspx)** class and sets certain properties, such as the **[Type](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.style.type.aspx)** of style (paragraph), the **[StyleId](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.style.styleid.aspx)**, whether the style is a **[CustomStyle](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.style.customstyle.aspx)**, and whether the style is the @@ -452,12 +456,9 @@ specification. style.Append(unhidewhenused1) ``` -Next, the code instantiates a **[StyleRunProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.stylerunproperties.aspx)** object to create a **rPr** (Run Properties) element. You specify the -character properties that apply to the style, such as font and color, in -this element. The properties are then appended as children of the **rPr** element. +Next, the code instantiates a **[StyleRunProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.wordprocessing.stylerunproperties.aspx)** object to create a **rPr** (Run Properties) element. You specify the character properties that apply to the style, such as font and color, in this element. The properties are then appended as children of the **rPr** element. -When the run properties are created, the code appends the **rPr** element to the style, and the style element -to the styles root element in the styles part. +When the run properties are created, the code appends the **rPr** element to the style, and the style element to the styles root element in the styles part. ```csharp // Create the StyleRunProperties object and specify some of the run properties. @@ -506,8 +507,9 @@ to the styles root element in the styles part. styles.Append(style) ``` --------------------------------------------------------------------------------- -## Applying the Paragraph Style +--------------------------------------------------------------------------------- + +## Applying the Paragraph Style When you have the style created, you can apply it to a paragraph by referencing the styleId attribute value for this style in the paragraph @@ -552,8 +554,9 @@ ParagraphStyleId property represents the paragraph properties' **pStyle** elemen pPr.ParagraphStyleId.Val = parastyleid ``` --------------------------------------------------------------------------------- -## Sample Code +--------------------------------------------------------------------------------- + +## Sample Code The following is the complete **CreateAndAddParagraphStyle** code sample in both C\# and Visual Basic. @@ -723,8 +726,9 @@ C\# and Visual Basic. End Function ``` --------------------------------------------------------------------------------- -## See also +--------------------------------------------------------------------------------- + +## 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 a2c16094..6b161245 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: c66a64ca-cb0d-4acc-9d05-535b5bbb8c96 title: 'How to: Delete comments by all or a specific author in a word processing document (Open XML SDK)' +description: 'Learn how to delete comments by all or a specific author in a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Delete comments by all or a specific author in a word processing document (Open XML SDK) @@ -21,12 +22,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -46,7 +47,9 @@ the code in this topic. ``` -------------------------------------------------------------------------------- + ## DeleteComments Method + You can use the **DeleteComments** method to delete all of the comments from a word processing document, or only those written by a specific author. As shown in the following code, the @@ -71,7 +74,9 @@ an author name, the code deletes all comments. ``` -------------------------------------------------------------------------------- + ## Calling the DeleteComments Method + To call the **DeleteComments** method, provide the required parameters as shown in the following code. @@ -135,7 +140,9 @@ in proceeding, as there cannot be any comments to delete. ``` -------------------------------------------------------------------------------- + ## Creating the List of Comments + The code next performs two tasks: creating a list of all the comments to delete, and creating a list of comment IDs that correspond to the comments to delete. Given these lists, the code can both delete the @@ -191,7 +198,9 @@ of strings that contain all the comment ID values. ``` -------------------------------------------------------------------------------- + ## Deleting Comments and Saving the Part + Given the **commentsToDelete** collection, to the following code loops through all the comments that require deleting and performs the deletion. The code then saves the comments part. @@ -220,7 +229,9 @@ and performs the deletion. The code then saves the comments part. ``` -------------------------------------------------------------------------------- + ## Deleting Comment References in the Document + Although the code has successfully removed all the comments by this point, that is not enough. The code must also remove references to the comments from the document part. This action requires three steps @@ -310,7 +321,9 @@ saving the document. ``` -------------------------------------------------------------------------------- + ## Sample Code + The following is the complete code sample in both C\# and Visual Basic. ```csharp @@ -467,7 +480,7 @@ The following is the complete code sample in both C\# and Visual Basic. ``` -------------------------------------------------------------------------------- -## See also +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 a5bdefcb..21864166 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 20258c39-9411-41f2-8463-e94a4b0fa326 title: 'How to: Extract styles from a word processing document (Open XML SDK)' +description: 'Learn how to extract styles from a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Extract styles from a word processing document (Open XML SDK) @@ -24,12 +25,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -50,7 +51,9 @@ the code in this topic. ``` --------------------------------------------------------------------------------- + ## ExtractStylesPart Method + You can use the **ExtractStylesPart** sample method to retrieve an **XDocument** instance that contains the styles or stylesWithEffects part for a Microsoft Word 2010 or Microsoft Word 2013 document. Be aware that in a document created in Word 2010, there will @@ -88,9 +91,10 @@ requested does not exist). The complete code listing for the method can be found in the [Sample Code](#sample-code) section. +--------------------------------------------------------------------------------- --------------------------------------------------------------------------------- ## Calling the Sample Method + To call the sample method, pass a string for the first parameter that contains the file name of the document from which to extract the styles, and a Boolean for the second parameter that specifies whether the type @@ -125,8 +129,10 @@ the console. End If ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## How the Code Works + The code starts by creating a variable named **styles** that the method returns before it exits. ```csharp @@ -179,8 +185,10 @@ the main document part, and then prepares a variable named **stylesPart** to hol End Using ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Find the Correct Styles Part + The code next retrieves a reference to the requested styles part by using the **getStylesWithEffectsPart** Boolean parameter. Based on this value, the code retrieves a specific property @@ -203,7 +211,9 @@ of the **docPart** variable, and stores it in the ``` --------------------------------------------------------------------------------- + ## Retrieve the Part Contents + If the requested styles part exists, the code must return the contents of the part in an **XDocument** instance. Each part provides a [GetStream](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpart.getstream.aspx) method, which returns a Stream. @@ -238,10 +248,11 @@ parameter. End If ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Sample Code -The following is the complete **ExtractStylesPart** code sample in C\# and Visual -Basic. + +The following is the complete **ExtractStylesPart** code sample in C\# and Visual Basic. ```csharp // Extract the styles or stylesWithEffects part from a @@ -323,8 +334,8 @@ Basic. End Function ``` --------------------------------------------------------------------------------- -## See also +--------------------------------------------------------------------------------- +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 4e9a9ad7..db6bff4c 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 22f973f4-58d1-4dd4-943e-a15ac2571b7c title: 'How to: Remove the headers and footers from a word processing document (Open XML SDK)' +description: 'Learn how to remove the headers and footers from a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Remove the headers and footers from a word processing document (Open XML SDK) @@ -21,12 +22,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must then explicitly reference the following assemblies in your project. -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -66,7 +67,6 @@ modify. The complete code listing for the method can be found in the [Sample Code](#sample-code) section. - ## Calling the Sample Method To call the sample method, pass a string for the first parameter that @@ -366,6 +366,4 @@ Visual Basic. ## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 9926f537..3b8211dd 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: d57e9b7d-b271-4c8d-998f-b7ca3eb6c850 title: 'How to: Replace the header in a word processing document (Open XML SDK)' +description: 'Learn how to replace the header in a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # Replace the header in a word processing document (Open XML SDK) @@ -20,12 +21,12 @@ This topic shows how to use the classes in the Open XML SDK 2.5 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -55,7 +56,7 @@ the header reference element. The following information from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces the header reference element. -**headerReference (Header Reference)** +## headerReference (Header Reference) This element specifies a single header which shall be associated with the current section in the document. This header shall be referenced via @@ -71,11 +72,11 @@ considered non-conformant. Within each section of a document there may be up to three different types of headers: -- First page header +- First page header -- Odd page header +- Odd page header -- Even page header +- Even page header The header type specified by the current **headerReference** is specified via the **type** attribute. @@ -83,26 +84,11 @@ specified via the **type** attribute. If any type of header is omitted for a given section, then the following rules shall apply. -- If no **headerReference** for the first page header is specified and - the **titlePg** element is specified, then the first page header - shall be inherited from the previous section or, if this is the - first section in the document, a new blank header shall be created. - If the **titlePg** element is not specified, then no first page - header shall be shown, and the odd page header shall be used in its - place. - -- If no **headerReference** for the even page header is specified and - the **evenAndOddHeaders** element is specified, then the even page - header shall be inherited from the previous section or, if this is - the first section in the document, a new blank header shall be - created. If the **evenAndOddHeaders** element is not specified, then - no even page header shall be shown, and the odd page header shall be - used in its place. - -- If no **headerReference** for the odd page header is specified then - the even page header shall be inherited from the previous section - or, if this is the first section in the document, a new blank header - shall be created. +- If no **headerReference** for the first page header is specified and the **titlePg** element is specified, then the first page header shall be inherited from the previous section or, if this is the first section in the document, a new blank header shall be created. If the **titlePg** element is not specified, then no first page header shall be shown, and the odd page header shall be used in its place. + +- If no **headerReference** for the even page header is specified and the **evenAndOddHeaders** element is specified, then the even page header shall be inherited from the previous section or, if this is the first section in the document, a new blank header shall be created. If the **evenAndOddHeaders** element is not specified, then no even page header shall be shown, and the odd page header shall be used in its place. + +- If no **headerReference** for the odd page header is specified then the even page header shall be inherited from the previous section or, if this is the first section in the document, a new blank header shall be created. *Example*: Consider a three page document with different first, odd, and even page header defined as follows: @@ -126,8 +112,6 @@ following packaging markup: These relationships are then referenced in the section's properties using the following WordprocessingML: - ** - ```xml … @@ -145,7 +129,6 @@ pages, and the header part with relationship id **rId5** for all subsequent odd © ISO/IEC29500: 2008. - ## Sample Code The following code example shows how to replace the header in a word @@ -257,6 +240,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference]/office/open-xml/open-xml-sdk.md) 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 032c7e3f..9027e20d 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 67edb37c-cfec-461c-b616-5a8b7d074c91 title: 'How to: Replace the styles parts in a word processing document (Open XML SDK)' +description: 'Learn how to replace the styles parts in a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Replace the styles parts in a word processing document (Open XML SDK) @@ -23,12 +24,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -48,7 +49,8 @@ the code in this topic. ``` --------------------------------------------------------------------------------- -## About Styles Storage + +## About Styles Storage A word processing document package, such as a file that has a .docx extension, is in fact a .zip file that consists of several parts. You @@ -68,8 +70,7 @@ document that contains styles. Figure 1. Styles parts in a word processing document - - ![Styles parts in a word processing document.](./media/OpenXmlCon_HowToReplaceStyles_Fig1.gif) +![Styles parts in a word processing document.](./media/OpenXmlCon_HowToReplaceStyles_Fig1.gif) In order to provide for "round-tripping" a document from Word 2013 to Word 2010 and back, Word 2013 maintains both the original styles part and the new styles part. (The Office Open XML File Formats specification @@ -80,9 +81,9 @@ Word 2013 adds to the document.) The code example provided in this topic can be used to replace these styles parts. - --------------------------------------------------------------------------------- -## ReplaceStyles Method + +## ReplaceStyles Method You can use the **ReplaceStyles** sample method to replace the styles in a word processing document with the styles in another word processing @@ -103,9 +104,9 @@ effectively completely replacing the styles. The complete code listing for the **ReplaceStyles** method and its supporting methods can be found in the [Sample Code](#sample-code) section. +--------------------------------------------------------------------------------- --------------------------------------------------------------------------------- -## Calling the Sample Method +## Calling the Sample Method To call the sample method, you pass a string for the first parameter that indicates the path of the file with the styles to extract, and a @@ -127,8 +128,9 @@ document will reflect the new styles. ReplaceStyles(fromDoc, toDoc) ``` --------------------------------------------------------------------------------- -## How the Code Works +--------------------------------------------------------------------------------- + +## How the Code Works The code extracts and replaces the styles part first, and then the stylesWithEffects part second, and relies on two supporting methods to @@ -155,6 +157,7 @@ target document. ReplaceStylesPart(toDoc, node, False) End If ``` + The final parameter in the signature for either the **ExtractStylesPart** or the **ReplaceStylesPart** method determines whether the styles part or the stylesWithEffects part is employed. A value of false indicates that you want to extract and replace the styles part. The @@ -186,9 +189,9 @@ sdata="link">[How to: Extract styles from a word processing document (Open XML SDK)](how-to-extract-styles-from-a-word-processing-document.md). The following section explains the **ReplaceStylesPart** method. - --------------------------------------------------------------------------------- -## ReplaceStylesPart Method + +## ReplaceStylesPart Method The **ReplaceStylesPart** method can be used to replace the styles or styleWithEffects part in a document, given an @@ -217,8 +220,9 @@ from a source document). Optional ByVal setStylesWithEffectsPart As Boolean = True) ``` --------------------------------------------------------------------------------- -## How the ReplaceStylesPart Code Works +--------------------------------------------------------------------------------- + +## How the ReplaceStylesPart Code Works The **ReplaceStylesPart** method examines the document you specify, looking for the styles or stylesWithEffects part. @@ -254,8 +258,9 @@ the main document part, and then prepares a variable named **stylesPart** to hol Dim stylesPart As StylesPart = Nothing ``` --------------------------------------------------------------------------------- -## Find the Correct Styles Part +--------------------------------------------------------------------------------- + +## Find the Correct Styles Part The code next retrieves a reference to the requested styles part, using the **setStylesWithEffectsPart** Boolean @@ -278,7 +283,8 @@ requested styles part, and stores it in the **stylesPart** variable. ``` --------------------------------------------------------------------------------- -## Save the Part Contents + +## Save the Part Contents Assuming that the requested part exists, the code must save the entire contents of the **XDocument** passed to the @@ -307,7 +313,8 @@ the XDocument, saving its contents into the styles part. End If ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Sample Code The following is the complete **ReplaceStyles**, **ReplaceStylesPart**, and **ExtractStylesPart** methods in C\# and Visual @@ -489,9 +496,8 @@ Basic. End Function ``` --------------------------------------------------------------------------------- -## See also - +--------------------------------------------------------------------------------- +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 7385a19d..f6a295a3 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 0aa2aef3-b329-4ccc-8f25-9660c083e14e title: 'How to: Retrieve a dictionary of all named ranges in a spreadsheet document (Open XML SDK)' +description: 'Learn how to retrieve a dictionary of all named ranges in a spreadsheet document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Retrieve a dictionary of all named ranges in a spreadsheet document (Open XML SDK) @@ -22,12 +23,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (Installed by the Open XML SDK) +- DocumentFormat.OpenXml (Installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -69,7 +70,6 @@ that contains defined names. If it exists, the code iterates through all the contents of the part, adding the name and value for each defined name to the returned dictionary. - ## Calling the Sample Method To call the sample method, pass a string that contains the name of the @@ -94,8 +94,7 @@ and displays the key and value from each item. ## How the Code Works -The code starts by creating a variable named **returnValue** that the method will return before it -exits. +The code starts by creating a variable named **returnValue** that the method will return before it exits. ```csharp // Given a workbook name, return a dictionary of defined names. @@ -113,14 +112,9 @@ exits. Return returnValue ``` -The code continues by opening the spreadsheet document, using the **Open**** method and indicating that the -document should be open for read-only access (the final false -parameter). Given the open workbook, the code uses the **WorkbookPart**** property to navigate to the -main workbook part. The code stores this reference in a variable named -**wbPart**. +The code continues by opening the spreadsheet document, using the **Open** method and indicating that the +document should be open for read-only access (the final false parameter). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part. The code stores this reference in a variable named **wbPart**. ```csharp // Open the spreadsheet document for read-only access. @@ -147,16 +141,8 @@ main workbook part. The code stores this reference in a variable named ## 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 -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. +**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 +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 // Retrieve a reference to the defined names collection. @@ -184,8 +170,7 @@ and value (range description) to the dictionary for each defined name. ## Sample Code -The following is the complete **GetDefinedNames** code sample in C\# and Visual -Basic. +The following is the complete **GetDefinedNames** code sample in C\# and Visual Basic. ```csharp public static Dictionary @@ -247,6 +232,4 @@ Basic. ## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 c622f558..3bfaba55 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 @@ -6,32 +6,27 @@ api_type: - schema ms.assetid: 5adddb6e-545e-4fba-ae35-cc4682e3eda7 title: 'How to: Retrieve a list of the hidden rows or columns in a spreadsheet document (Open XML SDK)' +description: 'Learn how to retrieve a list of the hidden rows or columns in a spreadsheet document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # 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 -loading the document into Excel. It contains an example **GetHiddenRowsOrCols** method to illustrate this -task. +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 +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.microsoft.com/download/details.aspx?id=30425). 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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- 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. +You must also use the following **using** directives or **Imports** statements to compile the code in this topic. ```csharp using System; @@ -49,17 +44,19 @@ the code in this topic. ``` --------------------------------------------------------------------------------- + ## GetHiddenRowsOrCols Method + You can use the **GetHiddenRowsOrCols** method to retrieve a list of the hidden rows or columns in a worksheet. The **GetHiddenRowsOrCols** method accepts three parameters, indicating the following: -- The name of the document to examine (string). +- The name of the document to examine (string). -- The name of the sheet to examine (string). +- The name of the sheet to examine (string). -- Whether to detect rows (true) or columns (false) (Boolean). +- Whether to detect rows (true) or columns (false) (Boolean). ```csharp public static List GetHiddenRowsOrCols( @@ -72,13 +69,11 @@ parameters, indicating the following: ByVal detectRows As Boolean) As List(Of UInteger) ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Calling the GetHiddenRowsOrCols Method -The method returns a list of unsigned integers that contain each index -for the hidden rows or columns, if the specified worksheet contains any -hidden rows or columns (rows and columns are numbered starting at 1, -rather than 0.) To call the method, pass all the parameter values, as -shown in the following example code. + +The method returns a list of unsigned integers that contain each index for the hidden rows or columns, if the specified worksheet contains any hidden rows or columns (rows and columns are numbered starting at 1, rather than 0.) To call the method, pass all the parameter values, as shown in the following example code. ```csharp const string fileName = @"C:\users\public\documents\RetrieveHiddenRowsCols.xlsx"; @@ -100,8 +95,10 @@ shown in the following example code. Console.WriteLine(sw.ToString()) ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## How the Code Works + The code starts by creating a variable, **itemList**, that will contain the return value. ```csharp @@ -112,10 +109,7 @@ The code starts by creating a variable, **itemList**, that will contain the retu Dim itemList As New List(Of UInteger) ``` -Next, the code opens the document, by using the [SpreadsheetDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.open.aspx) method and -indicating that the document should be open for read-only access (the -final **false** parameter value). Next the code -retrieves a reference to the workbook part, by using the [WorkbookPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.workbookpart.aspx) property of the document. +Next, the code opens the document, by using the [SpreadsheetDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.open.aspx) method and indicating that the document should be open for read-only access (the final **false** parameter value). Next the code retrieves a reference to the workbook part, by using the [WorkbookPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.workbookpart.aspx) property of the document. ```csharp using (SpreadsheetDocument document = @@ -135,15 +129,8 @@ retrieves a reference to the workbook part, by using the [WorkbookPart](https:// End Using ``` -To find the hidden rows or columns, the code must first retrieve a -reference to the specified sheet, given its name. This is not as easy as -you might think. The code must look through all the sheet-type -descendants of the workbook part's [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.workbook.aspx) property, examining the [Name](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.name.aspx) property of each sheet that it finds. -Note that this search simply looks through the relations of the -workbook, and does not actually find a worksheet part. It simply finds a -reference to a [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) object, which contains information -such as the name and [Id](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.id.aspx) property of the sheet. The simplest way -to accomplish this is to use a LINQ query. +To find the hidden rows or columns, the code must first retrieve a reference to the specified sheet, given its name. This is not as easy as you might think. The code must look through all the sheet-type descendants of the workbook part's [Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.workbook.aspx) property, examining the [Name](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.name.aspx) property of each sheet that it finds. +Note that this search simply looks through the relations of the workbook, and does not actually find a worksheet part. It simply finds a reference to a [Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx) object, which contains information such as the name and [Id](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.id.aspx) property of the sheet. The simplest way to accomplish this is to use a LINQ query. ```csharp Sheet theSheet = wbPart.Workbook.Descendants(). @@ -161,14 +148,9 @@ to accomplish this is to use a LINQ query. Throw New ArgumentException("sheetName") ``` -The [FirstOrDefault](https://msdn2.microsoft.com/library/bb358452) -method returns either the first matching reference (a sheet, in this -case) or a null reference if no match was found. The code checks for the -null reference, and throws an exception if you passed in an invalid -sheet name. Now that you have information about the sheet, the code must -retrieve a reference to the corresponding worksheet part. The sheet -information you already retrieved provides an **Id** property, and given that **Id** property, the code can retrieve a reference to -the corresponding [WorksheetPart](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.worksheetpart.aspx) property by calling the [GetPartById](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.getpartbyid.aspx) method of the [WorkbookPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.aspx) object. +The [FirstOrDefault](https://msdn2.microsoft.com/library/bb358452) method returns either the first matching reference (a sheet, in this case) or a null reference if no match was found. The code checks for the +null reference, and throws an exception if you passed in an invalid sheet name. Now that you have information about the sheet, the code must retrieve a reference to the corresponding worksheet part. The sheet +information you already retrieved provides an **Id** property, and given that **Id** property, the code can retrieve a reference to the corresponding [WorksheetPart](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.worksheet.worksheetpart.aspx) property by calling the [GetPartById](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.getpartbyid.aspx) method of the [WorkbookPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.aspx) object. ```csharp else @@ -191,8 +173,10 @@ the corresponding [WorksheetPart](https://msdn.microsoft.com/library/office/docu End If ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Retrieving the List of Hidden Row or Column Index Values + The code uses the **detectRows** parameter that you specified when you called the method to determine whether to retrieve information about rows or columns. @@ -220,8 +204,7 @@ retrieve information about rows or columns. End If ``` -The code that actually retrieves the list of hidden rows requires only a -single line of code. +The code that actually retrieves the list of hidden rows requires only a single line of code. ```csharp itemList = ws.Descendants(). @@ -236,26 +219,9 @@ single line of code. Select(Function(r) r.RowIndex.Value).ToList() ``` -This single line accomplishes a lot, however. It starts by calling the -[Descendants](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.descendants.aspx) method of the worksheet, -retrieving a list of all the rows. The [Where](https://msdn2.microsoft.com/library/bb301979) -method limits the results to only those rows where the [Hidden](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.hidden.aspx) property of the item is not null and -the value of the **Hidden** property is **True**. The [Select](https://msdn2.microsoft.com/library/bb357126) -method projects the return value for each row, returning the value of -the [RowIndex](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.rowindex.aspx) property. Finally, the [ToList\](https://msdn2.microsoft.com/library/bb342261)** -method converts the resulting [IEnumerable\](https://msdn2.microsoft.com/library/9eekhta0) -interface into a [List\](https://msdn2.microsoft.com/library/6sh2ey19) -object of unsigned integers. If there are no hidden rows, the returned -list is empty. - -Retrieving the list of hidden columns is a bit trickier, because Excel -collapses groups of hidden columns into a single element, and provides -[Min](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.column.min.aspx) and [Max](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.column.max.aspx) properties that describe the first and -last columns in the group. Therefore, the code that retrieves the list -of hidden columns starts the same as the code that retrieves hidden -rows. However, it must iterate through the index values (looping through -each item in the collection of hidden columns, adding each index from -the **Min** to the **Max** value, inclusively). +This single line accomplishes a lot, however. It starts by calling the [Descendants](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.descendants.aspx) method of the worksheet, retrieving a list of all the rows. The [Where](https://msdn2.microsoft.com/library/bb301979) method limits the results to only those rows where the [Hidden](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.hidden.aspx) property of the item is not null and the value of the **Hidden** property is **True**. The [Select](https://msdn2.microsoft.com/library/bb357126) method projects the return value for each row, returning the value of the [RowIndex](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.row.rowindex.aspx) property. Finally, the [ToList\](https://msdn2.microsoft.com/library/bb342261) method converts the resulting [IEnumerable\](https://msdn2.microsoft.com/library/9eekhta0) interface into a [List\](https://msdn2.microsoft.com/library/6sh2ey19) object of unsigned integers. If there are no hidden rows, the returned list is empty. + +Retrieving the list of hidden columns is a bit trickier, because Excel collapses groups of hidden columns into a single element, and provides [Min](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.column.min.aspx) and [Max](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.column.max.aspx) properties that describe the first and last columns in the group. Therefore, the code that retrieves the list of hidden columns starts the same as the code that retrieves hidden rows. However, it must iterate through the index values (looping each item in the collection of hidden columns, adding each index from the **Min** to the **Max** value, inclusively). ```csharp var cols = ws.Descendants(). @@ -280,10 +246,11 @@ the **Min** to the **Max** value, inclusively). Next ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Sample Code -The following is the complete **GetHiddenRowsOrCols** code sample in C\# and Visual -Basic. + +The following is the complete **GetHiddenRowsOrCols** code sample in C\# and Visual Basic. ```csharp public static List GetHiddenRowsOrCols( @@ -392,8 +359,8 @@ Basic. End Function ``` --------------------------------------------------------------------------------- -## See also +--------------------------------------------------------------------------------- +## See also - [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/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 a1c748f5..3b5fddb9 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 @@ -6,31 +6,26 @@ api_type: - schema ms.assetid: a6d35b76-d12a-460c-9d9d-2334abde759e title: 'How to: Retrieve a list of the hidden worksheets in a spreadsheet document (Open XML SDK)' +description: 'Learn how to retrieve a list of the hidden worksheets in a spreadsheet document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # 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 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). 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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- 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. +You must also use the following **using** directives or **Imports** statements to compile the code in this topic. ```csharp using System; @@ -47,11 +42,7 @@ the code in this topic. ## GetHiddenSheets Method -You can use the **GetHiddenSheets** method, -which is shown in the following code, to retrieve a list of the hidden -worksheets in a workbook. The **GetHiddenSheets** method accepts a single -parameter, a string that indicates the path of the file that you want to -examine. +You can use the **GetHiddenSheets** method, which is shown in the following code, to retrieve a list of the hidden worksheets in a workbook. The **GetHiddenSheets** method accepts a single parameter, a string that indicates the path of the file that you want to examine. ```csharp public static List GetHiddenSheets(string fileName) @@ -61,19 +52,11 @@ examine. Public Function GetHiddenSheets(ByVal fileName As String) As List(Of Sheet) ``` -The method works with the workbook you specify, filling a [List\](https://msdn2.microsoft.com/library/6sh2ey19)** -instance with a reference to each hidden **Sheet**** object. - +The method works with the workbook you specify, filling a **[List\](https://msdn2.microsoft.com/library/6sh2ey19)** instance with a reference to each hidden **Sheet** object. ## Calling the GetHiddenSheets Method -The method returns a generic list that contains information about the -individual hidden **Sheet** objects. To call -the **GetHiddenWorksheets** method, pass the -required parameter value, as shown in the following code. +The method returns a generic list that contains information about the individual hidden **Sheet** objects. To call the **GetHiddenWorksheets** method, pass the required parameter value, as shown in the following code. ```csharp // Revise this path to the location of a file that contains hidden worksheets. @@ -98,8 +81,7 @@ required parameter value, as shown in the following code. ## How the Code Works -The following code starts by creating a generic list that will contain -information about the hidden worksheets. +The following code starts by creating a generic list that will contain information about the hidden worksheets. ```csharp List returnVal = new List(); @@ -109,14 +91,7 @@ information about the hidden worksheets. Dim returnVal As New List(Of Sheet) ``` -Next, the following code opens the specified workbook by using the **SpreadsheetDocument.Open**** method and -indicating that the document should be open for read-only access (the -final **false** parameter value). Given the -open workbook, the code uses the **WorkbookPart**** property to navigate to the -main workbook part, storing the reference in a variable named **wbPart**. +Next, the following code opens the specified workbook by using the **SpreadsheetDocument.Open** method and indicating that the document should be open for read-only access (the final **false** parameter value). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part, storing the reference in a variable named **wbPart**. ```csharp using (SpreadsheetDocument document = @@ -138,19 +113,8 @@ main workbook part, storing the reference in a variable named **wbPart**. ## Retrieving 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 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. +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 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 var sheets = wbPart.Workbook.Descendants(); @@ -162,31 +126,10 @@ the sheet child elements of the workbook's XML content. ## Retrieving Hidden Sheets -It is important to be aware that Excel supports two levels of hiding -worksheets. You can hide a worksheet by using the Excel user interface -by right-clicking the worksheets tab and opting to hide the worksheet. -For these worksheets, the **State**** property of the **Sheet** object contains an enumerated value of -**Hidden**. You can also make a worksheet very -hidden by writing code (either in VBA or in another language) that sets -the sheet's **Visible property to the -enumerated value **xlSheetVeryHidden**. For -worksheets hidden in this manner, the **State** -property of the **Sheet** object contains the -enumerated value **VeryHidden****. - -Given the collection that contains information about all the sheets, the -following code uses the [Where](https://msdn2.microsoft.com/library/bb301979)** -function to filter the collection so that it contains only the sheets in -which the **State** property is not null. If -the **State** property is not null, the code -looks for the **Sheet** objects in which the -**State** property has a value, and where the -value is either **SheetStateValues.Hidden** or -**SheetStateValues.VeryHidden**. +It's important to be aware that Excel supports two levels of worksheets. You can hide a worksheet by using the Excel user interface by right-clicking the worksheets tab and opting to hide the worksheet. +For these worksheets, the **State** property of the **Sheet** object contains an enumerated value of **Hidden**. You can also make a worksheet very hidden by writing code (either in VBA or in another language) that sets the sheet's **Visible** property to the enumerated value **xlSheetVeryHidden**. For worksheets hidden in this manner, the **State** property of the **Sheet** object contains the enumerated value **VeryHidden**. + +Given the collection that contains information about all the sheets, the following code uses the **[Where](https://msdn2.microsoft.com/library/bb301979)** function to filter the collection so that it contains only the sheets in which the **State** property is not null. If the **State** property is not null, the code looks for the **Sheet** objects in which the **State** property as a value, and where the value is either **SheetStateValues.Hidden** or **SheetStateValues.VeryHidden**. ```csharp var hiddenSheets = sheets.Where((item) => item.State != null && @@ -201,10 +144,8 @@ value is either **SheetStateValues.Hidden** or AndAlso (item.State.Value = SheetStateValues.Hidden Or _ item.State.Value = SheetStateValues.VeryHidden)) ``` -Finally, the following code calls the [ToList\](https://msdn2.microsoft.com/library/bb342261)** -method to execute the LINQ query that retrieves the list of hidden -sheets, placing the result into the return value for the function. + +Finally, the following code calls the **[ToList\](https://msdn2.microsoft.com/library/bb342261)** method to execute the LINQ query that retrieves the list of hidden sheets, placing the result into the return value for the function. ```csharp returnVal = hiddenSheets.ToList(); @@ -216,8 +157,7 @@ sheets, placing the result into the return value for the function. ## Sample Code -The following is the complete **GetHiddenSheets** code sample in C\# and Visual -Basic. +The following is the complete **GetHiddenSheets** code sample in C\# and Visual Basic. ```csharp public static List GetHiddenSheets(string fileName) @@ -270,6 +210,4 @@ Basic. ## See also - - - [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/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 6756bc4e..e7e9a63a 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: a0c1e144-2080-4470-bd4b-ed98f1399374 title: 'How to: Retrieve a list of the worksheets in a spreadsheet document (Open XML SDK)' +description: 'Learn how to retrieve a list of the worksheets in a spreadsheet document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # Retrieve a list of the worksheets in a spreadsheet document (Open XML SDK) @@ -21,12 +22,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -44,7 +45,9 @@ the code in this topic. ``` -------------------------------------------------------------------------------- -## GetAllWorksheets Method + +## GetAllWorksheets Method + You can use the **GetAllWorksheets** method, which is shown in the following code, to retrieve a list of the worksheets in a workbook. The **GetAllWorksheets** method accepts a single @@ -63,9 +66,9 @@ The method works with the workbook you specify, returning an instance of the **[Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheets.aspx)** object, from which you can retrieve a reference to each **[Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx)** object. - -------------------------------------------------------------------------------- -## Calling the GetAllWorksheets Method +## Calling the GetAllWorksheets Method + To call the **GetAllWorksheets** method, pass the required value, as shown in the following code. @@ -97,7 +100,9 @@ the required value, as shown in the following code. ``` -------------------------------------------------------------------------------- -## How the Code Works + +## How the Code Works + The sample method, **GetAllWorksheets**, creates a variable that will contain a reference to the **Sheets** collection of the workbook. At the end of its work, the method returns the variable, which contains either a @@ -233,7 +238,7 @@ Basic. ``` -------------------------------------------------------------------------------- -## See also +## See also - [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/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 4420d4b9..ab052059 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 3e9ca812-460e-442e-8257-38f523a53dc6 title: 'How to: Retrieve application property values from a word processing document (Open XML SDK)' +description: 'Learn how to retrieve application property values from a word processing document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Retrieve application property values from a word processing document (Open XML SDK) @@ -21,12 +22,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile 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 d30e6987..a6ce212d 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: b6f429a7-4489-4155-b713-2139f3add8c2 title: 'How to: Retrieve the number of slides in a presentation document (Open XML SDK)' +description: 'Learn how to retrieve the number of slides in a presentation document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Normal --- # Retrieve the number of slides in a presentation document (Open XML SDK) @@ -23,12 +24,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -45,7 +46,9 @@ the code in this topic. ``` --------------------------------------------------------------------------------- + ## RetrieveNumberOfSlides Method + You can use the **RetrieveNumberOfSlides** method to get the number of slides in a presentation document, optionally including the hidden slides. The **RetrieveNumberOfSlides** method accepts two @@ -65,6 +68,7 @@ include hidden slides in the count. --------------------------------------------------------------------------------- ## Calling the RetrieveNumberOfSlides Method + The method returns an integer that indicates the number of slides, counting either all the slides or only visible slides, depending on the second parameter value. To call the method, pass all the parameter @@ -84,15 +88,12 @@ values, as shown in the following code. Console.WriteLine(RetrieveNumberOfSlides(DEMOPATH)) ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## How the Code Works -The code starts by creating an integer variable, **slidesCount**, to hold the number of slides. The code -then opens the specified presentation by using the [PresentationDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.open.aspx) method and -indicating that the document should be open for read-only access (the -final **false** parameter value). Given the -open presentation, the code uses the [PresentationPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.presentationpart.aspx) property to navigate to -the main presentation part, storing the reference in a variable named -**presentationPart**. + +The code starts by creating an integer variable, **slidesCount**, to hold the number of slides. The code then opens the specified presentation by using the [PresentationDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.open.aspx) method and indicating that the document should be open for read-only access (the +final **false** parameter value). Given the open presentation, the code uses the [PresentationPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationdocument.presentationpart.aspx) property to navigate to the main presentation part, storing the reference in a variable named **presentationPart**. ```csharp using (PresentationDocument doc = @@ -115,15 +116,11 @@ the main presentation part, storing the reference in a variable named Return slidesCount ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Retrieving the Count of All Slides -If the presentation part reference is not null (and it will not be, for -any valid presentation that loads correctly into PowerPoint), the code -next calls the **Count** method on the value of -the [SlideParts](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationpart.slideparts.aspx) property of the presentation -part. If you requested all slides, including hidden slides, that is all -there is to do. There is slightly more work to be done if you want to -exclude hidden slides, as shown in the following code. + +If the presentation part reference is not null (and it will not be, for any valid presentation that loads correctly into PowerPoint), the code next calls the **Count** method on the value of the [SlideParts](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.presentationpart.slideparts.aspx) property of the presentation part. If you requested all slides, including hidden slides, that is all there is to do. There is slightly more work to be done if you want to exclude hidden slides, as shown in the following code. ```csharp if (includeHidden) @@ -144,8 +141,10 @@ exclude hidden slides, as shown in the following code. End If ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Retrieving the Count of Visible Slides + If you requested that the code should limit the return value to include only visible slides, the code must filter its collection of slides to include only those slides that have a [Show](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.show.aspx) property that contains a value, and @@ -175,8 +174,10 @@ function with a lambda expression to do the work. slidesCount = slides.Count() ``` --------------------------------------------------------------------------------- +--------------------------------------------------------------------------------- + ## Sample Code + The following is the complete **RetrieveNumberOfSlides** code sample in C\# and Visual Basic. @@ -243,8 +244,8 @@ Visual Basic. End Function ``` --------------------------------------------------------------------------------- -## See also +--------------------------------------------------------------------------------- +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 aeaadd17..8febc22d 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 @@ -6,12 +6,13 @@ api_type: - schema ms.assetid: 15e26fbd-fc23-466a-a7cc-b7584ba8f821 title: 'How to: Retrieve the values of cells in a spreadsheet document (Open XML SDK)' +description: 'Learn how to retrieve the values of cells in a spreadsheet document using the Open XML SDK.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # Retrieve the values of cells in a spreadsheet document (Open XML SDK) @@ -21,12 +22,12 @@ 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.microsoft.com/download/details.aspx?id=30425). You +To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (Installed by the Open XML SDK) +- DocumentFormat.OpenXml (Installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -43,17 +44,18 @@ the code in this topic. ``` -------------------------------------------------------------------------------- -## GetCellValue Method + +## GetCellValue Method You can use the **GetCellValue** method to retrieve the value of a cell in a workbook. The method requires the following three parameters: -- A string that contains the name of the document to examine. +- A string that contains the name of the document to examine. -- A string that contains the name of the sheet to examine. +- A string that contains the name of the sheet to examine. -- A string that contains the cell address (such as A1, B12) from which +- A string that contains the cell address (such as A1, B12) from which to retrieve a value. The method returns the value of the specified cell, if it could be @@ -72,7 +74,8 @@ found. The following code example shows the method signature. ``` -------------------------------------------------------------------------------- -## Calling the GetCellValue Sample Method + +## Calling the GetCellValue Sample Method To call the **GetCellValue** method, pass the file name, sheet name, and cell address, as shown in the following code @@ -106,7 +109,8 @@ example. ``` -------------------------------------------------------------------------------- -## How the Code Works + +## How the Code Works The code starts by creating a variable to hold the return value, and initializes it to null. @@ -120,7 +124,8 @@ initializes it to null. ``` -------------------------------------------------------------------------------- -## Accessing the Cell + +## Accessing the Cell Next, the code opens the document by using the **[Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.open.aspx)** method, indicating that the document should be open for read-only access (the final **false** parameter). Next, the code retrieves a @@ -222,8 +227,9 @@ or will contain a null reference. Where(Function(c) c.CellReference = addressName).FirstOrDefault ``` ---------------------------------------------------------------------------------- -## Retrieving the Value +-------------------------------------------------------------------------------- + +## Retrieving the Value At this point, the variable named **theCell** contains either a null reference, or a reference to the cell that you @@ -372,9 +378,9 @@ it finds in the cell value into the appropriate text string. Finally, the procedure returns the variable **value**, which contains the requested information. - -------------------------------------------------------------------------------- -## Sample Code + +## Sample Code The following is the complete **GetCellValue** code sample in C\# and Visual Basic. @@ -548,8 +554,7 @@ code sample in C\# and Visual Basic. ``` -------------------------------------------------------------------------------- -## See also - +## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 8991c86a..adfcc7a1 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,27 +6,24 @@ 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.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- # 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 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.microsoft.com/download/details.aspx?id=30425). 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 2.5](https://www.nuget.org/packages/Open-XML-SDK/2.5.0). You must explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase -- DocumentFormat.OpenXml (installed by the Open XML SDK) +- DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** directives or **Imports** statements to compile @@ -47,6 +44,7 @@ the code in this topic. Imports DocumentFormat.OpenXml.Packaging Imports DocumentFormat.OpenXml.VariantTypes ``` + The sample code also includes an enumeration that defines the possible types of custom properties. The **SetCustomProperty** method requires that you supply one of these values when you call the method. @@ -774,4 +772,4 @@ Basic. -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 315ba745..6e83ffb9 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -9,12 +9,13 @@ 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.' ms.suite: office ms.technology: open-xml ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/28/2021 localization_priority: Priority --- @@ -43,17 +44,16 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. [!include[Add-ins note](./includes/addinsnote.md)] -## In this section +## In this section - [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](https://docs.microsoft.com/dotnet/api/overview/openxml/) - ## See also -- [Open XML SDK 2.5 for Microsoft Office](https://www.microsoft.com/download/details.aspx?id=30425) +- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/Open-XML-SDK/2.5.0) - [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) From a2a3919917dffede8e120b52893f3eb3b2e77781 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 15:16:45 -0700 Subject: [PATCH 011/275] fix relative links --- ...ly-a-style-to-a-paragraph-in-a-word-processing-document.md | 4 +--- ...e-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md | 2 +- ...trieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md | 2 +- ...ication-property-values-from-a-word-processing-document.md | 4 +--- docs/open-xml-sdk.md | 2 +- 5 files changed, 5 insertions(+), 9 deletions(-) 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 24ca3963..84d559b6 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 @@ -139,7 +139,6 @@ correspond to the **document**, **body**, **p**, **r**, and **t** elements. 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). - ## Getting the Paragraph to Style After opening the file, the sample code retrieves a reference to the @@ -189,7 +188,6 @@ style to apply as the second parameter, the name of the style as the third parameter, and the reference to the paragraph to which to apply the style, as the fourth parameter. - ## Adding the Paragraph Properties Element The first step of the example method is to ensure that the paragraph has @@ -924,4 +922,4 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](\/office/open-xml/open-xml-sdk.md) 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 3bfaba55..86e9cd3f 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 3b5fddb9..a5997be7 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 @@ -210,4 +210,4 @@ The following is the complete **GetHiddenSheets** code sample in C\# and Visual ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 ab052059..fe9bce75 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 @@ -187,6 +187,4 @@ The following is the complete code sample in C\# and Visual Basic. ## See also - - -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 6e83ffb9..adac7273 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](https://docs.microsoft.com/dotnet/api/overview/openxml/) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) ## See also From 617e18e89bb252fef732202ee26fe079dfb8a52b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 28 Jun 2021 18:31:12 -0700 Subject: [PATCH 012/275] Update Nuget download URL --- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- ...pply-a-style-to-a-paragraph-in-a-word-processing-document.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 +- ...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 +- ...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 +- ...e-the-headers-and-footers-from-a-word-processing-document.md | 2 +- docs/how-to-replace-the-header-in-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 +- ...retrieve-a-list-of-the-hidden-worksheets-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 +- ...-retrieve-the-number-of-slides-in-a-presentation-document.md | 2 +- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 2 +- ...ow-to-set-a-custom-property-in-a-word-processing-document.md | 2 +- docs/open-xml-sdk.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 20722d9f..10bd2e5d 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -20,7 +20,7 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 84d559b6..758cfdac 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 @@ -20,7 +20,7 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 5828d091..f2fb7781 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 @@ -24,7 +24,7 @@ Office to programmatically set the print orientation of a Microsoft Word **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/Open-XML-SDK/2.5.0). You +2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 5be34cbc..b979115c 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 @@ -26,7 +26,7 @@ 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/Open-XML-SDK/2.5.0). You +2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 99e316ec..707a9185 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 @@ -21,7 +21,7 @@ localization_priority: Priority This topic shows how to use the classes in the Open XML SDK 2.5 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 cd875f4e..82ea07aa 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 @@ -23,7 +23,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 a7892ec6..1184483c 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 @@ -24,7 +24,7 @@ processing document. It contains an example 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/Open-XML-SDK/2.5.0). You +2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must also explicitly reference the following assemblies in your project: - WindowsBase 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 6b161245..b2255f52 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 21864166..dd820b49 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 @@ -25,7 +25,7 @@ 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/Open-XML-SDK/2.5.0). You +2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 db6bff4c..7478a990 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +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 then explicitly reference the following assemblies in your project. - WindowsBase 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 3b8211dd..84ffd49e 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 @@ -21,7 +21,7 @@ This topic shows how to use the classes in the Open XML SDK 2.5 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 9027e20d..420a9572 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 @@ -24,7 +24,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 f6a295a3..9a8d1e58 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 @@ -23,7 +23,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 86e9cd3f..cb251268 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 @@ -20,7 +20,7 @@ localization_priority: Priority 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 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/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 a5997be7..26fd6eba 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 @@ -19,7 +19,7 @@ localization_priority: Normal 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase 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 e7e9a63a..665693a9 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 fe9bce75..c7283af5 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 a6ce212d..2576acbc 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 @@ -24,7 +24,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 8febc22d..d1ac86c7 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 @@ -22,7 +22,7 @@ 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/Open-XML-SDK/2.5.0). You +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: - WindowsBase 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 adfcc7a1..b2c30db3 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 @@ -19,7 +19,7 @@ localization_priority: Priority 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. -To use the sample code in this topic, you must install the [Open XML SDK 2.5](https://www.nuget.org/packages/Open-XML-SDK/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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index adac7273..9684f53e 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -53,7 +53,7 @@ Portions of ISO/IEC 29500:20081 are referenced in the SDK. ## See also -- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/Open-XML-SDK/2.5.0) +- [Open XML SDK 2.5 for Microsoft Office](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0) - [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) From 9c8cb8a054f7e94f0d76814174dcfe8d911ad60f Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 29 Jun 2021 16:04:18 -0700 Subject: [PATCH 013/275] fix relative link --- ...ve-a-list-of-the-worksheets-in-a-spreadsheet.md | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) 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 665693a9..3f9219f6 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 @@ -67,6 +67,7 @@ the **[Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml. a reference to each **[Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx)** object. -------------------------------------------------------------------------------- + ## Calling the GetAllWorksheets Method To call the **GetAllWorksheets** method, pass @@ -142,12 +143,7 @@ retrieving a reference to the **[WorkbookPart](https://msdn.microsoft.com/librar End Using ``` -To get access to the **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx)** object, the code retrieves the -value of the **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.workbook.aspx)** property from the **WorkbookPart**, and then retrieves a reference to -the **Sheets** object from the **[Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.sheets.aspx)** property of the **Workbook**. The **Sheets** -object contains the collection of **[Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx)** objects that provide the method's -return value. +To get access to the **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx)** object, the code retrieves the value of the **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.workbookpart.workbook.aspx)** property from the **WorkbookPart**, and then retrieves a reference to the **Sheets** object from the **[Sheets](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.sheets.aspx)** property of the **Workbook**. The **Sheets** object contains the collection of **[Sheet](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sheet.aspx)** objects that provide the method's return value. ```csharp theSheets = wbPart.Workbook.Sheets; @@ -158,7 +154,9 @@ return value. ``` -------------------------------------------------------------------------------- -## Sample Code + +## Sample Code + The following is the complete **GetAllWorksheets** code sample in C\# and Visual Basic. @@ -241,4 +239,4 @@ Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) From de7d19c8f8ced61f01a24abc6cd9a2ba1403fd1a Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Wed, 30 Jun 2021 10:03:19 -0700 Subject: [PATCH 014/275] rem metadata from topics --- docs/about-the-open-xml-sdk.md | 4 ++-- docs/getting-started.md | 4 ++-- docs/how-do-i.md | 4 ++-- ...w-to-accept-all-revisions-in-a-word-processing-document.md | 4 ++-- docs/how-to-add-a-comment-to-a-slide-in-a-presentation.md | 4 ++-- ...ument-part-that-receives-a-relationship-id-to-a-package.md | 4 ++-- docs/how-to-add-a-new-document-part-to-a-package.md | 4 ++-- docs/how-to-add-custom-ui-to-a-spreadsheet-document.md | 4 ++-- docs/how-to-add-tables-to-word-processing-documents.md | 4 ++-- ...ly-a-style-to-a-paragraph-in-a-word-processing-document.md | 4 ++-- docs/how-to-apply-a-theme-to-a-presentation.md | 4 ++-- ...e-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md | 4 ++-- ...to-change-text-in-a-table-in-a-word-processing-document.md | 4 ++-- ...w-to-change-the-fill-color-of-a-shape-in-a-presentation.md | 4 ++-- ...nge-the-print-orientation-of-a-word-processing-document.md | 4 ++-- ...ocessing-document-from-the-docm-to-the-docx-file-format.md | 4 ++-- ...of-an-open-xml-package-part-to-a-document-part-in-a-dif.md | 4 ++-- docs/how-to-create-a-package.md | 4 ++-- ...create-a-presentation-document-by-providing-a-file-name.md | 4 ++-- ...-create-a-spreadsheet-document-by-providing-a-file-name.md | 4 ++-- ...ate-a-word-processing-document-by-providing-a-file-name.md | 4 ++-- ...and-add-a-character-style-to-a-word-processing-document.md | 4 ++-- ...and-add-a-paragraph-style-to-a-word-processing-document.md | 4 ++-- docs/how-to-delete-a-slide-from-a-presentation.md | 4 ++-- ...ments-by-an-author-from-all-the-slides-in-a-presentatio.md | 4 ++-- ...-all-or-a-specific-author-in-a-word-processing-document.md | 4 ++-- docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md | 4 ++-- docs/how-to-extract-styles-from-a-word-processing-document.md | 4 ++-- docs/how-to-get-a-column-heading-in-a-spreadsheet.md | 4 ++-- ...ow-to-get-all-the-external-hyperlinks-in-a-presentation.md | 4 ++-- docs/how-to-get-all-the-text-in-a-slide-in-a-presentation.md | 4 ++-- ...how-to-get-all-the-text-in-all-slides-in-a-presentation.md | 4 ++-- ...w-to-get-the-contents-of-a-document-part-from-a-package.md | 4 ++-- ...w-to-get-the-titles-of-all-the-slides-in-a-presentation.md | 4 ++-- docs/how-to-get-worksheet-information-from-a-package.md | 4 ++-- docs/how-to-insert-a-chart-into-a-spreadsheet.md | 4 ++-- ...how-to-insert-a-comment-into-a-word-processing-document.md | 4 ++-- docs/how-to-insert-a-new-slide-into-a-presentation.md | 4 ++-- docs/how-to-insert-a-new-worksheet-into-a-spreadsheet.md | 4 ++-- ...how-to-insert-a-picture-into-a-word-processing-document.md | 4 ++-- docs/how-to-insert-a-table-into-a-word-processing-document.md | 4 ++-- docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md | 4 ++-- docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md | 4 ++-- ...ow-to-move-a-paragraph-from-one-presentation-to-another.md | 4 ++-- ...how-to-move-a-slide-to-a-new-position-in-a-presentation.md | 4 ++-- ...ow-to-open-a-presentation-document-for-read-only-access.md | 4 ++-- ...how-to-open-a-spreadsheet-document-for-read-only-access.md | 4 ++-- docs/how-to-open-a-spreadsheet-document-from-a-stream.md | 4 ++-- ...to-open-a-word-processing-document-for-read-only-access.md | 4 ++-- docs/how-to-open-a-word-processing-document-from-a-stream.md | 4 ++-- .../how-to-open-and-add-text-to-a-word-processing-document.md | 4 ++-- docs/how-to-parse-and-read-a-large-spreadsheet.md | 4 ++-- docs/how-to-remove-a-document-part-from-a-package.md | 4 ++-- ...w-to-remove-hidden-text-from-a-word-processing-document.md | 4 ++-- ...the-headers-and-footers-from-a-word-processing-document.md | 4 ++-- ...how-to-replace-the-header-in-a-word-processing-document.md | 4 ++-- ...-replace-the-styles-parts-in-a-word-processing-document.md | 4 ++-- ...to-replace-the-theme-part-in-a-word-processing-document.md | 4 ++-- ...rieve-a-dictionary-of-all-named-ranges-in-a-spreadsheet.md | 4 ++-- ...e-a-list-of-the-hidden-rows-or-columns-in-a-spreadsheet.md | 4 ++-- ...trieve-a-list-of-the-hidden-worksheets-in-a-spreadsheet.md | 4 ++-- ...w-to-retrieve-a-list-of-the-worksheets-in-a-spreadsheet.md | 4 ++-- ...ication-property-values-from-a-word-processing-document.md | 4 ++-- ...ow-to-retrieve-comments-from-a-word-processing-document.md | 4 ++-- ...etrieve-the-number-of-slides-in-a-presentation-document.md | 4 ++-- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 4 ++-- docs/how-to-search-and-replace-text-in-a-document-part.md | 4 ++-- ...-to-set-a-custom-property-in-a-word-processing-document.md | 4 ++-- docs/how-to-set-the-font-for-a-text-run.md | 4 ++-- docs/how-to-validate-a-word-processing-document.md | 4 ++-- docs/introduction-to-markup-compatibility.md | 4 ++-- docs/open-xml-sdk-design-considerations.md | 4 ++-- docs/open-xml-sdk.md | 4 ++-- docs/packages-and-general.md | 4 ++-- docs/presentations.md | 4 ++-- docs/spreadsheets.md | 4 ++-- docs/structure-of-a-presentationml-document.md | 4 ++-- docs/structure-of-a-spreadsheetml-document.md | 4 ++-- docs/structure-of-a-wordprocessingml-document.md | 4 ++-- docs/understanding-the-open-xml-file-formats.md | 4 ++-- docs/what-s-new-in-the-open-xml-sdk.md | 4 ++-- docs/word-processing.md | 4 ++-- docs/working-with-animation.md | 4 ++-- docs/working-with-comments.md | 4 ++-- docs/working-with-conditional-formatting.md | 4 ++-- docs/working-with-formulas.md | 4 ++-- docs/working-with-handout-master-slides.md | 4 ++-- docs/working-with-notes-slides.md | 4 ++-- docs/working-with-paragraphs.md | 4 ++-- docs/working-with-pivottables.md | 4 ++-- docs/working-with-presentation-slides.md | 4 ++-- docs/working-with-presentationml-documents.md | 4 ++-- docs/working-with-presentations.md | 4 ++-- docs/working-with-runs.md | 4 ++-- docs/working-with-sheets.md | 4 ++-- docs/working-with-slide-layouts.md | 4 ++-- docs/working-with-slide-masters.md | 4 ++-- docs/working-with-spreadsheetml-documents.md | 4 ++-- docs/working-with-tables.md | 4 ++-- docs/working-with-the-calculation-chain.md | 4 ++-- docs/working-with-the-shared-string-table.md | 4 ++-- docs/working-with-wordprocessingml-documents.md | 4 ++-- docs/working-with-wordprocessingml-tables.md | 4 ++-- 103 files changed, 206 insertions(+), 206 deletions(-) diff --git a/docs/about-the-open-xml-sdk.md b/docs/about-the-open-xml-sdk.md index 92271c5f..d48d2fc3 100644 --- a/docs/about-the-open-xml-sdk.md +++ b/docs/about-the-open-xml-sdk.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 620e86b5-49f2-43dc-85d4-9c7456c09552 title: About the Open XML SDK 2.5 for Office ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/getting-started.md b/docs/getting-started.md index 19be0eb6..c2800020 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7b729dda-bbb6-437e-93d6-7bfe7b8183fa title: Getting started with the Open XML SDK 2.5 for Office ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/how-do-i.md b/docs/how-do-i.md index 3c5c0f18..5d4997c8 100644 --- a/docs/how-do-i.md +++ b/docs/how-do-i.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b5cc0e8d-da79-482a-81fa-f18c18d29f6c title: How do I... (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 285b304c..f7760233 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b3406fcc-f10b-4075-a18f-116400f35faf title: 'How to: Accept all revisions in a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 538bff65..3e3d5cb1 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 403abe97-7ab2-40ba-92c0-d6312a6d10c8 title: 'How to: Add a comment to a slide in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 e827dad6..91dcc37c 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: c9b2ce55-548c-4443-8d2e-08fe1f06b7d7 title: 'How to: Add a new document part that receives a relationship ID to a package' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 adb4ba20..35ddc1dc 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: ec83a076-9d71-49d1-915f-e7090f74c13a title: 'How to: Add a new document part to a package (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 e42b66be..fb0877eb 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: fdb29547-c295-4e7d-9fc5-d86d8d8c2967 title: 'How to: Add custom UI to a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 10bd2e5d..738b67bf 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 65c377d2-1763-4bb6-8915-bc6839ccf62d title: 'How to: Add tables to word processing documents (Open XML SDK)' description: 'Learn how to add tables to word processing documents using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 758cfdac..38e52274 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 8d465a77-6c1b-453a-8375-ecf80d2f1bdc title: 'How to: Apply a style to a paragraph in a word processing document' description: 'Learn how to apply a style to a paragraph in a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 d050c0e6..4a5ea4cc 100644 --- a/docs/how-to-apply-a-theme-to-a-presentation.md +++ b/docs/how-to-apply-a-theme-to-a-presentation.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: d7575014-8187-4e55-bafa-15bc317bf8c8 title: 'How to: Apply a theme to a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 4b09b5ea..b30319f0 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 41c001da-204e-4669-a722-76c9f7928281 title: 'How to: Calculate the sum of a range of cells in a spreadsheet document' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 f2873686..75148da9 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 69f7c94e-2b8c-4bec-be8c-31933e2ee042 title: 'How to: Change text in a table in a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 397e48dc..541380ab 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: e3adae2b-c7e8-45f4-b1fc-93d937f4b3b1 title: 'How to: Change the fill color of a shape in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 f2fb7781..0c17eef3 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: bb5319c8-ee99-4862-937b-94dcae8deaca title: 'How to: Change the print orientation of a word processing document (Open XML SDK)' description: 'Learn how to change the print orientation of a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b979115c..c9e47d26 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -9,7 +9,7 @@ title: 'How to: Convert a word processing document from the DOCM to the DOCX fil description: 'Learn how to convert a word processing document from the DOCM to the DOCX file format using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 5cc918ea..a06ffe79 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7dbfd93c-a9e3-4465-9b57-4a043b07b807 title: 'Copy contents of an Open XML package part to a document part in a different package' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index d16713a3..f9f885dc 100644 --- a/docs/how-to-create-a-package.md +++ b/docs/how-to-create-a-package.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: fe261589-7b04-47df-8ee9-26b444e587b0 title: 'How to: Create a package (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 707a9185..4ccbad48 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 3d4a800e-64f0-4715-919f-a8f7d92a5c37 title: 'How to: Create a presentation document by providing a file name (Open XML SDK)' description: 'Learn how to create a presentation document by providing a file name using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 df04ae06..012d583b 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 03ac59c4-49a6-4721-8931-d045c4c9ddde title: 'How to: Create a spreadsheet document by providing a file name (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 93431a8a..5f0f9ee6 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 1771fc05-dd94-40e3-a788-6a13809d64f3 title: 'Create a word processing document by providing a file name' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 82ea07aa..e4707745 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: c38f2c94-f0b5-4bb5-8c95-02e556d4e9f1 title: 'Create and add a character style to a word processing document' description: 'Learn how to create and add a character style to a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 1184483c..39ff5291 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 73cbca2d-3603-45a5-8a73-c2e718376b01 title: 'How to: Create and add a paragraph style to a word processing document (Open XML SDK)' description: 'Learn how to create and add a paragraph style to a word processing document using hte Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b2d461d2..644a7516 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 98781b17-8de4-46e9-b29a-5b4033665491 title: 'How to: Delete a slide from a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 c6e2969b..b031e9d4 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 3b892a6a-2972-461e-94a9-0a1ede854bda title: 'Delete all the comments by an author from all the slides in a presentation' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b2255f52..fe63de04 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: c66a64ca-cb0d-4acc-9d05-535b5bbb8c96 title: 'How to: Delete comments by all or a specific author in a word processing document (Open XML SDK)' description: 'Learn how to delete comments by all or a specific author in a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b7990711..cde67500 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 4b395c48-b469-4d69-b229-d4bad3f3dd8b title: 'How to: Delete text from a cell in a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 dd820b49..7214936b 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 20258c39-9411-41f2-8463-e94a4b0fa326 title: 'How to: Extract styles from a word processing document (Open XML SDK)' description: 'Learn how to extract styles from a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 e35372d2..93556537 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 56ba8cee-d789-4a03-b8ff-b161af0788ff title: 'How to: Get a column heading in a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 bd4501c5..477b5343 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: d6daf04e-3e45-4570-a184-8f0449c7ab91 title: 'How to: Get all the external hyperlinks in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b08fed83..5858b11a 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 6de46612-f864-413f-a504-11ea85f1f88f title: 'How to: Get all the text in a slide in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 d11963da..66044228 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: debad542-5915-45ad-a71c-eeb95b40ec1a title: 'How to: Get all the text in all slides in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 912e5bc0..2584b3f9 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b0d3d890-431a-4838-89dc-1f0dccd5dcd0 title: 'How to: Get the contents of a document part from a package (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 5a588d0e..931b08c7 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b7d5d1fd-dcdf-4f88-9d57-884562c8144f title: 'How to: Get the titles of all the slides in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 f39ae2c9..57fd744c 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 124cb0a0-cc47-433f-bad0-06b793890650 title: 'How to: Get worksheet information from an Open XML package (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 3048a4db..a644af16 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 281776d0-be75-46eb-8fdc-a1f656291175 title: 'How to: Insert a chart into a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 803db0e2..bf110d22 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 474f0a6c-62c8-4f04-b3f9-cd613a6e48d0 title: 'How to: Insert a comment into a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 5ff047ee..20aeb8a3 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 6079a1ae-4567-4d99-b350-b819fd06fe5c title: 'How to: Insert a new slide into a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 937ab186..19cec629 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 944036fa-9251-408f-86cb-2351a5f8cd48 title: 'How to: Insert a new worksheet into a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 4048d2ff..fbec2c5b 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: ae8c98d9-dd11-4b75-804c-165095d60ffd title: 'How to: Insert a picture into a word processing document (Open XML SDK)' description: 'Learn how to insert a picture into a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 eb12b0fb..cb0b5dd1 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 9d390cf8-1654-4a75-b3b8-4aba86ed1476 title: 'How to: Insert a table into a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 e51b17d5..f38d466b 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 5ded6212-e8d4-4206-9025-cb5991bd2f80 title: 'How to: Insert text into a cell in a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 bbdb9942..9aacd01b 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 73747a65-0857-4fd4-8362-3613f4169203 title: 'How to: Merge two adjacent cells in a spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 eb3b9fd6..bd8bdfc3 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: ef817bef-27cd-4c2a-acf3-b7bba17e6e1e title: 'How to: Move a paragraph from one presentation to another (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 7ee9de1e..66d2cb9a 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 95fd9dcd-41e9-4e83-9191-2f3110ae73d5 title: 'How to: Move a slide to a new position in a presentation (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 022310ee..990aceff 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 8dc8a6ac-aa9e-47cc-b45e-e128fcec3c57 title: 'How to: Open a presentation document for read-only access (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 a11ac0b1..3f20a4cc 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 625bf571-5630-47f8-953f-e9e1a93e3229 title: 'How to: Open a spreadsheet document for read-only access (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 aaa13439..0f2dde64 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7fde676b-81b6-4210-82bf-f74d0d925dec title: 'How to: Open a spreadsheet document from a stream (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 8e2eed1b..1e190e49 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: c811c2c7-1066-45a5-a724-33d0fbfd5284 title: 'How to: Open a word processing document for read-only access (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 d34e2468..78745da4 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 75cff172-b29d-475a-8eb5-d8e90642f015 title: 'How to: Open a word processing document from a stream (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 f20764e1..744760d1 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 360318b5-9d17-42a1-b707-c3ccd1a89c97 title: 'How to: Open and add text to a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 2412a205..070b5d72 100644 --- a/docs/how-to-parse-and-read-a-large-spreadsheet.md +++ b/docs/how-to-parse-and-read-a-large-spreadsheet.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: dd28d239-42be-42a9-893e-b65338fe184e title: 'How to: Parse and read a large spreadsheet document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 03f1cba6..53d18b61 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b3890e64-51d1-4643-8d07-2c9d8e060000 title: 'How to: Remove a document part from a package (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 d2fc0ad4..685c10a6 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: e5e9c6ba-b422-4639-bb8c-6da521307f13 title: 'How to: Remove hidden text from a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 7478a990..33dbf700 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 22f973f4-58d1-4dd4-943e-a15ac2571b7c title: 'How to: Remove the headers and footers from a word processing document (Open XML SDK)' description: 'Learn how to remove the headers and footers from a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 84ffd49e..b429abed 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: d57e9b7d-b271-4c8d-998f-b7ca3eb6c850 title: 'How to: Replace the header in a word processing document (Open XML SDK)' description: 'Learn how to replace the header in a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 420a9572..c057c32b 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 67edb37c-cfec-461c-b616-5a8b7d074c91 title: 'How to: Replace the styles parts in a word processing document (Open XML SDK)' description: 'Learn how to replace the styles parts in a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 129255d4..ba720bf8 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: cfb75725-f3a7-43c0-85f4-7bb4c3f448ca title: 'How to: Replace the theme part in a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 9a8d1e58..2aab1dde 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 0aa2aef3-b329-4ccc-8f25-9660c083e14e title: 'How to: Retrieve a dictionary of all named ranges in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve a dictionary of all named ranges in a spreadsheet document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 cb251268..882feccb 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 5adddb6e-545e-4fba-ae35-cc4682e3eda7 title: 'How to: Retrieve a list of the hidden rows or columns in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve a list of the hidden rows or columns in a spreadsheet document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 26fd6eba..5d7bb306 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: a6d35b76-d12a-460c-9d9d-2334abde759e title: 'How to: Retrieve a list of the hidden worksheets in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve a list of the hidden worksheets in a spreadsheet document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 3f9219f6..5f84bc68 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: a0c1e144-2080-4470-bd4b-ed98f1399374 title: 'How to: Retrieve a list of the worksheets in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve a list of the worksheets in a spreadsheet document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 c7283af5..2de3097a 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 3e9ca812-460e-442e-8257-38f523a53dc6 title: 'How to: Retrieve application property values from a word processing document (Open XML SDK)' description: 'Learn how to retrieve application property values from a word processing document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 f101678a..73690597 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 70839c86-36ef-4b67-a682-abd5114b2bfe title: 'How to: Retrieve comments from a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 2576acbc..f009b9e7 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: b6f429a7-4489-4155-b713-2139f3add8c2 title: 'How to: Retrieve the number of slides in a presentation document (Open XML SDK)' description: 'Learn how to retrieve the number of slides in a presentation document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 d1ac86c7..70b9c67a 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ ms.assetid: 15e26fbd-fc23-466a-a7cc-b7584ba8f821 title: 'How to: Retrieve the values of cells in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve the values of cells in a spreadsheet document using the Open XML SDK.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 0830f4af..230787d6 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: cbb4547e-45fa-48ee-872e-8727beec6dfa title: 'How to: Search and replace text in a document part (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 b2c30db3..8e6dfbb0 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 @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +8,7 @@ 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.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 c2a7305b..c99c0465 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 @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: e4e5a2e5-a97e-47b9-a263-6723bd4230a1 title: 'How to: Set the font for a text run (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/how-to-validate-a-word-processing-document.md b/docs/how-to-validate-a-word-processing-document.md index 552b4a35..55fba7e3 100644 --- a/docs/how-to-validate-a-word-processing-document.md +++ b/docs/how-to-validate-a-word-processing-document.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: a20bf30b-204e-4c57-8ca3-badf4b0b3e03 title: 'How to: Validate a word processing document (Open XML SDK)' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index d82b15e2..c6a1b83b 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: dd42a9a3-5c16-4cab-ad6d-506cf822ec7a title: Introduction to markup compatibility (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/open-xml-sdk-design-considerations.md b/docs/open-xml-sdk-design-considerations.md index bac9d9e2..501ed6bb 100644 --- a/docs/open-xml-sdk-design-considerations.md +++ b/docs/open-xml-sdk-design-considerations.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 43c49a6d-96b5-4e87-a5bf-01629d61aad4 title: Open XML SDK 2.5 for Office design considerations ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 9684f53e..2198b751 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -2,7 +2,7 @@ keywords: system.io.packaging f1_keywords: - system.io.packaging -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -11,7 +11,7 @@ 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.' ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/packages-and-general.md b/docs/packages-and-general.md index be3bed2d..3cb36d38 100644 --- a/docs/packages-and-general.md +++ b/docs/packages-and-general.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: edbe267a-ced9-43fd-a702-fd0165cb3438 title: Packages and general (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/presentations.md b/docs/presentations.md index ebd31007..014c2145 100644 --- a/docs/presentations.md +++ b/docs/presentations.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 0a81a7fb-c431-4f53-a199-e72eea91f360 title: Presentations (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/spreadsheets.md b/docs/spreadsheets.md index a8703fe9..c3aabab4 100644 --- a/docs/spreadsheets.md +++ b/docs/spreadsheets.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7808dcc4-8f50-42c4-bad1-d69fe5f045fe title: Spreadsheets (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index e79122b1..8318e308 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: fe780fcd-ed8f-4ee1-938e-cf3bb358ccae title: Structure of a PresentationML document (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/structure-of-a-spreadsheetml-document.md b/docs/structure-of-a-spreadsheetml-document.md index f1871825..57422020 100644 --- a/docs/structure-of-a-spreadsheetml-document.md +++ b/docs/structure-of-a-spreadsheetml-document.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 3b35a153-c8ff-4dc7-96d5-02c515f31770 title: Structure of a SpreadsheetML document (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/structure-of-a-wordprocessingml-document.md b/docs/structure-of-a-wordprocessingml-document.md index 89b05f68..89305617 100644 --- a/docs/structure-of-a-wordprocessingml-document.md +++ b/docs/structure-of-a-wordprocessingml-document.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 03636fa2-be44-4e8d-9c26-7d38415bb459 title: Structure of a WordprocessingML document (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/understanding-the-open-xml-file-formats.md b/docs/understanding-the-open-xml-file-formats.md index 8b61d9e6..b4b8bf86 100644 --- a/docs/understanding-the-open-xml-file-formats.md +++ b/docs/understanding-the-open-xml-file-formats.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: ada81388-9ed2-43f4-ab2c-2bb82f711e90 title: Understanding the Open XML file formats ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual 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 7b943e05..78dfa90f 100644 --- a/docs/what-s-new-in-the-open-xml-sdk.md +++ b/docs/what-s-new-in-the-open-xml-sdk.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 4fbda0e3-5676-4a8f-ba62-3fba59fa418b title: What's new in the Open XML SDK 2.5 for Office ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/word-processing.md b/docs/word-processing.md index 1920441e..d0154cd4 100644 --- a/docs/word-processing.md +++ b/docs/word-processing.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 4fcb7fbb-0796-4737-8f05-acbcfa9e1a06 title: Word processing (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index d9134379..a3607751 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: d4ef73a6-888a-4476-9e21-4df76782127f title: Working with animation (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-comments.md b/docs/working-with-comments.md index 8abb0343..883b6e7b 100644 --- a/docs/working-with-comments.md +++ b/docs/working-with-comments.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: d7f0f1d3-bcf9-40b5-aaa4-4a08d862ac8e title: Working with comments (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-conditional-formatting.md b/docs/working-with-conditional-formatting.md index 5e610e38..a6dcfe5b 100644 --- a/docs/working-with-conditional-formatting.md +++ b/docs/working-with-conditional-formatting.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: b6f5afca-5feb-4003-b803-55dd2f9bf6d2 title: Working with conditional formatting (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-formulas.md b/docs/working-with-formulas.md index 1fd09115..3cc45d15 100644 --- a/docs/working-with-formulas.md +++ b/docs/working-with-formulas.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 17abd341-abe9-4eee-9bb3-27fded0b04d2 title: Working with formulas (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-handout-master-slides.md b/docs/working-with-handout-master-slides.md index 4c4db59e..b23666ea 100644 --- a/docs/working-with-handout-master-slides.md +++ b/docs/working-with-handout-master-slides.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: fb4b293c-9a23-44b7-8af6-afe5fac6611a title: Working with handout master slides (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-notes-slides.md b/docs/working-with-notes-slides.md index c68cd2a4..bee2ff0b 100644 --- a/docs/working-with-notes-slides.md +++ b/docs/working-with-notes-slides.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 56d28bc5-c9ea-4c0e-b2f5-20be9c16d290 title: Working with notes slides (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-paragraphs.md b/docs/working-with-paragraphs.md index 18e7aa25..6761d56e 100644 --- a/docs/working-with-paragraphs.md +++ b/docs/working-with-paragraphs.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 8a9117f7-066e-409c-8681-a26610c0eede title: Working with paragraphs (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-pivottables.md b/docs/working-with-pivottables.md index ebc5bcad..a1e8ef5e 100644 --- a/docs/working-with-pivottables.md +++ b/docs/working-with-pivottables.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 96697c37-3fa7-4814-85b6-657439435ce1 title: Working with PivotTables (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-presentation-slides.md b/docs/working-with-presentation-slides.md index 6dc7da8c..0b7236b3 100644 --- a/docs/working-with-presentation-slides.md +++ b/docs/working-with-presentation-slides.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: ee6c905b-26c5-4aed-a414-9aa826364a23 title: Working with presentation slides (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-presentationml-documents.md b/docs/working-with-presentationml-documents.md index 94c213e5..252aabf9 100644 --- a/docs/working-with-presentationml-documents.md +++ b/docs/working-with-presentationml-documents.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 56aeeed4-24ce-42ba-a236-6fec6785dd93 title: Working with PresentationML documents (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-presentations.md b/docs/working-with-presentations.md index c0d7b3df..5c9e9630 100644 --- a/docs/working-with-presentations.md +++ b/docs/working-with-presentations.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 82deb499-7479-474d-9d89-c4847e6f3649 title: Working with presentations (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-runs.md b/docs/working-with-runs.md index 6a7e4553..909df2b7 100644 --- a/docs/working-with-runs.md +++ b/docs/working-with-runs.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 1fbc6d30-bfe4-4b2b-8fd8-0c5a400d1e03 title: Working with runs (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-sheets.md b/docs/working-with-sheets.md index f67b1182..27bb6d21 100644 --- a/docs/working-with-sheets.md +++ b/docs/working-with-sheets.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 119a7eb6-9a02-4914-b651-9ba090bf7994 title: Working with sheets (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-slide-layouts.md b/docs/working-with-slide-layouts.md index d5b636d2..fb066574 100644 --- a/docs/working-with-slide-layouts.md +++ b/docs/working-with-slide-layouts.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 1ec087c3-8b9e-46a9-9c3c-14586908eb0e title: Working with slide layouts (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index d80fcf76..a28fa52e 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7dfd78a3-e233-4abd-8c17-1e384780d3ec title: Working with slide masters (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-spreadsheetml-documents.md b/docs/working-with-spreadsheetml-documents.md index 332f8943..28f21af0 100644 --- a/docs/working-with-spreadsheetml-documents.md +++ b/docs/working-with-spreadsheetml-documents.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: c984c74e-2f06-4aba-a64b-2bb928b2929e title: Working with SpreadsheetML documents (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-tables.md b/docs/working-with-tables.md index 1170826e..5997c581 100644 --- a/docs/working-with-tables.md +++ b/docs/working-with-tables.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7b72277f-3c5e-43ba-bbd8-7467cf532c95 title: Working with SpreadsheetML tables (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-the-calculation-chain.md b/docs/working-with-the-calculation-chain.md index 30214248..0f761dbd 100644 --- a/docs/working-with-the-calculation-chain.md +++ b/docs/working-with-the-calculation-chain.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: ffdf5bd3-53f5-4f48-8946-11a0287fb107 title: Working with the calculation chain (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-the-shared-string-table.md b/docs/working-with-the-shared-string-table.md index 78568d12..01a66bee 100644 --- a/docs/working-with-the-shared-string-table.md +++ b/docs/working-with-the-shared-string-table.md @@ -1,5 +1,5 @@ --- -ms.prod: OPENXML + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 36664cc7-30ef-4e9b-b569-846a9e404219 title: Working with the shared string table (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-wordprocessingml-documents.md b/docs/working-with-wordprocessingml-documents.md index 1a5cdf0a..5eac5421 100644 --- a/docs/working-with-wordprocessingml-documents.md +++ b/docs/working-with-wordprocessingml-documents.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: bead244f-b551-477f-a296-41ead7bfcf5c title: Working with WordprocessingML documents (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual diff --git a/docs/working-with-wordprocessingml-tables.md b/docs/working-with-wordprocessingml-tables.md index f828c2ce..85e1460b 100644 --- a/docs/working-with-wordprocessingml-tables.md +++ b/docs/working-with-wordprocessingml-tables.md @@ -1,5 +1,5 @@ --- -ms.prod: MULTIPLEPRODUCTS + api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +7,7 @@ api_type: ms.assetid: 7b72277f-3c5e-43ba-bbd8-7467cf532c95 title: Working with WordprocessingML tables (Open XML SDK) ms.suite: office -ms.technology: open-xml + ms.author: o365devx author: o365devx ms.topic: conceptual From a8ceb77fe76f8086329c187b06af2e8a895f9e7a Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Wed, 30 Jun 2021 10:07:27 -0700 Subject: [PATCH 015/275] fix relative link --- README.md | 2 +- ...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 | 2 +- docs/how-to-add-a-new-document-part-to-a-package.md | 2 +- docs/how-to-add-custom-ui-to-a-spreadsheet-document.md | 2 +- docs/how-to-apply-a-theme-to-a-presentation.md | 2 +- ...ate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.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 +- ...s-of-an-open-xml-package-part-to-a-document-part-in-a-dif.md | 2 +- docs/how-to-create-a-package.md | 2 +- ...to-create-a-spreadsheet-document-by-providing-a-file-name.md | 2 +- ...reate-a-word-processing-document-by-providing-a-file-name.md | 2 +- docs/how-to-delete-a-slide-from-a-presentation.md | 2 +- ...omments-by-an-author-from-all-the-slides-in-a-presentatio.md | 2 +- docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md | 2 +- docs/how-to-get-a-column-heading-in-a-spreadsheet.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-chart-into-a-spreadsheet.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-insert-a-table-into-a-word-processing-document.md | 2 +- docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.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 +- docs/how-to-open-a-spreadsheet-document-for-read-only-access.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-remove-a-document-part-from-a-package.md | 2 +- ...how-to-remove-hidden-text-from-a-word-processing-document.md | 2 +- ...w-to-replace-the-theme-part-in-a-word-processing-document.md | 2 +- .../how-to-retrieve-comments-from-a-word-processing-document.md | 2 +- docs/how-to-search-and-replace-text-in-a-document-part.md | 2 +- docs/how-to-set-the-font-for-a-text-run.md | 2 +- docs/how-to-validate-a-word-processing-document.md | 2 +- 43 files changed, 43 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index ec583ce2..b61851c0 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Open XML documentation -This repo is the source markdown for documentation published at https://docs.microsoft.com/office/open-xml/open-xml-sdk. +This repo is the source markdown for documentation published at /office/open-xml/open-xml-sdk.md. ## Contributing 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 f7760233..90cd3ec7 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 @@ -511,6 +511,6 @@ The following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - [Accepting Revisions in Open XML Word-Processing Documents](https://docs.microsoft.com/previous-versions/office/developer/office-2007/ee836138(v=office.12)) 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 3e3d5cb1..c2c6b601 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 91dcc37c..a2cae60a 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 35ddc1dc..0edf0346 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 @@ -210,7 +210,7 @@ Following is the complete code example in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 fb0877eb..723f20f8 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 @@ -306,7 +306,7 @@ code sample in C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - [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-apply-a-theme-to-a-presentation.md b/docs/how-to-apply-a-theme-to-a-presentation.md index 4a5ea4cc..e9c7f814 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 b30319f0..245dc9e9 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 @@ -928,7 +928,7 @@ The following is the complete sample code in both C\# and Visual Basic. ----------------------------------------------------------------------------- ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - [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-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 75148da9..bad3eb33 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 @@ -275,7 +275,7 @@ Following is the complete code example. -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [How to: Change Text in a Table in a Word Processing Document](https://msdn.microsoft.com/library/documentformat.openxml.wordprocessing.table(office.14).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 541380ab..f9d1e9b4 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 a06ffe79..7d9be570 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index f9f885dc..a983d22b 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 012d583b..1afdf02a 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 @@ -237,4 +237,4 @@ Following is the complete sample code in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.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 5f0f9ee6..3b88d58c 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 644a7516..911d7289 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -755,4 +755,4 @@ Following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 b031e9d4..4d382e84 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 cde67500..bf7bccfd 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 @@ -631,7 +631,7 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) 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 93556537..8bb02626 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 477b5343..f113efde 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 5858b11a..fd97fa54 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 a644af16..d7967055 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -883,7 +883,7 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.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 bf110d22..be263dca 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 20aeb8a3..0af62515 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 19cec629..5b5ca9c3 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) 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 cb0b5dd1..34c599e4 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 f38d466b..975ca83a 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 9aacd01b..2ddcef68 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 @@ -583,7 +583,7 @@ The following is the complete sample code in both C\# and Visual Basic. -- [Open XML SDK 2.5 class library reference](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 bd8bdfc3..086fe0fb 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 66d2cb9a..450dacaa 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 990aceff..978c0725 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 3f20a4cc..e4894a80 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 0f2dde64..adfc76e9 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 1e190e49..34f0d295 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 78745da4..757bdff5 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 744760d1..d837d6fc 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 070b5d72..55fdecf2 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 53d18b61..5d9beada 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 685c10a6..23110df3 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 ba720bf8..704b72cc 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 73690597..08bcf404 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) 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 230787d6..90205138 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [Regular Expressions](https://msdn.microsoft.com/library/hs600312.aspx) 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 c99c0465..bb797b7a 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) [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 55fba7e3..670bc518 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](https://docs.microsoft.com/office/open-xml/open-xml-sdk) +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) From 161b23a6f2a8005205b4b02250831476e12e3e5c Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Wed, 30 Jun 2021 11:53:38 -0700 Subject: [PATCH 016/275] Update how-to-accept-all-revisions-in-a-word-processing-document.md --- ...revisions-in-a-word-processing-document.md | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 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 90cd3ec7..73db3077 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 @@ -1,17 +1,16 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: - schema ms.assetid: b3406fcc-f10b-4075-a18f-116400f35faf title: 'How to: Accept all revisions in a word processing document (Open XML SDK)' +description: 'Learn how to accept all revisions in a word processing document using the Open XML SDK.' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 06/30/2021 localization_priority: Priority --- @@ -56,7 +55,6 @@ 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." @@ -89,15 +87,15 @@ When you accept a revision mark, you change the properties of a paragraph either The following information from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces the **ParagraphPropertiesChange** element (**pPrChange**). -**pPrChange (Revision Information for Paragraph Properties)** +### *pPrChange (Revision Information for Paragraph Properties) This element specifies the details about a single revision to a set of paragraph properties in a WordprocessingML document. This element stores this revision as follows: -- The child element of this element contains the complete set of paragraph properties which were applied to this paragraph before this revision. +- The child element of this element contains the complete set of paragraph properties which were applied to this paragraph before this revision. -- The attributes of this element contain information about when this revision took place (in other words, when these properties became a "former" set of paragraph properties). +- The attributes of this element contain information about when this revision took place (in other words, when these properties became a "former" set of paragraph properties). Consider a paragraph in a WordprocessingML document which is centered, and this change in the paragraph properties is tracked as a revision. This revision would be specified using the following WordprocessingML markup. @@ -114,13 +112,12 @@ The element specifies that there was a revision to the paragraph properties at 0 © ISO/IEC29500: 2008. - ## Deleted Element The following information from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces the Deleted element (**del**). -**del (Deleted Paragraph)** +### del (Deleted Paragraph) This element specifies that the paragraph mark delimiting the end of a paragraph within a WordprocessingML document shall be treated as deleted (in other words, the contents of this paragraph are no longer delimited by this paragraph mark, and are combined with the following paragraph—but those contents shall not automatically be marked as deleted) as part of a tracked revision. @@ -155,13 +152,12 @@ and this deletion was tracked as a revision. © ISO/IEC29500: 2008. - ## The Inserted Element The following information from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces the Inserted element (**ins**). -**ins (Inserted Table Row)** +### ins (Inserted Table Row) This element specifies that the parent table row shall be treated as an inserted row whose insertion has been tracked as a revision. This @@ -203,7 +199,6 @@ a revision. © ISO/IEC29500: 2008. - ## How the Sample Code Works After you have opened the document in the using statement, you @@ -513,4 +508,3 @@ 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) - [Accepting Revisions in Open XML Word-Processing Documents](https://docs.microsoft.com/previous-versions/office/developer/office-2007/ee836138(v=office.12)) - From 74d7584531be919a4b6355902edad66896da3f5e Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Wed, 30 Jun 2021 12:10:56 -0700 Subject: [PATCH 017/275] Update docfx.json --- docs/docfx.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index 5a3709b3..ffd5e406 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -40,7 +40,8 @@ "author": "o365devx", "ms.topic": "conceptual", "ms.prod": "office", - "ms.technology": "open-xml" + "ms.technology": "open-xml", + "description": "Simplify tasks in Office Word, Excel, and PowerPoint using the Open XML SDK." }, "fileMetadata": { "langs": { From 817b19297763f13ada87d73bb92b4a0e205f8d0a Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Wed, 30 Jun 2021 13:36:51 -0700 Subject: [PATCH 018/275] Update docfx.json --- docs/docfx.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docfx.json b/docs/docfx.json index ffd5e406..7d5e9be1 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -41,7 +41,7 @@ "ms.topic": "conceptual", "ms.prod": "office", "ms.technology": "open-xml", - "description": "Simplify tasks in Office Word, Excel, and PowerPoint using the Open XML SDK." + "description": "Use the Open XML SDK to programmatically create Office Word, Excel, and PowerPoint documents, and manipulate their content." }, "fileMetadata": { "langs": { From 6952eb46994cdd20d1e8a42fc1326737f4289a73 Mon Sep 17 00:00:00 2001 From: lindexi Date: Thu, 1 Jul 2021 08:48:34 +0800 Subject: [PATCH 019/275] 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 1446d7df648b817263f0b69560dca23257cfe891 Mon Sep 17 00:00:00 2001 From: Alex Jerabek <38896772+AlexJerabek@users.noreply.github.com> Date: Thu, 16 Sep 2021 10:38:17 -0700 Subject: [PATCH 020/275] Updating the localization metadata values (#82) --- docs/about-the-open-xml-sdk.md | 2 +- docs/getting-started.md | 2 +- docs/how-do-i.md | 2 +- ...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 | 2 +- docs/how-to-add-a-new-document-part-to-a-package.md | 2 +- docs/how-to-add-custom-ui-to-a-spreadsheet-document.md | 2 +- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- ...pply-a-style-to-a-paragraph-in-a-word-processing-document.md | 2 +- docs/how-to-apply-a-theme-to-a-presentation.md | 2 +- ...ate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.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 +- ...to-create-a-spreadsheet-document-by-providing-a-file-name.md | 2 +- ...reate-a-word-processing-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 +- ...omments-by-an-author-from-all-the-slides-in-a-presentatio.md | 2 +- ...by-all-or-a-specific-author-in-a-word-processing-document.md | 2 +- docs/how-to-delete-text-from-a-cell-in-a-spreadsheet.md | 2 +- docs/how-to-extract-styles-from-a-word-processing-document.md | 2 +- docs/how-to-get-a-column-heading-in-a-spreadsheet.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-get-all-the-text-in-all-slides-in-a-presentation.md | 2 +- ...how-to-get-the-contents-of-a-document-part-from-a-package.md | 2 +- ...how-to-get-the-titles-of-all-the-slides-in-a-presentation.md | 2 +- docs/how-to-get-worksheet-information-from-a-package.md | 2 +- docs/how-to-insert-a-chart-into-a-spreadsheet.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-insert-a-picture-into-a-word-processing-document.md | 2 +- docs/how-to-insert-a-table-into-a-word-processing-document.md | 2 +- docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.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 +- docs/how-to-open-a-spreadsheet-document-for-read-only-access.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-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 +- docs/how-to-replace-the-header-in-a-word-processing-document.md | 2 +- ...to-replace-the-styles-parts-in-a-word-processing-document.md | 2 +- ...w-to-replace-the-theme-part-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 +- ...retrieve-a-list-of-the-hidden-worksheets-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-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/how-to-set-the-font-for-a-text-run.md | 2 +- docs/how-to-validate-a-word-processing-document.md | 2 +- docs/introduction-to-markup-compatibility.md | 2 +- docs/open-xml-sdk-design-considerations.md | 2 +- docs/open-xml-sdk.md | 2 +- docs/packages-and-general.md | 2 +- docs/presentations.md | 2 +- docs/spreadsheets.md | 2 +- docs/structure-of-a-presentationml-document.md | 2 +- docs/structure-of-a-spreadsheetml-document.md | 2 +- docs/structure-of-a-wordprocessingml-document.md | 2 +- docs/understanding-the-open-xml-file-formats.md | 2 +- docs/what-s-new-in-the-open-xml-sdk.md | 2 +- docs/word-processing.md | 2 +- docs/working-with-animation.md | 2 +- docs/working-with-comments.md | 2 +- docs/working-with-conditional-formatting.md | 2 +- docs/working-with-formulas.md | 2 +- docs/working-with-handout-master-slides.md | 2 +- docs/working-with-notes-slides.md | 2 +- docs/working-with-paragraphs.md | 2 +- docs/working-with-pivottables.md | 2 +- docs/working-with-presentation-slides.md | 2 +- docs/working-with-presentationml-documents.md | 2 +- docs/working-with-presentations.md | 2 +- docs/working-with-runs.md | 2 +- docs/working-with-sheets.md | 2 +- docs/working-with-slide-layouts.md | 2 +- docs/working-with-slide-masters.md | 2 +- docs/working-with-spreadsheetml-documents.md | 2 +- docs/working-with-tables.md | 2 +- docs/working-with-the-calculation-chain.md | 2 +- docs/working-with-the-shared-string-table.md | 2 +- docs/working-with-wordprocessingml-documents.md | 2 +- docs/working-with-wordprocessingml-tables.md | 2 +- 103 files changed, 103 insertions(+), 103 deletions(-) diff --git a/docs/about-the-open-xml-sdk.md b/docs/about-the-open-xml-sdk.md index d48d2fc3..900969d8 100644 --- a/docs/about-the-open-xml-sdk.md +++ b/docs/about-the-open-xml-sdk.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # About the Open XML SDK 2.5 for Office diff --git a/docs/getting-started.md b/docs/getting-started.md index c2800020..837c26e6 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Getting started with the Open XML SDK 2.5 for Office diff --git a/docs/how-do-i.md b/docs/how-do-i.md index 5d4997c8..381b16fc 100644 --- a/docs/how-do-i.md +++ b/docs/how-do-i.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # How do I... (Open XML SDK) 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 73db3077..c432e2d4 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 @@ -11,7 +11,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/30/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Accept all revisions in a word processing document (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 c2c6b601..84889905 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Add a comment to a slide in a presentation (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 a2cae60a..82a366ea 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Add a new document part that receives a relationship ID to a package 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 0edf0346..ae8ded2f 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Add a new document part to a package (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 723f20f8..af797c8b 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Add custom UI to a spreadsheet document (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 738b67bf..20d13df6 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Add tables to word processing documents (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 38e52274..d2216b09 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Apply a style to a paragraph in a word processing document 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 e9c7f814..42dd69b9 100644 --- a/docs/how-to-apply-a-theme-to-a-presentation.md +++ b/docs/how-to-apply-a-theme-to-a-presentation.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Apply a theme to a presentation (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 245dc9e9..392cbf94 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Calculate the sum of a range of cells in a spreadsheet document 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 bad3eb33..a44c1b41 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Change text in a table in a word processing document (Open XML SDK) 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 f9d1e9b4..eff149d0 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Change the fill color of a shape in a presentation (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 0c17eef3..a551c8ee 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Change the print orientation of a word processing document 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 c9e47d26..f1bcee69 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 @@ -14,7 +14,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Convert a word processing document from the DOCM to the DOCX file format 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 7d9be570..44fdbcf2 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Copy contents of an Open XML package part to a document part in a different package diff --git a/docs/how-to-create-a-package.md b/docs/how-to-create-a-package.md index a983d22b..eb32b632 100644 --- a/docs/how-to-create-a-package.md +++ b/docs/how-to-create-a-package.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Create a package (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 4ccbad48..324e2de2 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Create a presentation document by providing a file name (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 1afdf02a..a06913e4 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Create a spreadsheet document by providing a file name (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 3b88d58c..d072c004 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Create a word processing document by providing a file name 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 e4707745..6818eb99 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Create and add a character style to a word processing document 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 39ff5291..98b0bd09 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Create and add a paragraph style to a word processing document 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 911d7289..09c840e5 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Delete a slide from a presentation (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 4d382e84..48e8fd4b 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Delete all the comments by an author from all the slides in a presentation 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 fe63de04..30a8fbb9 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Delete comments by all or a specific author in a word processing document (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 bf7bccfd..e977f586 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Delete text from a cell in a spreadsheet document (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 7214936b..000b1c86 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Extract styles from a word processing document (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 8bb02626..abee7a54 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Get a column heading in a spreadsheet document (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 f113efde..c12d310e 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Get all the external hyperlinks in a presentation (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 fd97fa54..26f0e72b 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Get all the text in a slide in a presentation (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 66044228..c6c38521 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Get all the text in all slides in a presentation (Open XML SDK) 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 2584b3f9..a8e33617 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Get the contents of a document part from a package (Open XML SDK) 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 931b08c7..56591774 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Get the titles of all the slides in a presentation (Open XML SDK) 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 57fd744c..eb656264 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Get worksheet information from an Open XML package (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 d7967055..22cce682 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Insert a chart into a spreadsheet document (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 be263dca..a3b2db19 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Insert a comment into a word processing document (Open XML SDK) 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 0af62515..dc7a79d1 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Insert a new slide into a presentation (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 5b5ca9c3..fe1d8448 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Insert a new worksheet into a spreadsheet document (Open XML SDK) 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 fbec2c5b..9bd4aaad 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Insert a picture into a word processing document (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 34c599e4..1a84e776 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Insert a table into a word processing document (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 975ca83a..ee0ab4d8 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Insert text into a cell in a spreadsheet document (Open XML SDK) 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 2ddcef68..c597c52f 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Merge two adjacent cells in a spreadsheet document (Open XML SDK) 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 086fe0fb..0f875012 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Move a paragraph from one presentation to another (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 450dacaa..bebe33bb 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Move a slide to a new position in a presentation (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 978c0725..68994fc8 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Open a presentation document for read-only access (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 e4894a80..c5f23af6 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open a spreadsheet document for read-only access (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 adfc76e9..4c6a0c44 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open a spreadsheet document from a stream (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 34f0d295..1dd1d97f 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open a word processing document for read-only access (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 757bdff5..7f887ec0 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open a word processing document from a stream (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 d837d6fc..a26f735b 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open and add text to a word processing document (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 55fdecf2..c3129d5d 100644 --- a/docs/how-to-parse-and-read-a-large-spreadsheet.md +++ b/docs/how-to-parse-and-read-a-large-spreadsheet.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Parse and read a large spreadsheet document (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 5d9beada..bc7dba08 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Remove a document part from a package (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 23110df3..cfc28b38 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Remove hidden text from a word processing document (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 33dbf700..d28fed36 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Remove the headers and footers from a word processing document (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 b429abed..caf2a09f 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Replace the header in a word processing document (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 c057c32b..39c0b527 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Replace the styles parts in a word processing document (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 704b72cc..19d337c6 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Replace the theme part in a word processing document (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 2aab1dde..2caaec39 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Retrieve a dictionary of all named ranges in a spreadsheet document (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 882feccb..63ac2bee 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Retrieve a list of the hidden rows or columns in a spreadsheet document (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 5d7bb306..faf2a2b6 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Retrieve a list of the hidden worksheets in a spreadsheet document (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 5f84bc68..d8cce05e 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Retrieve a list of the worksheets in a spreadsheet document (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 2de3097a..a398ce08 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Retrieve application property values from a word processing document (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 08bcf404..d8d4e791 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Retrieve comments from a word processing document (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 f009b9e7..6e70a0d3 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Normal +ms.localizationpriority: medium --- # Retrieve the number of slides in a presentation document (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 70b9c67a..95e8722e 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Retrieve the values of cells in a spreadsheet document (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 90205138..735708db 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Search and replace text in a document part (Open XML SDK) 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 8e6dfbb0..732acfb1 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 @@ -13,7 +13,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Set a custom property in a word processing document (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 bb797b7a..48ad5117 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 @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Set the font for a text run (Open XML SDK) diff --git a/docs/how-to-validate-a-word-processing-document.md b/docs/how-to-validate-a-word-processing-document.md index 670bc518..bc9b3649 100644 --- a/docs/how-to-validate-a-word-processing-document.md +++ b/docs/how-to-validate-a-word-processing-document.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Validate a word processing document (Open XML SDK) diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index c6a1b83b..fbfd8eeb 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Introduction to markup compatibility (Open XML SDK) diff --git a/docs/open-xml-sdk-design-considerations.md b/docs/open-xml-sdk-design-considerations.md index 501ed6bb..585f9a87 100644 --- a/docs/open-xml-sdk-design-considerations.md +++ b/docs/open-xml-sdk-design-considerations.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Open XML SDK 2.5 for Office design considerations diff --git a/docs/open-xml-sdk.md b/docs/open-xml-sdk.md index 2198b751..93cba930 100644 --- a/docs/open-xml-sdk.md +++ b/docs/open-xml-sdk.md @@ -16,7 +16,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 -localization_priority: Priority +ms.localizationpriority: high --- # Welcome to the Open XML SDK 2.5 for Office diff --git a/docs/packages-and-general.md b/docs/packages-and-general.md index 3cb36d38..33dc1085 100644 --- a/docs/packages-and-general.md +++ b/docs/packages-and-general.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Packages and general (Open XML SDK) diff --git a/docs/presentations.md b/docs/presentations.md index 014c2145..8d8d79de 100644 --- a/docs/presentations.md +++ b/docs/presentations.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Presentations (Open XML SDK) diff --git a/docs/spreadsheets.md b/docs/spreadsheets.md index c3aabab4..2939828c 100644 --- a/docs/spreadsheets.md +++ b/docs/spreadsheets.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Spreadsheets (Open XML SDK) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index 8318e308..70927cfc 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Structure of a PresentationML document (Open XML SDK) diff --git a/docs/structure-of-a-spreadsheetml-document.md b/docs/structure-of-a-spreadsheetml-document.md index 57422020..9631b6a5 100644 --- a/docs/structure-of-a-spreadsheetml-document.md +++ b/docs/structure-of-a-spreadsheetml-document.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Structure of a SpreadsheetML document (Open XML SDK) diff --git a/docs/structure-of-a-wordprocessingml-document.md b/docs/structure-of-a-wordprocessingml-document.md index 89305617..76a4b112 100644 --- a/docs/structure-of-a-wordprocessingml-document.md +++ b/docs/structure-of-a-wordprocessingml-document.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Structure of a WordprocessingML document (Open XML SDK) diff --git a/docs/understanding-the-open-xml-file-formats.md b/docs/understanding-the-open-xml-file-formats.md index b4b8bf86..5d0facbf 100644 --- a/docs/understanding-the-open-xml-file-formats.md +++ b/docs/understanding-the-open-xml-file-formats.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Understanding the Open XML file formats 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 78dfa90f..3a747e49 100644 --- a/docs/what-s-new-in-the-open-xml-sdk.md +++ b/docs/what-s-new-in-the-open-xml-sdk.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # What's new in the Open XML SDK 2.5 for Office diff --git a/docs/word-processing.md b/docs/word-processing.md index d0154cd4..2a7c9fed 100644 --- a/docs/word-processing.md +++ b/docs/word-processing.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Word processing (Open XML SDK) diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index a3607751..eff6f8b9 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with animation (Open XML SDK) diff --git a/docs/working-with-comments.md b/docs/working-with-comments.md index 883b6e7b..7c3defe3 100644 --- a/docs/working-with-comments.md +++ b/docs/working-with-comments.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with comments (Open XML SDK) diff --git a/docs/working-with-conditional-formatting.md b/docs/working-with-conditional-formatting.md index a6dcfe5b..de59d895 100644 --- a/docs/working-with-conditional-formatting.md +++ b/docs/working-with-conditional-formatting.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with conditional formatting (Open XML SDK) diff --git a/docs/working-with-formulas.md b/docs/working-with-formulas.md index 3cc45d15..93e8991e 100644 --- a/docs/working-with-formulas.md +++ b/docs/working-with-formulas.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with formulas (Open XML SDK) diff --git a/docs/working-with-handout-master-slides.md b/docs/working-with-handout-master-slides.md index b23666ea..533b089c 100644 --- a/docs/working-with-handout-master-slides.md +++ b/docs/working-with-handout-master-slides.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with handout master slides (Open XML SDK) diff --git a/docs/working-with-notes-slides.md b/docs/working-with-notes-slides.md index bee2ff0b..771ea295 100644 --- a/docs/working-with-notes-slides.md +++ b/docs/working-with-notes-slides.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with notes slides (Open XML SDK) diff --git a/docs/working-with-paragraphs.md b/docs/working-with-paragraphs.md index 6761d56e..111e8e48 100644 --- a/docs/working-with-paragraphs.md +++ b/docs/working-with-paragraphs.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with paragraphs (Open XML SDK) diff --git a/docs/working-with-pivottables.md b/docs/working-with-pivottables.md index a1e8ef5e..b0b2ad04 100644 --- a/docs/working-with-pivottables.md +++ b/docs/working-with-pivottables.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with PivotTables (Open XML SDK) diff --git a/docs/working-with-presentation-slides.md b/docs/working-with-presentation-slides.md index 0b7236b3..56d766d4 100644 --- a/docs/working-with-presentation-slides.md +++ b/docs/working-with-presentation-slides.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with presentation slides (Open XML SDK) diff --git a/docs/working-with-presentationml-documents.md b/docs/working-with-presentationml-documents.md index 252aabf9..549ca423 100644 --- a/docs/working-with-presentationml-documents.md +++ b/docs/working-with-presentationml-documents.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with PresentationML documents (Open XML SDK) diff --git a/docs/working-with-presentations.md b/docs/working-with-presentations.md index 5c9e9630..279aaffc 100644 --- a/docs/working-with-presentations.md +++ b/docs/working-with-presentations.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with presentations (Open XML SDK) diff --git a/docs/working-with-runs.md b/docs/working-with-runs.md index 909df2b7..1f4f0e62 100644 --- a/docs/working-with-runs.md +++ b/docs/working-with-runs.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with runs (Open XML SDK) diff --git a/docs/working-with-sheets.md b/docs/working-with-sheets.md index 27bb6d21..b0646233 100644 --- a/docs/working-with-sheets.md +++ b/docs/working-with-sheets.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with sheets (Open XML SDK) diff --git a/docs/working-with-slide-layouts.md b/docs/working-with-slide-layouts.md index fb066574..ada52860 100644 --- a/docs/working-with-slide-layouts.md +++ b/docs/working-with-slide-layouts.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with slide layouts (Open XML SDK) diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index a28fa52e..44cab4f9 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Normal +ms.localizationpriority: medium --- # Working with slide masters (Open XML SDK) diff --git a/docs/working-with-spreadsheetml-documents.md b/docs/working-with-spreadsheetml-documents.md index 28f21af0..30001240 100644 --- a/docs/working-with-spreadsheetml-documents.md +++ b/docs/working-with-spreadsheetml-documents.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with SpreadsheetML documents (Open XML SDK) diff --git a/docs/working-with-tables.md b/docs/working-with-tables.md index 5997c581..d0e25e7a 100644 --- a/docs/working-with-tables.md +++ b/docs/working-with-tables.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with SpreadsheetML tables (Open XML SDK) diff --git a/docs/working-with-the-calculation-chain.md b/docs/working-with-the-calculation-chain.md index 0f761dbd..8eb2f549 100644 --- a/docs/working-with-the-calculation-chain.md +++ b/docs/working-with-the-calculation-chain.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with the calculation chain (Open XML SDK) diff --git a/docs/working-with-the-shared-string-table.md b/docs/working-with-the-shared-string-table.md index 01a66bee..cd88ae81 100644 --- a/docs/working-with-the-shared-string-table.md +++ b/docs/working-with-the-shared-string-table.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with the shared string table (Open XML SDK) diff --git a/docs/working-with-wordprocessingml-documents.md b/docs/working-with-wordprocessingml-documents.md index 5eac5421..35ed6cb0 100644 --- a/docs/working-with-wordprocessingml-documents.md +++ b/docs/working-with-wordprocessingml-documents.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with WordprocessingML documents (Open XML SDK) diff --git a/docs/working-with-wordprocessingml-tables.md b/docs/working-with-wordprocessingml-tables.md index 85e1460b..c535d57f 100644 --- a/docs/working-with-wordprocessingml-tables.md +++ b/docs/working-with-wordprocessingml-tables.md @@ -12,7 +12,7 @@ ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 -localization_priority: Priority +ms.localizationpriority: high --- # Working with WordprocessingML tables (Open XML SDK) From dbd3156c1e7f2986018db3f0870f0eee720338d4 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 11:28:56 -0700 Subject: [PATCH 021/275] Update how-to-get-worksheet-information-from-a-package.md --- ...et-worksheet-information-from-a-package.md | 93 ++++--------------- 1 file changed, 19 insertions(+), 74 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 eb656264..dbdda384 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +6,6 @@ api_type: ms.assetid: 124cb0a0-cc47-433f-bad0-06b793890650 title: 'How to: Get worksheet information from an Open XML package (Open XML SDK)' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual @@ -16,12 +14,9 @@ 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 2.5 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. +The following assembly directives are required to compile the code in this topic. ```csharp using System; @@ -41,25 +36,11 @@ this topic. ## Create SpreadsheetDocument Object -In the Open XML SDK, the 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()**** methods. In this example, you must -open the file for read access only. Therefore, you can use the **Open(String, 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. +In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.md)** 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)](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open?view=openxml-2.8.1#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. ```csharp // Open file as read-only. @@ -71,25 +52,13 @@ method to open the file specified by the **filepath** for read-only access. Using mySpreadsheet As SpreadsheetDocument = SpreadsheetDocument.Open(fileName, False) ``` -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**. - +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**** and **Sheet**** 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. +The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1)** and **[Sheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1)** elements, which reference the +worksheets in the **[Workbook](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1)**. A separate XML file is created +for each **[Worksheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.worksheet?view=openxml-2.8.1)**. 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 @@ -101,17 +70,7 @@ file and is shown in the following code example. ``` -The worksheet XML files contain one or more block level elements such as -**SheetData**. **sheetData represents the cell table and contains -one or more **Row**** elements. A **row** contains one or more **Cell**** elements. Each cell contains a **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. +The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1)** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cellvalue?view=openxml-2.8.1)** 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 @@ -126,11 +85,8 @@ Sheet1.xml file and is shown in the following code example. ``` -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 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. | SpreadsheetML Element | Open XML SDK 2.5 Class | Description | |---|---|---| @@ -146,9 +102,7 @@ the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elemen ## How the Sample Code Works -After you have opened the file for read-only access, you instantiate the -**Sheets**** class. +After you have opened the file for read-only access, you instantiate the **Sheets** class. ```csharp S sheets = mySpreadsheet.WorkbookPart.Workbook.Sheets; @@ -158,10 +112,7 @@ target="P:DocumentFormat.OpenXml.Spreadsheet.Workbook.Sheets">**Sheets**** class Dim sheets As S = mySpreadsheet.WorkbookPart.Workbook.Sheets ``` -You then you iterate through the **Sheets** -collection and display **OpenXmlElement**** and the **OpenXmlAttribute**** in each element. +You then you iterate through the **Sheets** collection and display **[OpenXmlElement](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement?view=openxml-2.8.1)** and the **[OpenXmlAttribute](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlattribute?view=openxml-2.8.1)** in each element. ```csharp foreach (E sheet in sheets) @@ -181,16 +132,12 @@ target="T:DocumentFormat.OpenXml.OpenXmlAttribute">**OpenXmlAttribute**** in eac Next ``` -By displaying the attribute information you get the name and ID for each -worksheet in the spreadsheet file. +By displaying the attribute information you get the name and ID for each worksheet in the spreadsheet file. ## Sample Code -In the following code example, you retrieve and display the attributes -of the all sheets in the specified workbook contained in a **SpreadsheetDocument** document. The following code -example shows how to call the **GetSheetInfo** -method. +In the following code example, you retrieve and display the attributes of the all sheets in the specified workbook contained in a **SpreadsheetDocument** document. The following code example shows how to call the **GetSheetInfo** method. ```csharp GetSheetInfo(@"C:\Users\Public\Documents\Sheet5.xlsx"); @@ -240,7 +187,5 @@ The following is the complete code sample in both C\# and Visual Basic. ## See also - - [Open XML SDK 2.5 class library -reference](https://msdn.microsoft.com/library/36c8a76e-ce1b-5959-7e85-5d77db7f46d6(Office.15).aspx) +reference](/office/open-xml/open-xml-sdk.md) From a0606e807b54f04be40f8533b26d0b46356e15ba Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 11:30:24 -0700 Subject: [PATCH 022/275] Update word-processing.md fix relative url --- docs/word-processing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/word-processing.md b/docs/word-processing.md index 2a7c9fed..2bb8ebee 100644 --- a/docs/word-processing.md +++ b/docs/word-processing.md @@ -65,7 +65,7 @@ This section provides how-to topics for working with word processing documents u - [Retrieve comments from a word processing document](how-to-retrieve-comments-from-a-word-processing-document.md) -- [Retrieve property values from a Word 2007 document by using the Open XML API](https://docs.microsoft.com/previous-versions/office/developer/office-2010/bb521237(v=office.14)) +- [Retrieve property values from a Word document by using the Open XML API](/office/open-xml/how-to-retrieve-application-property-values-from-a-word-processing-document.md) - [Set a custom property in a word processing document](how-to-set-a-custom-property-in-a-word-processing-document.md) From 4d41b5caa63bc6f6d9d76064358ab4f009bd092b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 11:52:02 -0700 Subject: [PATCH 023/275] Update structure-of-a-presentationml-document.md --- .../structure-of-a-presentationml-document.md | 614 ++++++------------ 1 file changed, 204 insertions(+), 410 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index 70927cfc..e0f2a449 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -7,46 +7,26 @@ api_type: ms.assetid: fe780fcd-ed8f-4ee1-938e-cf3bb358ccae title: Structure of a PresentationML document (Open XML SDK) ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 09/16/2021 ms.localizationpriority: high --- # Structure of a PresentationML document (Open XML SDK) -The document structure of a PresentationML document consists of the -\ (Presentation) element that contains \ -(Slide Master), \ (Slide Layout), \ (Slide), and -\ (Theme) elements that reference the slides in the -presentation. (The Theme element is the root element of the -DrawingMLTheme part.) These elements are the minimum elements required -for a valid presentation document. +The document structure of a PresentationML document consists of the \ (Presentation) element that contains \ (Slide Master), \ (Slide Layout), \ (Slide), and \ (Theme) elements that reference the slides in the presentation. (The Theme element is the root element of the DrawingMLTheme part.) These elements are the minimum elements required for a valid presentation document. -In addition, a presentation document might contain \ (Notes -Slide), \ (Handout Master), \ (Shape), \ -(Picture), \ (Table), and other slide-related elements. (Table -elements are defined in the DrawingML schema.) +In addition, a presentation document might contain \ (Notes Slide), \ (Handout Master), \ (Shape), \ (Picture), \ (Table), and other slide-related elements. (Table elements are defined in the DrawingML schema.) -Other features that a PresentationML document can contain include the -following: animation, audio, video, and transitions between slides. +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. A separate XML file is created for each slide. +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. A separate XML file is created for each slide. --------------------------------------------------------------------------------- ## 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** -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 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** 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**\* | @@ -59,44 +39,30 @@ correspond to some of the important presentation elements. | Slide | \ | [Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesslide.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.handoutmaster.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commentlist.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commentauthorlist.aspx) | 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). | +| Handout Master | \ | [HandoutMaster](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.handoutmaster?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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. ### Presentation Part -A PresentationML package's main part starts with a \ 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 set of slide -masters used in the presentation. The notes master contains information -about the formatting of notes pages. 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.) +A PresentationML package's main part starts with a \ 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 set of slide +masters used in the presentation. The notes master contains information about the formatting of notes pages. 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.) ### Presentation Properties Part -The root element of the Presentation Properties part is the -\ element. +The root element of the Presentation Properties part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Presentation +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Presentation Properties part as follows: -An instance of this part type contains all the presentation's -properties. +An instance of this part type contains all the presentation's properties. -A package shall contain exactly one Presentation Properties part, and -that part shall be the target of an implicit relationship from the -Presentation (§13.3.6) part. +A package shall contain exactly one Presentation Properties part, and that part shall be the target of an implicit relationship from the Presentation (§13.3.6) part. -Example: The following Presentation part-relationship item contains a -relationship to the Presentation Properties part, which is stored in the -ZIP item presProps.xml: +Example: The following Presentation part-relationship item contains a relationship to the Presentation Properties part, which is stored in the ZIP item presProps.xml: ```xml @@ -105,8 +71,7 @@ ZIP item presProps.xml: ``` -The root element for a part of this content type shall be -presentationPr. +The root element for a part of this content type shall be presentationPr. Example: @@ -119,12 +84,9 @@ Example: ``` -A Presentation Properties part shall be located within the package -containing the relationships part (expressed syntactically, the -TargetMode attribute of the Relationship element shall be Internal). +A Presentation Properties part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Presentation Properties part shall not have implicit or explicit -relationships to any other part defined by ISO/IEC 29500. +A Presentation Properties part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -132,24 +94,13 @@ relationships to any other part defined by ISO/IEC 29500. The root element of the Slide Master part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Slide Master part as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Slide Master part as follows: -An instance of this part type contains the master definition of -formatting, text, and objects that appear on each slide in the -presentation that is derived from this slide master. +An instance of this part type contains the master definition of formatting, text, and objects that appear on each slide in the presentation that is derived from this slide master. -A package shall contain one or more Slide Master parts, each of which -shall be the target of an explicit relationship from the Presentation -(§13.3.6) part, as well as an implicit relationship from any Slide -Layout (§13.3.9) part where that slide layout is defined based on this -slide master. Each can optionally be the target of a relationship in a -Slide Layout (§13.3.9) part as well. +A package shall contain one or more Slide Master parts, each of which shall be the target of an explicit relationship from the Presentation (§13.3.6) part, as well as an implicit relationship from any Slide Layout (§13.3.9) part where that slide layout is defined based on this slide master. Each can optionally be the target of a relationship in a Slide Layout (§13.3.9) part as well. -Example: The following Presentation part-relationship item contains a -relationship to the Slide Master part, which is stored in the ZIP item -slideMasters/slideMaster1.xml: +Example: The following Presentation part-relationship item contains a relationship to the Slide Master part, which is stored in the ZIP item slideMasters/slideMaster1.xml: ```xml @@ -159,9 +110,7 @@ Target="slideMasters/slideMaster1.xml"/> ``` -The root element for a part of this content type shall be sldMaster. - -Example: +The root element for a part of this content type shall be sldMaster. Example: ```xml @@ -172,37 +121,32 @@ Example: ``` -A Slide Master part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Slide Master part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Slide Master part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Slide Master part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Custom XML Data Storage (§15.2.4) -• Theme (§14.2.7) -• Thumbnail (§15.2.16) +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Custom XML Data Storage (§15.2.4) +- Theme (§14.2.7) +- Thumbnail (§15.2.16) A Slide Master part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• Slide Layout (§13.3.9) -• Video (§15.2.15) - -A Slide Master part shall not have implicit or explicit relationships to -any other part defined by ISO/IEC 29500. +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- Slide Layout (§13.3.9) +- Video (§15.2.15) + +A Slide Master part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -210,23 +154,13 @@ any other part defined by ISO/IEC 29500. The root element of the Slide Layout part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Slide Layout part as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Slide Layout part as follows: -An instance of this part type contains the definition for a slide layout -template for this presentation. This template defines the default -appearance and positioning of drawing objects on this slide type when it -is created. +An instance of this part type contains the definition for a slide layout template for this presentation. This template defines the default appearance and positioning of drawing objects on this slide type when it is created. -A package shall contain one or more Slide Layout parts, and each of -those parts shall be the target of an explicit relationship in the Slide -Master (§13.3.10) part, as well as an implicit relationship from each of -the Slide (§13.3.8) parts associated with this slide layout. +A package shall contain one or more Slide Layout parts, and each of those parts shall be the target of an explicit relationship in the Slide Master (§13.3.10) part, as well as an implicit relationship from each of the Slide (§13.3.8) parts associated with this slide layout. -Example: The following Slide Master part-relationship item contains -relationships to several Slide Layout parts, which are stored in the ZIP -items ../slideLayouts/slideLayoutN.xml: +Example: The following Slide Master part-relationship item contains relationships to several Slide Layout parts, which are stored in the ZIP items ../slideLayouts/slideLayoutN.xml: ```xml @@ -242,10 +176,7 @@ items ../slideLayouts/slideLayoutN.xml: ``` - -The root element for a part of this content type shall be sldLayout. - -Example: +The root element for a part of this content type shall be sldLayout. Example: ```xml @@ -259,33 +190,29 @@ Example: ``` -A Slide Layout part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Slide Layout part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Custom XML Data Storage (§15.2.4) -• Slide Master (§13.3.10) -• Theme Override (§14.2.8) -• Thumbnail (§15.2.16) +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Custom XML Data Storage (§15.2.4) +- Slide Master (§13.3.10) +- Theme Override (§14.2.8) +- Thumbnail (§15.2.16) -A Slide Layout part is permitted to have explicit relationships to the -following parts defined by ISO/IEC 29500: +A Slide Layout part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: + +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- Video (§15.2.15) -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• Video (§15.2.15) - -A Slide Layout part shall not have implicit or explicit relationships to -any other part defined by ISO/IEC 29500. +A Slide Layout part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -293,26 +220,16 @@ any other part defined by ISO/IEC 29500. The root element of the Slide part is the \ element. -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. +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. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Slide part as +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Slide part as follows: A Slide part contains the contents of a single slide. -A package shall contain one Slide part per slide, and each of those -parts shall be the target of an explicit relationship from the -Presentation (§13.3.6) part. +A package shall contain one Slide part per slide, and each of those parts shall be the target of an explicit relationship from the Presentation (§13.3.6) part. -Example: Consider a PresentationML document having two slides. The -corresponding Presentation part relationship item contains two -relationships to Slide parts, which are stored in the ZIP items -slides/slide1.xml and slides/slide2.xml: +Example: Consider a PresentationML document having two slides. The corresponding Presentation part relationship item contains two relationships to Slide parts, which are stored in the ZIP items slides/slide1.xml and slides/slide2.xml: ```xml @@ -346,41 +263,35 @@ nodeType="tmRoot"/> ``` -A Slide part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Slide part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Slide part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Slide part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Comments (§13.3.2) -• Custom XML Data Storage (§15.2.4) -• Notes Slide (§13.3.5) -• Theme Override (§14.2.8) -• Thumbnail (§15.2.16) -• Slide Layout (§13.3.9) -• Slide Synchronization Data (§13.3.11) - -A Slide part is permitted to have explicit relationships to the -following parts defined by ISO/IEC 29500: +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Comments (§13.3.2) +- Custom XML Data Storage (§15.2.4) +- Notes Slide (§13.3.5) +- Theme Override (§14.2.8) +- Thumbnail (§15.2.16) +- Slide Layout (§13.3.9) +- Slide Synchronization Data (§13.3.11) -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• User Defined Tags (§13.3.12) -• Video (§15.2.15) - -A Slide part shall not have implicit or explicit relationships to any -other part defined by ISO/IEC 29500. +A Slide part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: + +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- User Defined Tags (§13.3.12) +- Video (§15.2.15) + +A Slide part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -388,29 +299,13 @@ other part defined by ISO/IEC 29500. The root element of the Theme part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML DrawingML Theme part as follows: - -An instance of this part type contains information about a document's -theme, which is a combination of color scheme, font scheme, and format -scheme (the latter also being referred to as effects). For a -WordprocessingML document, the choice of theme affects the color and -style of headings, among other things. For a SpreadsheetML document, the -choice of theme affects the color and style of cell contents and charts, -among other things. For a PresentationML document, the choice of theme -affects the formatting of slides, handouts, and notes via the associated -master, among other things. - -A WordprocessingML or SpreadsheetML package shall contain zero or one -Theme part, which shall be the target of an implicit relationship in a -Main Document (§11.3.10) or Workbook (§12.3.23) part. A PresentationML -package shall contain zero or one Theme part per Handout Master -(§13.3.3), Notes Master (§13.3.4), Slide Master (§13.3.10) or -Presentation (§13.3.6) part via an implicit relationship. - -Example: The following WordprocessingML Main Document part-relationship -item contains a relationship to the Theme part, which is stored in the -ZIP item theme/theme1.xml: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML DrawingML Theme part as follows: + +An instance of this part type contains information about a document's theme, which is a combination of color scheme, font scheme, and format scheme (the latter also being referred to as effects). For a WordprocessingML document, the choice of theme affects the color and style of headings, among other things. For a SpreadsheetML document, the choice of theme affects the color and style of cell contents and charts, among other things. For a PresentationML document, the choice of theme affects the formatting of slides, handouts, and notes via the associated master, among other things. + +A WordprocessingML or SpreadsheetML package shall contain zero or one Theme part, which shall be the target of an implicit relationship in a Main Document (§11.3.10) or Workbook (§12.3.23) part. A PresentationML package shall contain zero or one Theme part per Handout Master (§13.3.3), Notes Master (§13.3.4), Slide Master (§13.3.10) or Presentation (§13.3.6) part via an implicit relationship. + +Example: The following WordprocessingML Main Document part-relationship item contains a relationship to the Theme part, which is stored in the ZIP item theme/theme1.xml: ```xml @@ -419,12 +314,9 @@ ZIP item theme/theme1.xml: ``` -The root element for a part of this content type shall be -officeStyleSheet. +The root element for a part of this content type shall be officeStyleSheet. -Example: theme1.xml contains the following, where the name attributes -of the clrScheme, fontScheme, and fmtScheme elements correspond to the -document's color scheme, font scheme, and format scheme, respectively: +Example: theme1.xml contains the following, where the name attributes of the clrScheme, fontScheme, and fmtScheme elements correspond to the document's color scheme, font scheme, and format scheme, respectively: ```xml @@ -443,40 +335,28 @@ document's color scheme, font scheme, and format scheme, respectively: ``` -A Theme part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of +A Theme part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Theme part is permitted to contain explicit relationships to the -following parts defined by ISO/IEC 29500: +A Theme part is permitted to contain explicit relationships to the following parts defined by ISO/IEC 29500: -• Image (§15.2.14) +- Image (§15.2.14) -A Theme part shall not have any implicit or explicit relationships to -other parts defined by ISO/IEC 29500. +A Theme part shall not have any implicit or explicit relationships to other parts defined by ISO/IEC 29500. © ISO/IEC29500: 2008. ### Notes Master Part -The root element of the Notes Master part is the \ -element. +The root element of the Notes Master part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Notes Master part as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Notes Master part as follows: -An instance of this part type contains information about the content and -formatting of all notes pages. +An instance of this part type contains information about the content and formatting of all notes pages. -A package shall contain at most one Notes Master part, and that part -shall be the target of an implicit relationship from the Notes Slide -(§13.3.5) part, as well as an explicit relationship from the -Presentation (§13.3.6) part. +A package shall contain at most one Notes Master part, and that part shall be the target of an implicit relationship from the Notes Slide (§13.3.5) part, as well as an explicit relationship from the Presentation (§13.3.6) part. -Example: The following Presentation part-relationship item contains a -relationship to the Notes Master part, which is stored in the ZIP item -notesMasters/notesMaster1.xml: +Example: The following Presentation part-relationship item contains a relationship to the Notes Master part, which is stored in the ZIP item notesMasters/notesMaster1.xml: ```xml @@ -486,9 +366,7 @@ Target="notesMasters/notesMaster1.xml"/> ``` -The root element for a part of this content type shall be notesMaster. - -Example: +The root element for a part of this content type shall be notesMaster. Example: ```xml @@ -499,36 +377,30 @@ Example: ``` -A Notes Master part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Notes Master part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Notes Master part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Notes Master part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Custom XML Data Storage (§15.2.4) -• Theme (§14.2.7) -• Thumbnail (§15.2.16) +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Custom XML Data Storage (§15.2.4) +- Theme (§14.2.7) +- Thumbnail (§15.2.16) -A Notes Master part is permitted to have explicit relationships to the -following parts defined by ISO/IEC 29500: +A Notes Master part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• Video (§15.2.15) - -The Notes Master part shall not have implicit or explicit relationships -to any other part defined by ISO/IEC 29500. +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- Video (§15.2.15) + +The Notes Master part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -536,19 +408,13 @@ to any other part defined by ISO/IEC 29500. The root element of the Notes Slide part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Notes Slide part as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Notes Slide part as follows: An instance of this part type contains the notes for a single slide. -A package shall contain one Notes Slide part for each slide that -contains notes. If they exist, those parts shall each be the target of -an implicit relationship from the Slide (§13.3.8) part. +A package shall contain one Notes Slide part for each slide that contains notes. If they exist, those parts shall each be the target of an implicit relationship from the Slide (§13.3.8) part. -Example: The following Slide part-relationship item contains a -relationship to a Notes Slide part, which is stored in the ZIP item -../notesSlides/notesSlide1.xml: +Example: The following Slide part-relationship item contains a relationship to a Notes Slide part, which is stored in the ZIP item ../notesSlides/notesSlide1.xml: ```xml @@ -558,9 +424,7 @@ Target="../notesSlides/notesSlide1.xml"/> ``` -The root element for a part of this content type shall be notes. - -Example: +The root element for a part of this content type shall be notes. Example: ```xml @@ -580,52 +444,41 @@ the Relationship element shall be Internal). A Notes Slide part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Custom XML Data Storage (§15.2.4) -• Notes Master (§13.3.4) -• Theme Override (§14.2.8) -• Thumbnail (§15.2.16) +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Custom XML Data Storage (§15.2.4) +- Notes Master (§13.3.4) +- Theme Override (§14.2.8) +- Thumbnail (§15.2.16) -A Notes Slide part is permitted to have explicit relationships to the -following parts defined by ISO/IEC 29500: +A Notes Slide part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• Video (§15.2.15) - -The Notes Slide part shall not have implicit or explicit relationships -to any other part defined by ISO/IEC 29500. +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- Video (§15.2.15) + +The Notes Slide part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. ### Handout Master Part -The root element of the Handout Master part is the \ -element. +The root element of the Handout Master part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Handout Master part -as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Handout Master part as follows: -An instance of this part type contains the look, position, and size of -the slides, notes, header and footer text, date, or page number on the -presentation's handout. +An instance of this part type contains the look, position, and size of the slides, notes, header and footer text, date, or page number on the presentation's handout. -A package shall contain at most one Handout Master part, and it shall be -the target of an explicit relationship from the Presentation (§13.3.6) -part. +A package shall contain at most one Handout Master part, and it shall be the target of an explicit relationship from the Presentation (§13.3.6) part. -Example: The following Presentation part-relationship item contains a -relationship to the Handout Master part, which is stored in the ZIP item +Example: The following Presentation part-relationship item contains a relationship to the Handout Master part, which is stored in the ZIP item handoutMasters/handoutMaster1.xml: ```xml @@ -636,9 +489,7 @@ handoutMasters/handoutMaster1.xml: ``` -The root element for a part of this content type shall be handoutMaster. - -Example: +The root element for a part of this content type shall be handoutMaster. Example: ```xml @@ -649,36 +500,31 @@ Example: ``` -A Handout Master part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Handout Master part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Handout Master part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Handout Master part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: -• Additional Characteristics (§15.2.1) -• Bibliography (§15.2.3) -• Custom XML Data Storage (§15.2.4) -• Theme (§14.2.7) -• Thumbnail (§15.2.16) +- Additional Characteristics (§15.2.1) +- Bibliography (§15.2.3) +- Custom XML Data Storage (§15.2.4) +- Theme (§14.2.7) +- Thumbnail (§15.2.16) A Handout Master part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: -• Audio (§15.2.2) -• Chart (§14.2.1) -• Content Part (§15.2.4) -• Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram -Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) -• Embedded Control Persistence (§15.2.9) -• Embedded Object (§15.2.10) -• Embedded Package (§15.2.11) -• Hyperlink (§15.3) -• Image (§15.2.14) -• Video (§15.2.15) - -A Handout Master part shall not have implicit or explicit relationships -to any other part defined by ISO/IEC 29500. +- Audio (§15.2.2) +- Chart (§14.2.1) +- Content Part (§15.2.4) +- Diagrams: Diagram Colors (§14.2.3), Diagram Data (§14.2.4), Diagram Layout Definition (§14.2.5), and Diagram Styles (§14.2.6) +- Embedded Control Persistence (§15.2.9) +- Embedded Object (§15.2.10) +- Embedded Package (§15.2.11) +- Hyperlink (§15.3) +- Image (§15.2.14) +- Video (§15.2.15) + +A Handout Master part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -801,58 +647,26 @@ to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. - ---------------------------------------------------------------------------------- ## The Structure of a Minimum Presentation File -Now that you are familiar with the parts of a PresentationML document, -consider how some of these parts are implemented and connected in an -actual presentation file. As shown in 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), -you can use the Open XML API to build up a minimum presentation file, -part by part. +Now that you are familiar with the parts of a PresentationML document, consider how some of these parts are implemented and connected in an actual presentation file. As shown in the article [How to: Create a presentation document by providing a file name](how-to-create-a-presentation-document-by-providing-a-file-name.md), you can use the Open XML API to build up a minimum presentation file, part by part. -A minimum presentation file consists of a presentation part, represented -by the file presentation.xml, as well as a presentation properties part -(presProps.xml), a slide master part (slideMaster.xml), a slide layout -part (slideLayout.xml), and a theme part (theme.xml). One or more slide -parts (slide.xml) are optional. +A minimum presentation file consists of a presentation part, represented by the file presentation.xml, as well as a presentation properties part (presProps.xml), a slide master part (slideMaster.xml), a slide layout part (slideLayout.xml), and a theme part (theme.xml). One or more slide parts (slide.xml) are optional. -The packaging structure of a presentation document contains several -references between the parts, including some circular references. For -example, slide layouts reference slide masters, and slide masters -reference slide layouts. +The packaging structure of a presentation document contains several references between the parts, including some circular references. For example, slide layouts reference slide masters, and slide masters reference slide layouts. - ---------------------------------------------------------------------------------- ## 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 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. -Figure 1 shows the structure under the **ppt** -folder of the .zip package for a minimum presentation that contains a -single slide. +Figure 1 shows the structure under the **ppt** folder of the .zip package for a minimum presentation that contains a single slide. Figure 1. Minimum presentation folder structure - ![Minimum presentation folder structure](./media/odc_oxml_ppt_documentstructure_fig01.jpg) -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 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. ```xml @@ -875,9 +689,7 @@ 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 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 2.5 to create a minimum presentation. ```xml @@ -893,10 +705,8 @@ when you run the Open XML SDK 2.5 to create a minimum presentation. Id="rId5" /> ``` -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 2.5 to create a minimum presentation. ```xml @@ -941,36 +751,20 @@ Open XML SDK 2.5 to create a minimum presentation. ``` ---------------------------------------------------------------------------------- ## Typical Presentation Scenario -A typical presentation does not have a minimum configuration. A typical -presentation might contain several slides, each of which references -slide layouts and slide masters, and which might contain comments. In -addition, a presentation might contain handouts and notes slides, each -of which is represented by separate parts. These additional parts are -contained within the .zip package of the presentation document. +A typical presentation does not have a minimum configuration. A typical presentation might contain several slides, each of which references slide layouts and slide masters, and which might contain comments. In addition, a presentation might contain handouts and notes slides, each of which is represented by separate parts. These additional parts are contained within the .zip package of the presentation document. -Figure 2 shows most of the elements that you would find in a typical -presentation. +Figure 2 shows most of the elements that you would find in a typical presentation. Figure 2. Elements of a PresentationML file - ![Elements of a PresentationML file](./media/odc_oxml_ppt_documentstructure_fig02.jpg) - --------------------------------------------------------------------------------- ## See also - - -[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) - -[Working with presentations (Open XML SDK)](working-with-presentations.md) - -[Working with presentation slides (Open XML SDK)](working-with-presentation-slides.md) - -[Working with slide masters (Open XML SDK)](working-with-slide-masters.md) - -[Working with slide layouts (Open XML SDK)](working-with-slide-layouts.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) +[Working with presentations (Open XML SDK)](working-with-presentations.md) +[Working with presentation slides (Open XML SDK)](working-with-presentation-slides.md) +[Working with slide masters (Open XML SDK)](working-with-slide-masters.md) +[Working with slide layouts (Open XML SDK)](working-with-slide-layouts.md) From c441301cf61063fe4eea7620505ec91608423c11 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 11:59:05 -0700 Subject: [PATCH 024/275] Update structure-of-a-presentationml-document.md --- docs/structure-of-a-presentationml-document.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index e0f2a449..87fcd32a 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -31,14 +31,14 @@ Using the Open XML SDK 2.5, you can create document structure and content that u | **Package Part** | **Top Level PresentationML Element** | **Open XML SDK 2.5 Class** | **Description**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Presentation | \ | [Presentation](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentation.aspx) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | -| Presentation Properties | \ | [PresentationProperties](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.presentationproperties.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidemaster.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.theme.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesmaster.aspx) | 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.notesslide.aspx) | 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). | +| Presentation | \ | [Presentation](dotnet/api/documentformat.openxml.presentation/presentation.xml) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | +| Presentation Properties | \ | [PresentationProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.presentationproperties?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidemaster?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidelayout?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.drawing.theme?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slide?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.notesmaster?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.notesslide?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.handoutmaster?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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). | From 62bba7d516276d0b26a452c3a94497e705f26b9d Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 12:04:04 -0700 Subject: [PATCH 025/275] Update structure-of-a-presentationml-document.md --- .../structure-of-a-presentationml-document.md | 94 +++++-------------- 1 file changed, 25 insertions(+), 69 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index 87fcd32a..c8c4e586 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -43,20 +42,17 @@ Using the Open XML SDK 2.5, you can create document structure and content that u | Comments | \ | [CommentList](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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. +*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. ### Presentation Part -A PresentationML package's main part starts with a \ 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 set of slide -masters used in the presentation. The notes master contains information about the formatting of notes pages. 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.) +A PresentationML package's main part starts with a \ 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 set of slide masters used in the presentation. The notes master contains information about the formatting of notes pages. 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.) ### Presentation Properties Part The root element of the Presentation Properties part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Presentation -Properties part as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Presentation Properties part as follows: An instance of this part type contains all the presentation's properties. @@ -71,9 +67,7 @@ Example: The following Presentation part-relationship item contains a relationsh ``` -The root element for a part of this content type shall be presentationPr. - -Example: +The root element for a part of this content type shall be presentationPr. Example: ```xml @@ -222,8 +216,7 @@ The root element of the Slide part is the \ element. 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. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Slide part as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Slide part as follows: A Slide part contains the contents of a single slide. @@ -335,8 +328,7 @@ Example: theme1.xml contains the following, where the name attributes of the clr ``` -A Theme part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Theme part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). A Theme part is permitted to contain explicit relationships to the following parts defined by ISO/IEC 29500: @@ -437,12 +429,9 @@ The root element for a part of this content type shall be notes. Example: ``` -A Notes Slide part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Notes Slide part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Notes Slide part is permitted to have implicit relationships to the -following parts defined by ISO/IEC 29500: +A Notes Slide part is permitted to have implicit relationships to the following parts defined by ISO/IEC 29500: - Additional Characteristics (§15.2.1) - Bibliography (§15.2.3) @@ -510,8 +499,7 @@ A Handout Master part is permitted to have implicit relationships to the followi - Theme (§14.2.7) - Thumbnail (§15.2.16) -A Handout Master part is permitted to have explicit relationships to the -following parts defined by ISO/IEC 29500: +A Handout Master part is permitted to have explicit relationships to the following parts defined by ISO/IEC 29500: - Audio (§15.2.2) - Chart (§14.2.1) @@ -532,21 +520,14 @@ A Handout Master part shall not have implicit or explicit relationships to any o The root element of the Comments part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Comments part as +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Comments part as follows: -An instance of this part type contains the comments for a single slide. -Each comment is tied to its author via an author-ID. Each comment's -index number and author-ID combination are unique. +An instance of this part type contains the comments for a single slide. Each comment is tied to its author via an author-ID. Each comment's index number and author-ID combination are unique. -A package shall contain one Comments part for each slide containing one -or more comments, and each of those parts shall be the target of an -implicit relationship from its corresponding Slide (§13.3.8) part. +A package shall contain one Comments part for each slide containing one or more comments, and each of those parts shall be the target of an implicit relationship from its corresponding Slide (§13.3.8) part. -Example: The following Slide part-relationship item contains a -relationship to a Comments part, which is stored in the ZIP item -../comments/comment2.xml: +Example: The following Slide part-relationship item contains a relationship to a Comments part, which is stored in the ZIP item ../comments/comment2.xml: ```xml @@ -558,10 +539,7 @@ relationship to a Comments part, which is stored in the ZIP item The root element for a part of this content type shall be cmLst. -Example: The Comments part contains three comments, two created by one -author, and one created by another, all at the dates and times shown. -The index numbers are assigned on a per-author basis, starting at 1 for -an author's first comment: +Example: The Comments part contains three comments, two created by one author, and one created by another, all at the dates and times shown. The index numbers are assigned on a per-author basis, starting at 1 for an author's first comment: ```xml @@ -580,12 +558,9 @@ an author's first comment: ``` -A Comments part shall be located within the package containing the -relationships part (expressed syntactically, the TargetMode attribute of -the Relationship element shall be Internal). +A Comments part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Comments part shall not have implicit or explicit relationships to any -other part defined by ISO/IEC 29500. +A Comments part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -594,23 +569,13 @@ other part defined by ISO/IEC 29500. The root element of the Comments Author part is the \ element. -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML Comments Author part -as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML Comments Author part as follows: -An instance of this part type contains information about each author who -has added a comment to the document. That information includes the -author's name, initials, a unique author-ID, a last-comment-index-used -count, and a display color. (The color can be used when displaying -comments to distinguish comments from different authors.) +An instance of this part type contains information about each author who has added a comment to the document. That information includes the author's name, initials, a unique author-ID, a last-comment-index-used count, and a display color. (The color can be used when displaying comments to distinguish comments from different authors.) -A package shall contain at most one Comment Authors part. If it exists, -that part shall be the target of an implicit relationship from the -Presentation (§13.3.6) part. +A package shall contain at most one Comment Authors part. If it exists, that part shall be the target of an implicit relationship from the Presentation (§13.3.6) part. -Example: The following Presentation part relationship item contains a -relationship to the Comment Authors part, which is stored in the ZIP -item commentAuthors.xml: +Example: The following Presentation part relationship item contains a relationship to the Comment Authors part, which is stored in the ZIP item commentAuthors.xml: ```xml @@ -621,13 +586,7 @@ item commentAuthors.xml: The root element for a part of this content type shall be cmAuthorLst. -Example: Two people have authored comments in this document: Mary Smith -and Peter Jones. Her initials are "mas", her author-ID is 0, and her -comments' display color index is 0. Since Mary's last-comment-index-used -value is 3, the next comment-index to be used for her is 4. His initials -are "pjj", his author-ID is 1, and his comments' display color index is -1. Since Peter's last-comment-index-used value is 1, the next -comment-index to be used for him is 2: +Example: Two people have authored comments in this document: Mary Smith and Peter Jones. Her initials are "mas", her author-ID is 0, and her comments' display color index is 0. Since Mary's last-comment-index-used value is 3, the next comment-index to be used for her is 4. His initials are "pjj", his author-ID is 1, and his comments' display color index is 1. Since Peter's last-comment-index-used value is 1, the next comment-index to be used for him is 2: ```xml @@ -638,12 +597,9 @@ clrIdx="1"/> ``` -A Comment Authors part shall be located within the package containing -the relationships part (expressed syntactically, the TargetMode -attribute of the Relationship element shall be Internal). +A Comment Authors part shall be located within the package containing the relationships part (expressed syntactically, the TargetMode attribute of the Relationship element shall be Internal). -A Comment Authors part shall not have implicit or explicit relationships -to any other part defined by ISO/IEC 29500. +A Comment Authors part shall not have implicit or explicit relationships to any other part defined by ISO/IEC 29500. © ISO/IEC29500: 2008. @@ -664,6 +620,7 @@ Figure 1 shows the structure under the **ppt** folder of the .zip package for a Figure 1. Minimum presentation folder structure ![Minimum presentation folder structure](./media/odc_oxml_ppt_documentstructure_fig01.jpg) + 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. @@ -705,8 +662,7 @@ The following XML code is the PresentationML that represents the relationship pa Id="rId5" /> ``` -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 2.5 to create a minimum presentation. ```xml From 5c43de24e2ac4e0a25d6ad32fee136f2c77c4631 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 13:53:43 -0700 Subject: [PATCH 026/275] Update structure-of-a-presentationml-document.md --- docs/structure-of-a-presentationml-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index c8c4e586..e3ebf1a5 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -30,7 +30,7 @@ Using the Open XML SDK 2.5, you can create document structure and content that u | **Package Part** | **Top Level PresentationML Element** | **Open XML SDK 2.5 Class** | **Description**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Presentation | \ | [Presentation](dotnet/api/documentformat.openxml.presentation/presentation.xml) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | +| Presentation | \ | [Presentation](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.presentation?view=openxml-2.8.1) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | | Presentation Properties | \ | [PresentationProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.presentationproperties?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidemaster?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidelayout?view=openxml-2.8.1) | 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). | From e1268e23e82d2bf6a0add8e16129f44d3fbdf432 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 15:42:27 -0700 Subject: [PATCH 027/275] Update structure-of-a-presentationml-document.md Fix version --- .../structure-of-a-presentationml-document.md | 35 ++++++++++--------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index e3ebf1a5..7c365747 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -12,6 +12,7 @@ ms.topic: conceptual ms.date: 09/16/2021 ms.localizationpriority: high --- + # Structure of a PresentationML document (Open XML SDK) The document structure of a PresentationML document consists of the \ (Presentation) element that contains \ (Slide Master), \ (Slide Layout), \ (Slide), and \ (Theme) elements that reference the slides in the presentation. (The Theme element is the root element of the DrawingMLTheme part.) These elements are the minimum elements required for a valid presentation document. @@ -22,22 +23,20 @@ Other features that a PresentationML document can contain include the following: 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. A separate XML file is created for each slide. +## Important Presentation Parts -## 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](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx)** 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 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](https://docs.microsoft.com/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**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Presentation | \ | [Presentation](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.presentation?view=openxml-2.8.1) | The root element for the Presentation part. This element specifies within it fundamental presentation-wide properties. | -| Presentation Properties | \ | [PresentationProperties](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.presentationproperties?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidemaster?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slidelayout?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.drawing.theme?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.slide?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.notesmaster?view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.notesslide?view=openxml-2.8.1) | 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). | +| Presentation | \ | [Presentation](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.handoutmaster?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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). | @@ -603,7 +602,7 @@ A Comment Authors part shall not have implicit or explicit relationships to any © ISO/IEC29500: 2008. -## The Structure of a Minimum Presentation File +## The Structure of a Minimum Presentation File Now that you are familiar with the parts of a PresentationML document, consider how some of these parts are implemented and connected in an actual presentation file. As shown in the article [How to: Create a presentation document by providing a file name](how-to-create-a-presentation-document-by-providing-a-file-name.md), you can use the Open XML API to build up a minimum presentation file, part by part. @@ -611,7 +610,7 @@ A minimum presentation file consists of a presentation part, represented by the The packaging structure of a presentation document contains several references between the parts, including some circular references. For example, slide layouts reference slide masters, and slide masters reference slide layouts. -## Generated PresentationML XML Code +## 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. @@ -620,7 +619,7 @@ Figure 1 shows the structure under the **ppt** folder of the .zip package for a Figure 1. Minimum presentation folder structure ![Minimum presentation folder structure](./media/odc_oxml_ppt_documentstructure_fig01.jpg) - + 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. @@ -646,6 +645,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. ```xml @@ -662,6 +662,7 @@ The following XML code is the PresentationML that represents the relationship pa Id="rId5" /> ``` + 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. ```xml @@ -707,7 +708,7 @@ The following XML code is the PresentationML that represents the slide part of t ``` -## Typical Presentation Scenario +## Typical Presentation Scenario A typical presentation does not have a minimum configuration. A typical presentation might contain several slides, each of which references slide layouts and slide masters, and which might contain comments. In addition, a presentation might contain handouts and notes slides, each of which is represented by separate parts. These additional parts are contained within the .zip package of the presentation document. @@ -717,7 +718,7 @@ Figure 2. Elements of a PresentationML file ![Elements of a PresentationML file](./media/odc_oxml_ppt_documentstructure_fig02.jpg) -## See also +## See also [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) [Working with presentations (Open XML SDK)](working-with-presentations.md) From 9617be4171fc5bdb29231859973284cafd538a7b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Thu, 16 Sep 2021 15:52:55 -0700 Subject: [PATCH 028/275] fix build errors preserve version --- ...all-revisions-in-a-word-processing-document.md | 2 +- ...to-get-worksheet-information-from-a-package.md | 15 ++++++--------- docs/includes/addinsnote.md | 2 +- 3 files changed, 8 insertions(+), 11 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 c432e2d4..f13c7209 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,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) -- [Accepting Revisions in Open XML Word-Processing Documents](https://docs.microsoft.com/previous-versions/office/developer/office-2007/ee836138(v=office.12)) +- [Accepting Revisions in Open XML Word-Processing Documents](https://docs.microsoft.com/previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) 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 dbdda384..bffbdb47 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -56,9 +56,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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1)** and **[Sheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1)** elements, which reference the -worksheets in the **[Workbook](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1)**. A separate XML file is created -for each **[Worksheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.worksheet?view=openxml-2.8.1)**. 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1&preserve-view=true)** and **[Sheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1&preserve-view=true)** elements, which reference the +worksheets in the **[Workbook](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1&preserve-view=true)**. A separate XML file is created +for each **[Worksheet](https://docs.microsoft.com/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. ```xml @@ -70,7 +70,7 @@ for each **[Worksheet](https://docs.microsoft.com/dotnet/api/documentformat.open ``` -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1)** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cellvalue?view=openxml-2.8.1)** 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1&preserve-view=true)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1)&preserve-view=true** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1&preserve-view=true)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/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. ```xml @@ -99,7 +99,6 @@ classes in the **DocumentFormat.OpenXML.Spreadsheet** namespace. The following t | 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 you have opened the file for read-only access, you instantiate the **Sheets** class. @@ -112,7 +111,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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement?view=openxml-2.8.1)** and the **[OpenXmlAttribute](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlattribute?view=openxml-2.8.1)** in each element. +You then you iterate through the **Sheets** collection and display **[OpenXmlElement](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement?view=openxml-2.8.1&preserve-view=true)** and the **[OpenXmlAttribute](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlattribute?view=openxml-2.8.1&preserve-view=true)** in each element. ```csharp foreach (E sheet in sheets) @@ -134,7 +133,6 @@ You then you iterate through the **Sheets** collection and display **[OpenXmlEle By displaying the attribute information you get the name and ID for each worksheet in the spreadsheet file. - ## Sample Code In the following code example, you retrieve and display the attributes of the all sheets in the specified workbook contained in a **SpreadsheetDocument** document. The following code example shows how to call the **GetSheetInfo** method. @@ -187,5 +185,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.md) diff --git a/docs/includes/addinsnote.md b/docs/includes/addinsnote.md index 235cdbbe..062131ff 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](https://docs.microsoft.com/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. +> 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. From bd2543dbaa144d6d97c92d12f8ff944c4bfeacf9 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 17 Sep 2021 07:12:26 -0700 Subject: [PATCH 029/275] Update how-to-get-worksheet-information-from-a-package.md --- docs/how-to-get-worksheet-information-from-a-package.md | 6 +++--- 1 file changed, 3 insertions(+), 3 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 bffbdb47..730fbe43 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -9,7 +9,7 @@ ms.suite: office ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 09/17/2021 ms.localizationpriority: high --- # Get worksheet information from an Open XML package (Open XML SDK) @@ -38,7 +38,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.md)** 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)](https://docs.microsoft.com/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.open?view=openxml-2.8.1#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)](https://docs.microsoft.com/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**. The following code example calls the **Open** method to open the file specified by the **filepath** for read-only access. @@ -70,7 +70,7 @@ for each **[Worksheet](https://docs.microsoft.com/dotnet/api/documentformat.open ``` -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1&preserve-view=true)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1)&preserve-view=true** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1&preserve-view=true)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1&preserve-view=true)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1&preserve-view=true )** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1&preserve-view=true)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/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. ```xml From 385e5ad0abffcf2534c5a26ec0f6c02f4e0ec8b5 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 17 Sep 2021 07:13:16 -0700 Subject: [PATCH 030/275] Update structure-of-a-presentationml-document.md --- docs/structure-of-a-presentationml-document.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index 7c365747..d79db7ba 100644 --- a/docs/structure-of-a-presentationml-document.md +++ b/docs/structure-of-a-presentationml-document.md @@ -37,9 +37,9 @@ Using the Open XML SDK 2.5, you can create document structure and content that u | Slide | \ | [Slide](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.handoutmaster?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.presentation.commentauthorlist?redirectedfrom=MSDN&view=openxml-2.8.1) | 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). | +| Handout Master | \ | [HandoutMaster](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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). | *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 4ca8b5ff0722a8def8b85fd0fdbbcbe4acfbeef9 Mon Sep 17 00:00:00 2001 From: David Chesnut Date: Mon, 14 Feb 2022 18:33:34 -0800 Subject: [PATCH 031/275] update with existing .openpublishing.publish.config.json --- .openpublishing.publish.config.json | 31 +++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json index 1c03ef3d..5e32ffad 100644 --- a/.openpublishing.publish.config.json +++ b/.openpublishing.publish.config.json @@ -22,6 +22,21 @@ "template_folder": "_themes" } ], + "notification_subscribers": [], + "sync_notification_subscribers": null, + "branches_to_filter": [], + "skip_source_output_uploading": false, + "need_preview_pull_request": false, + "contribution_branch_mappings": {}, + "dependent_repositories": [ + { + "path_to_root": "_themes", + "url": "https://github.com/Microsoft/templates.docs.msft", + "branch": "main", + "branch_mapping": {} + } + ], + "branch_target_mapping": {}, "JoinTOCPlugin": [ { "ConceptualTOC": "docs/toc.yml", @@ -37,22 +52,8 @@ "version": "latest" } ], - "notification_subscribers": [], - "branches_to_filter": [], - "skip_source_output_uploading": false, - "need_preview_pull_request": false, - "contribution_branch_mappings": {}, - "dependent_repositories": [ - { - "path_to_root": "_themes", - "url": "https://github.com/Microsoft/templates.docs.msft", - "branch": "master", - "branch_mapping": {} - } - ], - "branch_target_mapping": {}, "need_generate_pdf_url_template": false, "docs_build_engine": { "name": "docfx_v3" } -} +} \ No newline at end of file From e711382d7f329b8def65b226b72fe8e517fa8f79 Mon Sep 17 00:00:00 2001 From: Matthew Steeples Date: Mon, 28 Feb 2022 11:19:57 +0000 Subject: [PATCH 032/275] Remove unnecessary HTML tag --- docs/getting-started.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 837c26e6..b14ded62 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 2.5 for Office ms.suite: office ms.author: o365devx From 1c7ac380c4f1108badf6d622ec78a5143e9f893c Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 4 Mar 2022 22:25:50 -0800 Subject: [PATCH 033/275] Fix formatting Spacing, tables, line breaks, H2s --- docs/about-the-open-xml-sdk.md | 83 ++---- docs/getting-started.md | 14 +- ...w-to-delete-a-slide-from-a-presentation.md | 2 +- ...elete-text-from-a-cell-in-a-spreadsheet.md | 2 +- ...ow-to-insert-a-chart-into-a-spreadsheet.md | 16 +- ...-insert-a-new-slide-into-a-presentation.md | 6 +- ...he-header-in-a-word-processing-document.md | 2 +- docs/working-with-handout-master-slides.md | 6 +- docs/working-with-notes-slides.md | 4 +- docs/working-with-slide-masters.md | 239 ++++-------------- 10 files changed, 109 insertions(+), 265 deletions(-) diff --git a/docs/about-the-open-xml-sdk.md b/docs/about-the-open-xml-sdk.md index 900969d8..90b330d7 100644 --- a/docs/about-the-open-xml-sdk.md +++ b/docs/about-the-open-xml-sdk.md @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,7 +6,6 @@ api_type: ms.assetid: 620e86b5-49f2-43dc-85d4-9c7456c09552 title: About the Open XML SDK 2.5 for Office ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual @@ -31,57 +29,38 @@ Structurally, an Open XML document is an Open Packaging Conventions (OPC) packag Word processing documents are described by using WordprocessingML markup. For more information, see [Working with WordprocessingML documents (Open XML SDK)](working-with-wordprocessingml-documents.md). A WordprocessingML document is composed of a collection of stories where each story is one of the following: -- Main document (the only required story) - -- Glossary document - -- Header and footer - -- Comments - -- Text box - -- Footnote and endnote +- Main document (the only required story) +- Glossary document +- Header and footer +- Comments +- Text box +- Footnote and endnote Presentations are described by using PresentationML markup. For more information, see [Working with PresentationML documents (Open XML SDK)](working-with-presentationml-documents.md). Presentation packages can contain the following document parts: -- Slide master - -- Notes master - -- Handout master - -- Slide layout - -- Notes +- Slide master +- Notes master +- Handout master +- Slide layout +- Notes Spreadsheet workbooks are described by using SpreadsheetML markup. For more information, see [Working with SpreadsheetML documents (Open XML SDK)](working-with-spreadsheetml-documents.md). Workbook packages can contain: -- Workbook part (required part) - -- One or more worksheets - -- Charts - -- Tables - -- Custom XML - +- Workbook part (required part) +- One or more worksheets +- Charts +- Tables +- Custom XML ## Open XML SDK 1.0 Version 1 of the Open XML SDK simplified the manipulation of Open XML packages. The Open XML SDK Application Programming Interface (API) encapsulates many of the common tasks that you typically perform on Open XML packages, so you can perform complex operations with just a few lines of code. Some common tasks: -- **Search**—With a few lines of code, you can search a collection of Excel 2007 worksheets for some arbitrary data. - -- **Document assembly**—You can create documents by combining the document parts of existing documents programmatically. For example, you can pull slides from various PowerPoint 2007 presentations to create a single presentation. - -- **Validation**—With a few lines of code, you can validate the document parts in a package or validate an entire package against a schema. - -- **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. - +- **Search** With a few lines of code, you can search a collection of Excel 2007 worksheets for some arbitrary data. +- **Document assembly** You can create documents by combining the document parts of existing documents programmatically. For example, you can pull slides from various PowerPoint 2007 presentations to create a single presentation. +- **Validation** With a few lines of code, you can validate the document parts in a package or validate an entire package against a schema. +- **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 @@ -89,12 +68,9 @@ The Open XML SDK 2.0 for Microsoft Office extended the strongly typed class supp 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. - +- **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. ## Open XML SDK 2.5 for Office @@ -102,11 +78,8 @@ The Open XML SDK 2.5 provides the namespaces and members to support the Microsof 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. - -You can find more information about these and other new features of the Open XML SDK 2.5 in the [What's new in the Open XML SDK 2.5 for Office](what-s-new-in-the-open-xml-sdk.md) article. +- **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. +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). diff --git a/docs/getting-started.md b/docs/getting-started.md index 837c26e6..58d59cd7 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -22,22 +22,24 @@ The Open XML SDK 2.5 for Office simplifies the task of manipulating Open XML pac [!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. -- **DocumentFormat.OpenXml** +- **DocumentFormat.OpenXml** -- **WindowsBase** +- **WindowsBase** ### To add a reference in a Microsoft Visual Studio 2008 project -1. In Solution Explorer, right-click **References** and then click **Add Reference**. If the **References** node is not visible, click **Project** and then click **Show All Files**. +1. In Solution Explorer, right-click **References** and then click **Add Reference**. If the **References** node is not visible, click **Project** and then click **Show All Files**. -2. In the **Add Reference** dialog box, click **.NET**. +2. In the **Add Reference** dialog box, click **.NET**. -3. In the Component Name column, select the components (scroll if you need to), and then click **OK**. +3. In the Component Name column, select the components (scroll if you need to), and then click **OK**. > [!TIP] -> To select more than one component, hold down the Ctrl key and click each component. +> To select more than one component, hold down the **Ctrl** key and click each component. The added components are displayed in the References section in Solution Explorer. 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 09c840e5..28696840 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -710,7 +710,7 @@ Following is the complete sample code in both C\# and Visual Basic. If (Not (presentation.CustomShowList) Is Nothing) Then ' Iterate through the list of custom shows. - For Each customShow As System.Object In presentation.CustomShowList.Elements(Of _ + For Each customShow As System.Object In presentation.CustomShowList.Elements(Of _ DocumentFormat.OpenXml.Presentation.CustomShow)() If (Not (customShow.SlideList) Is Nothing) Then 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 e977f586..2aacb5ae 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 @@ -399,7 +399,7 @@ a spreadsheet document. You can run the program by calling the method string sheetName = "Jane"; string colName = "B"; uint rowIndex = 2; - DeleteTextFromCell( docName, sheetName, colName, rowIndex); + DeleteTextFromCell( docName, sheetName, colName, rowIndex); ``` ```vb 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 22cce682..255ba455 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -481,7 +481,7 @@ value of the following properties: [Scaling](https://msdn.microsoft.com/library/ ' Add the Value Axis. Dim valAx As ValueAxis = plotArea.AppendChild(Of ValueAxis)(New ValueAxis _ - (New AxisId() With {.Val = New UInt32Value(48672768UI)}, New Scaling(New _ + (New AxisId() With {.Val = New UInt32Value(48672768UI)}, New Scaling(New _ Orientation() With {.Val = New EnumValue(Of DocumentFormat.OpenXml.Drawing _ .Charts.OrientationValues)(DocumentFormat.OpenXml.Drawing.Charts.OrientationValues.MinMax)}), _ New AxisPosition() With {.Val = New EnumValue(Of AxisPositionValues)(AxisPositionValues.Left)}, _ @@ -547,11 +547,11 @@ and names the chart "Chart 1," and saves the worksheet drawing. ```vb ' Position the chart on the worksheet using a TwoCellAnchor object. drawingsPart.WorksheetDrawing = New WorksheetDrawing() - Dim twoCellAnchor As TwoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild(Of _ + Dim twoCellAnchor As TwoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild(Of _ TwoCellAnchor)(New TwoCellAnchor()) - twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(New _ + twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(New _ ColumnId("9"), New ColumnOffset("581025"), New RowId("17"), New RowOffset("114300"))) - twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(New _ + twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(New _ ColumnId("17"), New ColumnOffset("276225"), New RowId("32"), New RowOffset("0"))) ' Append a GraphicFrame to the TwoCellAnchor object. @@ -823,7 +823,7 @@ The following is the complete sample code in both C\# and Visual Basic. ' Add the Value Axis. Dim valAx As ValueAxis = plotArea.AppendChild(Of ValueAxis)(New ValueAxis _ - (New AxisId() With {.Val = New UInt32Value(48672768UI)}, New Scaling(New _ + (New AxisId() With {.Val = New UInt32Value(48672768UI)}, New Scaling(New _ Orientation() With {.Val = New EnumValue(Of DocumentFormat.OpenXml.Drawing _ .Charts.OrientationValues)(DocumentFormat.OpenXml.Drawing.Charts.OrientationValues.MinMax)}), _ New AxisPosition() With {.Val = New EnumValue(Of AxisPositionValues)(AxisPositionValues.Left)}, _ @@ -845,11 +845,11 @@ The following is the complete sample code in both C\# and Visual Basic. ' Position the chart on the worksheet using a TwoCellAnchor object. drawingsPart.WorksheetDrawing = New WorksheetDrawing() - Dim twoCellAnchor As TwoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild(Of _ + Dim twoCellAnchor As TwoCellAnchor = drawingsPart.WorksheetDrawing.AppendChild(Of _ TwoCellAnchor)(New TwoCellAnchor()) - twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(New _ + twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.FromMarker(New _ ColumnId("9"), New ColumnOffset("581025"), New RowId("17"), New RowOffset("114300"))) - twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(New _ + twoCellAnchor.Append(New DocumentFormat.OpenXml.Drawing.Spreadsheet.ToMarker(New _ ColumnId("17"), New ColumnOffset("276225"), New RowId("32"), New RowOffset("0"))) ' Append a GraphicFrame to the TwoCellAnchor object. 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 dc7a79d1..7718ba14 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 @@ -291,7 +291,7 @@ slide and sets its properties, including its text drawingObjectId = (drawingObjectId + 1) ' Specify the required shape properties for the title shape. - titleShape.NonVisualShapeProperties = New DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties(New _ + titleShape.NonVisualShapeProperties = New DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties(New _ DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties() With {.Id = drawingObjectId, .Name = "Title"}, _ New DocumentFormat.OpenXml.Presentation.NonVisualShapeDrawingProperties _ (New Drawing.ShapeLocks() With {.NoGrouping = True}), _ @@ -653,7 +653,7 @@ The following is the complete sample code in both C\# and Visual Basic. ' Construct the slide content. ' Specify the non-visual properties of the new slide. - Dim nonVisualProperties As DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeProperties = slide.CommonSlideData.ShapeTree.AppendChild(New _ + Dim nonVisualProperties As DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeProperties = slide.CommonSlideData.ShapeTree.AppendChild(New _ DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeProperties()) nonVisualProperties.NonVisualDrawingProperties = New DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties() With {.Id = 1, .Name = ""} nonVisualProperties.NonVisualGroupShapeDrawingProperties = New DocumentFormat.OpenXml.Presentation.NonVisualGroupShapeDrawingProperties() @@ -667,7 +667,7 @@ The following is the complete sample code in both C\# and Visual Basic. drawingObjectId = (drawingObjectId + 1) ' Specify the required shape properties for the title shape. - titleShape.NonVisualShapeProperties = New DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties(New _ + titleShape.NonVisualShapeProperties = New DocumentFormat.OpenXml.Presentation.NonVisualShapeProperties(New _ DocumentFormat.OpenXml.Presentation.NonVisualDrawingProperties() With {.Id = drawingObjectId, .Name = "Title"}, _ New DocumentFormat.OpenXml.Presentation.NonVisualShapeDrawingProperties _ (New Drawing.ShapeLocks() With {.NoGrouping = True}), _ 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 caf2a09f..04702294 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 @@ -139,7 +139,7 @@ segment as an example. ```csharp string filepathFrom = @"C:\Users\Public\Documents\Word15a.docx"; string filepathTo=@"C:\Users\Public\Documents\Word15b.docx"; - AddHeaderFromTo(filepathFrom, filepathTo); + AddHeaderFromTo(filepathFrom, filepathTo); ``` ```vb diff --git a/docs/working-with-handout-master-slides.md b/docs/working-with-handout-master-slides.md index 533b089c..0d9e7265 100644 --- a/docs/working-with-handout-master-slides.md +++ b/docs/working-with-handout-master-slides.md @@ -210,17 +210,17 @@ namespace. ```vb Private Shared Function CreateHandoutMasterPart(ByVal presentationPart As PresentationPart) As HandoutMasterPart Dim handoutMasterPart1 As HandoutMasterPart = presentationPart.AddNewPart(Of HandoutMasterPart)("rId3") - handoutMasterPart1.HandoutMaster = New HandoutMaster(New CommonSlideData(New ShapeTree(New _ + handoutMasterPart1.HandoutMaster = New HandoutMaster(New CommonSlideData(New ShapeTree(New _ P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _ .Id = DirectCast(1UI, UInt32Value), _ .Name = "" _ - }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New _ + }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New _ GroupShapeProperties(New TransformGroup()), New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _ .Id = DirectCast(2UI, UInt32Value), _ .Name = "Title 1" _ }, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _ .NoGrouping = True _ - }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New _ + }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New _ P.TextBody(New BodyProperties(), New ListStyle(), New Paragraph(New EndParagraphRunProperties() With { _ .Language = "en-US" _ }))))), New P.ColorMap() With { _ diff --git a/docs/working-with-notes-slides.md b/docs/working-with-notes-slides.md index 771ea295..89e5867c 100644 --- a/docs/working-with-notes-slides.md +++ b/docs/working-with-notes-slides.md @@ -209,13 +209,13 @@ namespace. Dim notesSlide As New NotesSlide(New CommonSlideData(New ShapeTree(New P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _ .Id = DirectCast(1UI, UInt32Value), _ .Name = "" _ - }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New _ + }, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New _ GroupShapeProperties(New TransformGroup()), New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _ .Id = DirectCast(2UI, UInt32Value), _ .Name = "" _ }, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _ .NoGrouping = True _ - }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New _ + }), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New _ P.TextBody(New BodyProperties(), New ListStyle(), New Paragraph(New EndParagraphRunProperties()))))), New ColorMapOverride(New MasterColorMapping())) notesSlidePart1.NotesSlide = notesSlide diff --git a/docs/working-with-slide-masters.md b/docs/working-with-slide-masters.md index 44cab4f9..9ea3080e 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -14,67 +14,40 @@ ms.topic: conceptual ms.date: 11/01/2017 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. - ---------------------------------------------------------------------------------- -## Slide Masters in PresentationML +# Working with slide masters (Open XML SDK) -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML \ -element used to represent slide layouts in a PresentationML document as -follows. +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 element specifies an instance of a slide master slide. Within a -slide master slide are contained all elements that describe the objects -and their corresponding formatting for within a presentation slide. -Within a slide master slide are two main elements. The cSld element -specifies the common slide elements such as shapes and their attached -text bodies. Then the txStyles element specifies the formatting for the -text within each of these shapes. The other properties within a slide -master slide specify other properties for within a presentation slide -such as color information, headers and footers, as well as timing and -transition information for all corresponding presentation slides. +## Slide Masters in PresentationML -© ISO/IEC29500: 2008. +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ element used to represent slide layouts in a PresentationML document as follows. -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). +This element specifies an instance of a slide master slide. Within a slide master slide are contained all elements that describe the objects and their corresponding formatting for within a presentation slide. Within a slide master slide are two main elements. The cSld element specifies the common slide elements such as shapes and their attached text bodies. Then the txStyles element specifies the formatting for the text within each of these shapes. The other properties within a slide master slide specify other properties for within a presentation slide such as color information, headers and footers, as well as timing and transition information for all corresponding presentation slides. -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 \ 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. -| **PresentationML Element** | **Open XML SDK 2.5 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) | -| \ | [SlideLayoutIdList](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayoutidlist.aspx) | -| \ | [Timing](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.timing.aspx) | -| \ | [Transition](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.transition.aspx) | -| \ | [TextStyles](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.textstyles.aspx) | +| **PresentationML Element** | **Open XML SDK 2.5 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) | +| \ | [SlideLayoutIdList](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayoutidlist.aspx) | +| \ | [Timing](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.timing.aspx) | +| \ | [Transition](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.transition.aspx) | +| \ | [TextStyles](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.textstyles.aspx) | The following table from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the attributes of the \ element. - -| **Attributes** | **Description** | -|----------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| **Attributes** | **Description** | +|----------------------------|----------------------------------------------------| | 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. | -© ISO/IEC29500: 2008. - - --------------------------------------------------------------------------------- -## Open XML SDK 2.5 SlideMaster Class +## Open XML SDK 2.5 SlideMaster Class The Open XML SDK 2.5**SlideMaster** class represents the \ element defined in the Open XML File Format @@ -87,129 +60,59 @@ list. ### ColorMapOverride Class -The **ColorMapOverride** class corresponds to -the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: - -This element provides a mechanism with which to override the color -schemes listed within the \ element. If the -\ child element is present, the color scheme defined -by the master is used. If the \ child element is -present, it defines a new color scheme specific to the parent notes -slide, presentation slide, or slide layout. +The **ColorMapOverride** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -© ISO/IEC29500: 2008. +This element provides a mechanism with which to override the color schemes listed within the \ element. If the \ child element is present, the color scheme defined by the master is used. If the \ child element is present, it defines a new color scheme specific to the parent notes slide, presentation slide, or slide layout. ### CommonSlideData Class -The **CommonSlideData** class corresponds to -the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: - -This element specifies a container for the type of slide information -that is relevant to all of the slide types. All slides share a common -set of properties that is independent of the slide type; the description -of these properties for any particular slide is stored within the -slide's \ container. Slide data specific to the slide type -indicated by the parent element is stored elsewhere. +The **CommonSlideData** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -The actual data in \ describe only the particular parent slide; -it is only the type of information stored that is common across all -slides. +This element specifies a container for the type of slide information that is relevant to all of the slide types. All slides share a common set of properties that is independent of the slide type; the description of these properties for any particular slide is stored within the slide's \ container. Slide data specific to the slide type indicated by the parent element is stored elsewhere. -© ISO/IEC29500: 2008. +The actual data in \ describe only the particular parent slide; it is only the type of information stored that is common across all slides. ### ExtensionListWithModification Class -The **ExtensionListWithModification** class -corresponds to the \element. The following information from the -[ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **ExtensionListWithModification** class corresponds to the \element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -This element specifies the extension list with modification ability -within which all future extensions of element type \ are defined. -The extension list along with corresponding future extensions is used to -extend the storage capabilities of the PresentationML framework. This -allows for various new kinds of data to be stored natively within the +This element specifies the extension list with modification ability within which all future extensions of element type \ are defined. The extension list along with corresponding future extensions is used to extend the storage capabilities of the PresentationML framework. This allows for various new kinds of data to be stored natively within the framework. -[Note: Using this extLst element allows the generating application to -store whether this extension property has been modified. end note] - -© ISO/IEC29500: 2008. +> [!NOTE] +> Using this extLst element allows the generating application to store whether this extension property has been modified. ### HeaderFooter Class -The **HeaderFooter** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: - -This element specifies the header and footer information for a slide. -Headers and footers consist of placeholders for text that should be -consistent across all slides and slide types, such as a date and time, -slide numbering, and custom header and footer text. +The **HeaderFooter** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -© ISO/IEC29500: 2008. +This element specifies the header and footer information for a slide. Headers and footers consist of placeholders for text that should be consistent across all slides and slide types, such as a date and time, slide numbering, and custom header and footer text. ### SlideLayoutIdList Class -The **SlideLayoutIdList** class corresponds to -the \ element. The following information from the -[ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **SlideLayoutIdList** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -This element specifies the existence of the slide layout identification -list. This list is contained within the slide master and is used to -determine which layouts are being used within the slide master file. -Each layout within the list of slide layouts has its own identification -number and relationship identifier that uniquely identifies it within -both the presentation document and the particular master slide within -which it is used. - -© ISO/IEC29500: 2008. +This element specifies the existence of the slide layout identification list. This list is contained within the slide master and is used to determine which layouts are being used within the slide master file. Each layout within the list of slide layouts has its own identification number and relationship identifier that uniquely identifies it within both the presentation document and the particular master slide within which it is used. ### Timing Class -The **Timing** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: - -This element specifies the timing information for handling all -animations and timed events within the corresponding slide. This -information is tracked via time nodes within the \ element. -More information on the specifics of these time nodes and how they are -to be defined can be found within the Animation section of the -PresentationML framework. +The **Timing** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -© ISO/IEC29500: 2008. +This element specifies the timing information for handling all animations and timed events within the corresponding slide. This information is tracked via time nodes within the \ element. More information on the specifics of these time nodes and how they are to be defined can be found within the Animation section of the PresentationML framework. ### Transition Class -The **Transition** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: - -This element specifies the kind of slide transition that should be used -to transition to the current slide from the previous slide. That is, the -transition information is stored on the slide that appears after the -transition is complete. +The **Transition** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -© ISO/IEC29500: 2008. +This element specifies the kind of slide transition that should be used to transition to the current slide from the previous slide. That is, the transition information is stored on the slide that appears after the transition is complete. ### TextStyles Class -The **TextStyles** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **TextStyles** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -This element specifies the text styles within a slide master. Within -this element is the styling information for title text, the body text -and other slide text as well. This element is only for use within the -Slide Master and thus sets the text styles for the corresponding -presentation slides. +This element specifies the text styles within a slide master. Within this element is the styling information for title text, the body text and other slide text as well. This element is only for use within the Slide Master and thus sets the text styles for the corresponding presentation slides. -Example: Consider the case where we would like to specify the title -text for a master slide. +Consider the case where we would like to specify the title text for a master slide. ```xml @@ -232,46 +135,20 @@ text for a master slide. ``` -In the above example the title text is set according to the above -formatting for all related slides within the presentation. end example] - -© ISO/IEC29500: 2008. - - --------------------------------------------------------------------------------- -## Working with the SlideMaster Class +In the previous example, the title text is set according to the above formatting for all related slides within the presentation. -As shown in the Open XML SDK code sample that follows, every instance of -the **SlideMaster** class is associated with an -instance of the **[SlideMasterPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidemasterpart.aspx)** class, which represents a -slide master part, one of the required parts of a PresentationML -presentation file package. Each **SlideMaster** -class instance must also be associated with instances of the **[SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx)** and <**[Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx)** classes, which are in turn associated -with similarly named required presentation parts, represented by the -**[SlideLayoutPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidelayoutpart.aspx)** and **[SlidePart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidepart.aspx)** classes. +## Working with the SlideMaster Class -The **SlideMaster** class, which represents the -\ element, is therefore also associated with a series of -other classes that represent the child elements of the \ -element. Among these classes, as shown in the following code sample, are -the **CommonSlideData** class, the **ColorMap** class, the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, and the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class. +As shown in the Open XML SDK code sample that follows, every instance of the **SlideMaster** class is associated with an instance of the **[SlideMasterPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidemasterpart.aspx)** class, which represents a slide master part, one of the required parts of a PresentationML presentation file package. Each **SlideMaster** class instance must also be associated with instances of the **[SlideLayout](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slidelayout.aspx)** and <**[Slide](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.slide.aspx)** classes, which are in turn associated with similarly named required presentation parts, represented by the **[SlideLayoutPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidelayoutpart.aspx)** and **[SlidePart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidepart.aspx)** classes. +The **SlideMaster** class, which represents the \ element, is therefore also associated with a series of other classes that represent the child elements of the \ +element. Among these classes, as shown in the following code sample, are the **CommonSlideData** class, the **ColorMap** class, the **[ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx)** class, and the **[Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx)** class. --------------------------------------------------------------------------------- -## Open XML SDK Code Example +## 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 -master 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 [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 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. +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. ```csharp private static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1) @@ -339,11 +216,9 @@ namespace. End Function ``` ---------------------------------------------------------------------------------- -## Generated PresentationML +## Generated PresentationML -When the Open XML SDK code is run, the following XML is written to the -PresentationML document referenced in the code. +When the Open XML SDK code is run, the following XML is written to the PresentationML document referenced in the code. ```xml @@ -405,15 +280,9 @@ PresentationML document referenced in the code. ``` --------------------------------------------------------------------------------- -## See also - - - -[About the Open XML SDK 2.5 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) +## See also +[About the Open XML SDK 2.5 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) From e9a4214d7268977d6d3a8a2f8dc7fa3cd1045546 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 4 Mar 2022 22:35:29 -0800 Subject: [PATCH 034/275] Fix formatting --- docs/working-with-animation.md | 132 ++++++++------------------------- 1 file changed, 31 insertions(+), 101 deletions(-) diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index eff6f8b9..0d415bf9 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -14,34 +14,17 @@ ms.topic: conceptual ms.date: 11/01/2017 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). +# 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). ## Animation in PresentationML -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Animation section of the Open XML -PresentationML framework as follows: - -The Animation section of the PresentationML framework stores the -movement and related information of objects. This schema is loosely -based on the syntax and concepts from the Synchronized Multimedia -Integration Language (SMIL), a W3C Recommendation for describing -multimedia presentations using XML. The schema describes all the -animations effects that reside on a slide and also the animation that -occurs when going from slide to slide (slide transition). Animations on -a slide are inherently time-based and consist of an animation effects on -an object or text. Slide transitions however do not follow this concept -and always appear before any animation on a slide. All elements -described in this schema are contained within the slide XML file. More -specifically they are in the \ and the \ element -as shown below: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Animation section of the Open XML PresentationML framework as follows: + +The Animation section of the PresentationML framework stores the movement and related information of objects. This schema is loosely based on the syntax and concepts from the Synchronized Multimedia Integration Language (SMIL), a W3C Recommendation for describing multimedia presentations using XML. The schema describes all the animations effects that reside on a slide and also the animation that occurs when going from slide to slide (slide transition). Animations on a slide are inherently time-based and consist of an animation effects on +an object or text. Slide transitions however do not follow this concept and always appear before any animation on a slide. All elements described in this schema are contained within the slide XML file. More specifically they are in the \ and the \ element as shown below: ```xml @@ -52,19 +35,9 @@ as shown below: ``` -© ISO/IEC29500: 2008. +Animation consists of several behaviors, the most basic of which is the Animate behavior, represented by the \ element. The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ element used to represent basic animation behavior in a PresentationML document as follows: -Animation consists of several behaviors, the most basic of which is the -Animate behavior, represented by the \ element. The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML \ element -used to represent basic animation behavior in a PresentationML document -as follows: - -This element is a generic animation element that requires little or no -semantic understanding of the attribute being animated. It can animate -text within a shape or even the shape itself.[Example: Consider trying -to emphasize text within a shape by changing the size of its font by -150%. The \ element should be used as follows: +This element is a generic animation element that requires little or no semantic understanding of the attribute being animated. It can animate text within a shape or even the shape itself.[Example: Consider trying to emphasize text within a shape by changing the size of its font by 150%. The \ element should be used as follows: ```xml @@ -84,54 +57,37 @@ to emphasize text within a shape by changing the size of its font by ``` -© ISO/IEC29500: 2008. - -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 2.5 classes that correspond to them. | **PresentationML Element** | **Open XML SDK 2.5 Class** | -|----------------------------|----------------------------| +|:---------------------------|:----------------------------| | \ | CommonBehavior | | \ | TimeAnimateValueList | -The following table from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the attributes of the \ element. - - -| **Attributes** | **Description** | -|----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| by | This attribute specifies a relative offset value for the animation with respect to its position before the start of the animation.The possible values for this attribute are defined by the W3C XML Schema string data type. | -| calcmode | This attribute specifies the interpolation mode for the animation.The possible values for this attribute are defined by theST_TLAnimateBehaviorCalcMode simple type (§19.7.20). | -| from | This attribute specifies the starting value of the animation.The possible values for this attribute are defined by the W3C XML Schema string data type. | -| 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 theST_TLAnimateBehaviorValueType simple type (§19.7.21). | - -© ISO/IEC29500: 2008. +The following table from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the attributes of the \ element. +| **Attributes** | **Description** | +|:---------------|:-----------------------------------------------------------------| +| by | This attribute specifies a relative offset value for the animation with respect to its position before the start of the animation.The possible values for this attribute are defined by the W3C XML Schema string data type. | +| calcmode | This attribute specifies the interpolation mode for the animation.The possible values for this attribute are defined by the ST_TLAnimateBehaviorCalcMode simple type (§19.7.20). | +| from | This attribute specifies the starting value of the animation.The possible values for this attribute are defined by the W3C XML Schema string data type. | +| 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 -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. +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. -Classes that represent child elements of the \ element and that -are therefore commonly associated with the **Animate** class are shown in the following list. +Classes that represent child elements of the \ element and that are therefore commonly associated with the **Animate** class are shown in the following list. ### CommonBehavior Class -The **CommonBehavior** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \element: +The **CommonBehavior** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \element: This element describes the common behaviors of animations. -Example: Consider trying to emphasize text within a shape by changing -the size of its font. The \ element should be used as follows: +Consider trying to emphasize text within a shape by changing the size of its font. The \ element should be used as follows: ```xml @@ -151,18 +107,13 @@ the size of its font. The \ element should be used as follows: ``` -© ISO/IEC29500: 2008. - ### TimeAnimateValueList Class -The **TimeAnimateValueList** class corresponds -to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **TimeAnimateValueList** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: This element specifies a list of time animated value elements. -Example: Consider a shape with a "fly-in" animation. The \ -element should be used as follows: +Example: Consider a shape with a "fly-in" animation. The \ element should be used as follows: ```xml @@ -182,36 +133,15 @@ element should be used as follows: ``` -© ISO/IEC29500: 2008. - - ## Working with the Animate Class -The **Animate** class, which represents the -\ element, is therefore also associated with other classes that -represent the child elements of the \ element, including the -**CommonBehavior** class, which describes -common animation behaviors, and the **TimeAnimateValueList** class, which specifies a -list of time-animated value elements, as shown in the previous XML code. -Other classes associated with the **Animate** -class are the **Timing**** class, which specifies timing -information for all the animations on the slide, and the **TargetElement**** class, which specifies the -target child elements to which the animation effects are applied. - +The **Animate** class, which represents the \ element, is therefore also associated with other classes that represent the child elements of the \ element, including the +**CommonBehavior** class, which describes common animation behaviors, and the **TimeAnimateValueList** class, which specifies a list of time-animated value elements, as shown in the previous XML code. Other classes associated with the **Animate** class are the **Timing** class, which specifies timing information for all the animations on the slide, and the **TargetElement** class, which specifies the target child elements to which the animation effects are applied. ## See also - - -[About the Open XML SDK 2.5 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) - +[About the Open XML SDK 2.5 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) [How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) From 78976fd0d6e20901c6ef225f2b3d4513ba68ee44 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 4 Mar 2022 22:41:28 -0800 Subject: [PATCH 035/275] Fix formatting --- ...n-a-table-in-a-word-processing-document.md | 36 +++++-------------- 1 file changed, 8 insertions(+), 28 deletions(-) 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 a44c1b41..841ee22e 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,12 +17,9 @@ 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 2.5 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. +The following assembly directives are required to compile the code in this topic. ```csharp using System.Linq; @@ -39,10 +36,10 @@ this topic. ## Open the Existing Document To open an existing document, instantiate the **WordprocessingDocument**** class as shown in +target="T:DocumentFormat.OpenXml.Packaging.WordprocessingDocument">**WordprocessingDocument** class as shown in the following **using** statement. In the same statement, open the word processing file at the specified **filepath** by using the **Open**** method, with the Boolean parameter set +target="M:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(System.String,System.Boolean)">**Open** method, with the Boolean parameter set to **true** to enable editing the document. ```csharp @@ -70,7 +67,6 @@ automatically saves and closes the object as part of its **System.IDisposable** exit the block, you do not have to explicitly call **Save** and **Close**─as long as you use **using**. - ## The Structure of a Table The basic document structure of a **WordProcessingML** document consists of the **document** and **body** @@ -118,7 +114,6 @@ grid, which defines a set of shared vertical edges within the table using the **tblGrid** element, and a single table row using the **tr** element. - ## How the Sample Code Works In the sample code, after you open the document in the **using** statement, you locate the first table in @@ -181,13 +176,9 @@ program, the text in the cell at the specified location will be replaced by the text that you pass in as the second argument to the **ChangeTextInCell** method. In the following table the text "The text from the API example" was used. - - - - - - -
Some textSome textSome text
Some textSome textThe text from the API example
+| **Some text** | **Some text** | **Some text** | +|---------------|---------------|---------------| +| Some text | Some text |The text from the API example | ## Sample Code @@ -273,19 +264,8 @@ 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.md) [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) - [Extension Methods (Visual Basic)](https://msdn.microsoft.com/library/bb384936.aspx) - - - - - From 6789bc959414b8314fe27d8ff40637f2367a8815 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Fri, 4 Mar 2022 22:52:33 -0800 Subject: [PATCH 036/275] Fix formatting --- ...paragraph-in-a-word-processing-document.md | 2 +- ...t-from-the-docm-to-the-docx-file-format.md | 12 ++-- ...ter-style-to-a-word-processing-document.md | 38 +++------- ...-values-from-a-word-processing-document.md | 18 ++--- docs/working-with-slide-layouts.md | 71 +++++-------------- docs/working-with-slide-masters.md | 2 +- 6 files changed, 41 insertions(+), 102 deletions(-) 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 d2216b09..e3c9cf65 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 @@ Within the paragraph, all rich formatting at the paragraph level is stored within the **pPr** element (§17.3.1.25; §17.3.1.26). [Note: Some examples of paragraph properties are alignment, border, hyphenation override, indentation, line spacing, shading, text direction, and -widow/orphan control. end note] +widow/orphan control. © ISO/IEC29500: 2008. 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 f1bcee69..eaa5f9b4 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 @@ -116,11 +116,11 @@ the code deletes the part, it changes the document type internally and renames the document so that it uses the .docx extension. The code starts by opening the document by using the **Open**** method and indicating that the +target="M:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(System.String,System.Boolean)">**Open** method and indicating that the document should be open for read/write access (the final true parameter). The code then retrieves a reference to the Document part by using the **MainDocumentPart**** property of the word +target="P:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.MainDocumentPart">**MainDocumentPart** property of the word processing document. ```csharp @@ -147,11 +147,11 @@ The sample code next verifies that the vbaProject part exists, deletes the part and saves the document. The code has no effect if the file to convert does not contain a vbaProject part. To find the part, the sample code retrieves the **VbaProjectPart**** property of the document. It +target="P:DocumentFormat.OpenXml.Packaging.MainDocumentPart.VbaProjectPart">**VbaProjectPart** property of the document. It calls the **DeletePart**** method to delete the part, and +target="M:DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.DeletePart(DocumentFormat.OpenXml.Packaging.OpenXmlPart)">**DeletePart** method to delete the part, and then calls the **Save**** method of the document to save the +target="M:DocumentFormat.OpenXml.Wordprocessing.Document.Save(DocumentFormat.OpenXml.Packaging.MainDocumentPart)">**Save** method of the document to save the changes. ```csharp @@ -181,7 +181,7 @@ changes. 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 +target="M:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.ChangeDocumentType(DocumentFormat.OpenXml.WordprocessingDocumentType)">**ChangeDocumentType** method and indicate the new document type (in this case, supply the *WordProcessingDocumentType.Document* enumerated value). 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 6818eb99..6957de6d 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 @@ -248,20 +248,13 @@ six types of style definitions by the values for the style definition's type attribute: - Paragraph styles - - Character styles - -- Linked styles (paragraph + character) [*Note*: Accomplished via the - link element (§17.7.4.6). *end note*] - +- Linked styles (paragraph + character) Accomplished via the link element (§17.7.4.6). - Table styles - - Numbering styles - - Default paragraph + character properties -*Example*: Consider a style called Heading 1 in a document as shown in -the following code example. +Consider a style called Heading 1 in a document as shown in the following code example. ```xml @@ -276,23 +269,15 @@ the following code example. ``` -The type attribute has a value of paragraph, which indicates that the -following style definition is a paragraph style. *end example* - -© ISO/IEC29500: 2008. +The type attribute has a value of paragraph, which indicates that the following style definition is a paragraph style. -You can set the paragraph, character, table and numbering styles types -by specifying the corresponding value in the style element's type -attribute. +You can set the paragraph, character, table and numbering styles types by specifying the corresponding value in the style element's type attribute. ## Character Style Type -You specify character as the style type by setting the value of the type -attribute on the style element to "character". +You specify character as the style type by setting the value of the type attribute on the style element to "character". -The following information from section 17.7.9 of the ISO/IEC 29500 -specification discusses character styles. Be aware that section numbers -preceded by § indicate sections in the ISO specification. +The following information from section 17.7.9 of the ISO/IEC 29500 specification discusses character styles. Be aware that section numbers preceded by § indicate sections in the ISO specification. ### 17.7.9 Run (Character) Styles @@ -313,8 +298,6 @@ A character style has two defining style type-specific characteristics: The character style is then applied to runs by referencing the styleId attribute value for this style in the run properties' rStyle element. -© ISO/IEC29500: 2008. - The following image shows some text that has had a character style applied. A character style can only be applied to a sub-paragraph level range of text. @@ -461,8 +444,7 @@ to the styles root element in the styles part. styles.Append(style) ``` -The following XML shows the final style generated by the code shown -here. +The following XML shows the final style generated by the code shown here. ```xml @@ -523,8 +505,7 @@ properties' **rStyle** element. ## Sample Code -The following is the complete **CreateAndAddCharacterStyle** code sample in both -C\# and Visual Basic. +The following is the complete **CreateAndAddCharacterStyle** code sample in both C\# and Visual Basic. ```csharp // Create a new character style with the specified style id, style name and aliases and @@ -648,5 +629,4 @@ C\# and Visual Basic. ## 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.md) 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 a398ce08..0ed59d2c 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 @@ -15,18 +15,14 @@ ms.topic: conceptual ms.date: 06/28/2021 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 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. -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 2.5](https://www.nuget.org/packages/DocumentFormat.OpenXml/2.5.0). You must explicitly reference the following assemblies in your project: - WindowsBase - - DocumentFormat.OpenXml (installed by the Open XML SDK) You must also use the following **using** @@ -46,9 +42,9 @@ the code in this topic. To retrieve application document properties, you can retrieve the **ExtendedFilePropertiesPart**** property of a +target="P:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.ExtendedFilePropertiesPart">**ExtendedFilePropertiesPart** property of a **WordprocessingDocument**** object, and then +target="T:DocumentFormat.OpenXml.Packaging.WordprocessingDocument">**WordprocessingDocument** object, and then retrieve the specific application property you need. To do this, you must first get a reference to the document, as shown in the following code. @@ -74,7 +70,7 @@ code. Given the reference to the **WordProcessingDocument** object, you can retrieve a reference to the **ExtendedFilePropertiesPart**** property of the +target="P:DocumentFormat.OpenXml.Packaging.WordprocessingDocument.ExtendedFilePropertiesPart">**ExtendedFilePropertiesPart** property of the document. This object provides its own properties, each of which exposes one of the application document properties. @@ -91,7 +87,7 @@ any of the application properties, using simple code such as that shown in the next example. Note that the code must confirm that the reference to each property isn't **null** before retrieving its **Text**** property. Unlike core properties, +target="T:DocumentFormat.OpenXml.Wordprocessing.Text">**Text** property. Unlike core properties, document properties aren't available if you (or the application) haven't specifically given them a value. diff --git a/docs/working-with-slide-layouts.md b/docs/working-with-slide-layouts.md index ada52860..57a35646 100644 --- a/docs/working-with-slide-layouts.md +++ b/docs/working-with-slide-layouts.md @@ -14,14 +14,14 @@ ms.topic: conceptual ms.date: 11/01/2017 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. +## Slide Layouts in PresentationML ---------------------------------------------------------------------------------- -## Slide Layouts 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 \ element used to represent slide layouts in a PresentationML document as @@ -32,8 +32,6 @@ contains in essence a template slide design that can be applied to any existing slide. When applied to an existing slide all corresponding content should be mapped to the new slide layout. -© ISO/IEC29500: 2008. - The \ element is the root element of the PresentationML Slide Layout part. For more information about the overall structure of the parts and elements that make up a PresentationML document, see @@ -43,7 +41,6 @@ The following table lists the child elements of the \ element used when working with slide layouts and the Open XML SDK 2.5 classes that correspond to them. - | **PresentationML Element** | **Open XML SDK 2.5 Class** | |----------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------| | \ | [ColorMapOverride](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.colormapoverride.aspx) | @@ -66,11 +63,8 @@ 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. | -© ISO/IEC29500: 2008. - +## The Open XML SDK 2.5 SlideLayout Class --------------------------------------------------------------------------------- -## The Open XML SDK 2.5 SlideLayout Class The OXML SDK **SlideLayout** class represents the \ element defined in the Open XML File Format schema for PresentationML documents. Use the **SlideLayout** class to manipulate individual @@ -93,8 +87,6 @@ by the master is used. If the \ child element is present, it defines a new color scheme specific to the parent notes slide, presentation slide, or slide layout. -© ISO/IEC29500: 2008. - ### CommonSlideData Class The **CommonSlideData** class corresponds to @@ -112,8 +104,6 @@ The actual data in \ describe only the particular parent slide; it is only the type of information stored that is common across all slides. -© ISO/IEC29500: 2008. - ### ExtensionListWithModification Class The **ExtensionListWithModification** class @@ -128,10 +118,8 @@ extend the storage capabilities of the PresentationML framework. This allows for various new kinds of data to be stored natively within the framework. -[Note: Using this extLst element allows the generating application to -store whether this extension property has been modified. end note] - -© ISO/IEC29500: 2008. +> [!NOTE] +> Using this extLst element allows the generating application to store whether this extension property has been modified. ### HeaderFooter Class @@ -144,8 +132,6 @@ Headers and footers consist of placeholders for text that should be consistent across all slides and slide types, such as a date and time, slide numbering, and custom header and footer text. -© ISO/IEC29500: 2008. - ### Timing Class The **Timing** class corresponds to the @@ -159,24 +145,14 @@ More information on the specifics of these time nodes and how they are to be defined can be found within the Animation section of the PresentationML framework. -© ISO/IEC29500: 2008. - ### Transition Class -The **Transition** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **Transition** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -This element specifies the kind of slide transition that should be used -to transition to the current slide from the previous slide. That is, the -transition information is stored on the slide that appears after the -transition is complete. +This element specifies the kind of slide transition that should be used to transition to the current slide from the previous slide. That is, the transition information is stored on the slide that appears after the transition is complete. -© ISO/IEC29500: 2008. +## Working with the SlideLayout Class - --------------------------------------------------------------------------------- -## Working with the SlideLayout Class As shown in the Open XML SDK code sample that follows, every instance of the **SlideLayout** class is associated with an instance of the [SlideLayoutPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.slidelayoutpart.aspx) class, which represents a @@ -192,18 +168,10 @@ other classes that represent the child elements of the \ element. Among these classes, as shown in the following code sample, are the **CommonSlideData** class, the **ColorMapOverride** class, the [ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx) class, and the [Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx) class. +## Open XML SDK Code Example --------------------------------------------------------------------------------- -## 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 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 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. @@ -254,10 +222,9 @@ namespace. End Function ``` ---------------------------------------------------------------------------------- -## Generated PresentationML -When the Open XML SDK code is run, the following XML is written to the -PresentationML document file referenced in the code. +## Generated PresentationML + +When the Open XML SDK code is run, the following XML is written to the PresentationML document file referenced in the code. ```xml @@ -302,12 +269,8 @@ PresentationML document file referenced in the code. ``` --------------------------------------------------------------------------------- -## See also - - -[About the Open XML SDK 2.5 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) +## See also +[About the Open XML SDK 2.5 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 9ea3080e..c52f6c92 100644 --- a/docs/working-with-slide-masters.md +++ b/docs/working-with-slide-masters.md @@ -135,7 +135,7 @@ Consider the case where we would like to specify the title text for a master sli ``` -In the previous example, the title text is set according to the above formatting for all related slides within the presentation. +In the previous example the title text is set according to the above formatting for all related slides within the presentation. ## Working with the SlideMaster Class From ab63d7e69ef6b2baee81c71fc96fccf7766285bc Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Sat, 5 Mar 2022 09:40:09 -0800 Subject: [PATCH 037/275] Fix formatting --- docs/getting-started.md | 7 +- ...-property-in-a-word-processing-document.md | 114 ++++++------------ 2 files changed, 36 insertions(+), 85 deletions(-) diff --git a/docs/getting-started.md b/docs/getting-started.md index 58d59cd7..6a44d561 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -21,25 +21,20 @@ The Open XML SDK 2.5 for Office simplifies the task of manipulating Open XML pac [!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. - **DocumentFormat.OpenXml** - - **WindowsBase** ### To add a reference in a Microsoft Visual Studio 2008 project 1. In Solution Explorer, right-click **References** and then click **Add Reference**. If the **References** node is not visible, click **Project** and then click **Show All Files**. - 2. In the **Add Reference** dialog box, click **.NET**. - 3. In the Component Name column, select the components (scroll if you need to), and then click **OK**. -> [!TIP] +> [!TIP] > To select more than one component, hold down the **Ctrl** key and click each component. The added components are displayed in the References section in Solution Explorer. 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 732acfb1..108e9c18 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 @@ -25,9 +25,7 @@ To use the sample code in this topic, you must install the [Open XML SDK 2.5](ht - 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. +You must also use the following **using** directives or **Imports** statements to compile the code in this topic. ```csharp using System; @@ -45,9 +43,7 @@ the code in this topic. Imports DocumentFormat.OpenXml.VariantTypes ``` -The sample code also includes an enumeration that defines the possible -types of custom properties. The **SetCustomProperty** method requires that you supply -one of these values when you call the method. +The sample code also includes an enumeration that defines the possible types of custom properties. The **SetCustomProperty** method requires that you supply one of these values when you call the method. ```csharp public enum PropertyTypes : int @@ -84,7 +80,6 @@ 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) The relevant XML is also extracted and shown here for ease of reading. @@ -102,37 +97,24 @@ The relevant XML is also extracted and shown here for ease of reading. If you examine the XML content, you will find the following: -- Each property in the XML content consists of an XML element that - includes the name and the value of the property. - -- For each property, the XML content includes an **fmtid** attribute, which is always set to the - same string value: `{D5CDD505-2E9C-101B-9397-08002B2CF9AE}`. - -- Each property in the XML content includes a **pid** attribute, which must include an integer - starting at 2 for the first property and incrementing for each - successive property. - -- Each property tracks its type (in the figure, the **vt:lpwstr** and **vt:filetime** element names define the types - for each property). - -The sample method that is provided here includes the code that is -required to create or modify a custom document property in a Microsoft -Word 2010 or Microsoft Word 2013 document. You can find the complete -code listing for the method in the [Sample Code](#sample-code) section. +- Each property in the XML content consists of an XML element that includes the name and the value of the property. +- For each property, the XML content includes an **fmtid** attribute, which is always set to the same string value: `{D5CDD505-2E9C-101B-9397-08002B2CF9AE}`. +- Each property in the XML content includes a **pid** attribute, which must include an integer starting at 2 for the first property and incrementing for each successive property. +- Each property tracks its type (in the figure, the **vt:lpwstr** and **vt:filetime** element names define the types for each property). +The sample method that is provided here includes the code that is required to create or modify a custom document property in a Microsoft Word 2010 or Microsoft Word 2013 document. You can find the complete code listing for the method in the [Sample Code](#sample-code) section. ## SetCustomProperty Method -You can use the **SetCustomProperty** method to -set a custom property in a word processing document. The **SetCustomProperty** method accepts four parameters: +Use the **SetCustomProperty** method to set a custom property in a word processing document. The **SetCustomProperty** method accepts four parameters: -- The name of the document to modify (string). +- The name of the document to modify (string). -- The name of the property to add or modify (string). +- The name of the property to add or modify (string). -- The value of the property (object). +- The value of the property (object). -- The kind of property (one of the values in the **PropertyTypes** enumeration). +- The kind of property (one of the values in the **PropertyTypes** enumeration). ```csharp public static string SetCustomProperty( @@ -152,11 +134,7 @@ set a custom property in a word processing document. The **SetCustomProperty** m ## Calling the SetCustomProperty Method -The **SetCustomProperty** method enables you to -set a custom property, and returns the current value of the property, if -it exists. To call the sample method, pass the file name, property name, -property value, and property type parameters. The following sample code -shows an example. +The **SetCustomProperty** method enables you to set a custom property, and returns the current value of the property, if it exists. To call the sample method, pass the file name, property name, property value, and property type parameters. The following sample code shows an example. ```csharp const string fileName = @"C:\Users\Public\Documents\SetCustomProperty.docx"; @@ -185,36 +163,24 @@ shows an example. SetCustomProperty(fileName, "ReviewDate", #12/21/2010#, PropertyTypes.DateTime)) ``` -After running this code, use the following procedure to view the custom -properties from Word. - -1. Open the **SetCustomProperty.docx** file in Word. -2. On the **File** tab, click **Info**. +After running this code, use the following procedure to view the custom properties from Word. -3. Click **Properties**. +1. Open the **SetCustomProperty.docx** file in Word. +2. On the **File** tab, click **Info**. +3. Click **Properties**. +4. Click **Advanced Properties**. -4. Click **Advanced Properties**. - -The custom properties will display in the dialog box that appears, as -shown in Figure 2. +The custom properties will display in the dialog box that appears, as shown in Figure 2. Figure 2. Custom Properties in the Advanced Properties dialog box - ![Advanced Properties dialog with custom properties](./media/OpenXmlCon_HowToSetCustomPropertyFig2.gif) +## How the Code Works -## How the Code Works - -The **SetCustomProperty** method starts by -setting up some internal variables. Next, it examines the information -about the property, and creates a new [CustomDocumentProperty](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.aspx) based on the -parameters that you have specified. The code also maintains a variable -named **propSet** to indicate whether it -successfully created the new property object. This code verifies the -type of the property value, and then converts the input to the correct -type, setting the appropriate property of the **CustomDocumentProperty** object. +The **SetCustomProperty** method starts by setting up some internal variables. Next, it examines the information about the property, and creates a new [CustomDocumentProperty](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.aspx) based on the parameters that you have specified. The code also maintains a variable named **propSet** to indicate whether it successfully created the new property object. This code verifies the +type of the property value, and then converts the input to the correct type, setting the appropriate property of the **CustomDocumentProperty** object. > [!NOTE] > The **CustomDocumentProperty** type works much like a VBA Variant type. It maintains separate placeholders as properties for the various types of data it might contain. @@ -339,8 +305,8 @@ type, setting the appropriate property of the **CustomDocumentProperty** object. Throw New InvalidDataException("propertyValue") End If ``` -At this point, if the code has not thrown an exception, you can assume -that the property is valid, and the code sets the [FormatId](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.formatid.aspx) and [Name](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.name.aspx) properties of the new custom property. + +At this point, if the code has not thrown an exception, you can assume that the property is valid, and the code sets the [FormatId](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.formatid.aspx) and [Name](https://msdn.microsoft.com/library/office/documentformat.openxml.customproperties.customdocumentproperty.name.aspx) properties of the new custom property. ```csharp // Now that you have handled the parameters, start @@ -358,14 +324,8 @@ that the property is valid, and the code sets the [FormatId](https://msdn.micros ## Working with the Document -Given the **CustomDocumentProperty** object, -the code next interacts with the document that you supplied in the -parameters to the **SetCustomProperty** -procedure. The code starts by opening the document in read/write mode by -using the [Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method of the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class. The code -attempts to retrieve a reference to the custom file properties part by -using the [CustomFilePropertiesPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.customfilepropertiespart.aspx) property of the -document. +Given the **CustomDocumentProperty** object, the code next interacts with the document that you supplied in the parameters to the **SetCustomProperty** procedure. The code starts by opening the document in read/write mode by +using the [Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method of the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class. The code attempts to retrieve a reference to the custom file properties part by using the [CustomFilePropertiesPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.customfilepropertiespart.aspx) property of the document. ```csharp using (var document = WordprocessingDocument.Open(fileName, true)) @@ -381,6 +341,7 @@ document. ' Code removed here... End Using ``` + If the code cannot find a custom properties part, it creates a new part, and adds a new set of properties to the part. ```csharp @@ -402,6 +363,7 @@ If the code cannot find a custom properties part, it creates a new part, and add customProps.Properties = New Properties End If ``` + Next, the code retrieves a reference to the [Properties](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.customfilepropertiespart.properties.aspx) property of the custom properties part (that is, a reference to the properties themselves). If the code had to create a new custom properties part, you know that this @@ -423,6 +385,7 @@ cannot continue. ' Code removed here... End If ``` + If the property already exists, the code retrieves its current value, and then deletes the property. Why delete the property? If the new type for the property matches the existing type for the property, the code @@ -459,18 +422,14 @@ find the first match for the property name. prop.Remove() End If ``` -Now, you will know for sure that the custom property part exists, a -property that has the same name as the new property does not exist, and -that there may be other existing custom properties. The code performs -the following steps: -1. Appends the new property as a child of the properties collection. +Now, you will know for sure that the custom property part exists, a property that has the same name as the new property does not exist, and that there may be other existing custom properties. The code performs the following steps: + +1. Appends the new property as a child of the properties collection. -2. Loops through all the existing properties, and sets the pid** attribute to increasing values, starting - at 2. +2. Loops through all the existing properties, and sets the **pid** attribute to increasing values, starting at 2. -3. Saves the part. +3. Saves the part. ```csharp // Append the new property, and @@ -510,8 +469,7 @@ Finally, the code returns the stored original property value. ## Sample Code -The following is the complete **SetCustomProperty** code sample in C\# and Visual -Basic. +The following is the complete **SetCustomProperty** code sample in C\# and Visual Basic. ```csharp public enum PropertyTypes : int @@ -770,6 +728,4 @@ Basic. ## See also - - - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) From d105a857c6efd64733aa538b611d2fb05f206f20 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Sat, 5 Mar 2022 09:52:53 -0800 Subject: [PATCH 038/275] Fix formatting --- docs/working-with-comments.md | 135 +++++++++------------------------- docs/working-with-tables.md | 31 +++----- 2 files changed, 45 insertions(+), 121 deletions(-) diff --git a/docs/working-with-comments.md b/docs/working-with-comments.md index 7c3defe3..594c9042 100644 --- a/docs/working-with-comments.md +++ b/docs/working-with-comments.md @@ -17,17 +17,12 @@ 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 -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 +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). +## Comments in PresentationML ---------------------------------------------------------------------------------- -## Comments in PresentationML -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Comments section of the Open XML -PresentationML framework as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Comments section of the Open XML PresentationML framework as follows: A comment is a text note attached to a slide, with the primary purpose of allowing readers of a presentation to provide feedback to the @@ -38,17 +33,14 @@ presentation, but do not appear when a slide show is given. The displaying application decides when to display comments and determines their visual appearance. -© ISO/IEC29500: 2008. - -The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification describes the Open XML PresentationML \ element used -to represent comments in a PresentationML document as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ element used to represent comments in a PresentationML document as follows: This element specifies a single comment attached to a slide. It contains the text of the comment, its position on the slide, and attributes referring to its author and date. Example: + ```xml @@ -56,62 +48,40 @@ Example: ``` -© ISO/IEC29500: 2008. - -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 2.5 classes that correspond to them. - -| **PresentationML Element** | **Open XML SDK 2.5 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) | -| \ | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.text.aspx) | +| **PresentationML Element** | **Open XML SDK 2.5 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) | +| \ | [Text](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.text.aspx) | The following table from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the attributes of the \ element. +| **Attributes** | **Description** | +|----------------|--------------------| +| authorId | This attribute specifies the author of the comment.It refers to the ID of an author in the comment author list for the document.
The possible values for this attribute are defined by the W3C XML Schema **unsignedInt** datatype. | +| 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). | -| **Attributes** | **Description** | -|----------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| authorId | This attribute specifies the author of the comment.It refers to the ID of an author in the comment author list for the document.
The possible values for this attribute are defined by the W3C XML Schema **unsignedInt** datatype. | -| 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. end note]
The possible values for this attribute are defined by the ST_Index simple type (§19.7.3). | - -© ISO/IEC29500: 2008. +## Open XML SDK 2.5 Comment Class - --------------------------------------------------------------------------------- -## Open XML SDK 2.5 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. +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. Classes that represent child elements of the \ element and that are therefore commonly associated with the **Comment** class are shown in the following list. ### ExtensionListWithModification Class -The **ExtensionListWithModification** class -corresponds to the \element. The following information from the -[ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) +The **ExtensionListWithModification** class corresponds to the \element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: -This element specifies the extension list with modification ability -within which all future extensions of element type \ are defined. -The extension list along with corresponding future extensions is used to -extend the storage capabilities of the PresentationML framework. This -allows for various new kinds of data to be stored natively within the -framework. +This element specifies the extension list with modification ability within which all future extensions of element type \ are defined. The extension list along with corresponding future extensions is used to extend the storage capabilities of the PresentationML framework. This allows for various new kinds of data to be stored natively within the framework. > [!NOTE] -> Using this extLst element allows the generating application to -store whether this extension property has been modified. end note - -© ISO/IEC29500: 2008. +> Using this extLst element allows the generating application to store whether this extension property has been modified. end note ### Position Class @@ -137,8 +107,6 @@ application chooses to display comments. end note] [Example: \ end example] -© ISO/IEC29500: 2008. - ### Text class The **Text** class corresponds to the @@ -148,16 +116,11 @@ specification introduces the \ element: This element specifies the content of a comment. This is the text with which the author has annotated the slide. -[Example: \Add diagram to clarify.\ end example] - The possible values for this element are defined by the W3C XML Schema **string** datatype. -© ISO/IEC29500: 2008. +## Working with the Comment Class - --------------------------------------------------------------------------------- -## Working with the Comment Class A comment is a text note attached to a slide, with the primary purpose of enabling readers of a presentation to provide feedback to the presentation author. Each comment contains an unformatted text string @@ -181,30 +144,11 @@ by the [CommentAuthorList](https://msdn.microsoft.com/library/office/documentfor each slide are listed in a comments list for that slide, represented by the [CommentList](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.commentlist.aspx) class. -The **Comment** class, which represents the -\ element, is therefore also associated with other classes that -represent the child elements of the \ element. Among these classes, -as shown in the following code sample, are the **Position** class, which specifies the position of -the comment relative to the slide, and the **Text** class, which specifies the text content of -the comment. - - --------------------------------------------------------------------------------- -## Open XML SDK Code Example -The following code segment from the article [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) 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 **Comment** class, which represents the \ element, is therefore also associated with other classes that represent the child elements of the \ element. Among these classes, as shown in the following code sample, are the **Position** class, which specifies the position of the comment relative to the slide, and the **Text** class, which specifies the text content of the comment. + +## 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. ```csharp // Declare a comments part. @@ -291,14 +235,10 @@ article. {.X = 100, .Y = 200}, New Text() With {.Text = text}) ``` ---------------------------------------------------------------------------------- -## Generated PresentationML -When the Open XML SDK 2.5 code in [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) 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 +## 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 +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. ```xml @@ -329,14 +269,9 @@ article. ``` --------------------------------------------------------------------------------- -## See also - - -[About the Open XML SDK 2.5 for Office](about-the-open-xml-sdk.md) +## See also +[About the Open XML SDK 2.5 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: 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-tables.md b/docs/working-with-tables.md index d0e25e7a..82233241 100644 --- a/docs/working-with-tables.md +++ b/docs/working-with-tables.md @@ -14,6 +14,7 @@ ms.topic: conceptual ms.date: 11/01/2017 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 @@ -22,11 +23,9 @@ 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). +## Tables in SpreadsheetML --------------------------------------------------------------------------------- -## Tables in SpreadsheetML -The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the **table** (\<**table**\>) element. +The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the **table** (\<**table**\>) element. A table helps organize and provide structure to lists of information in a worksheet. Tables have clearly labeled columns, rows, and data @@ -52,8 +51,6 @@ elements to a worksheet range. The sheet XML stores the numeric and textual data. The table XML records the various attributes for the particular table object. -© ISO/IEC29500: 2008. - A SpreadsheetML table is a logical construct that specifies that a range of data belongs to a single dataset. SpreadsheetML already uses a table-like model for specifying values in rows and columns, but you can @@ -67,17 +64,15 @@ 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 2.5 classes used when working with the **Table** class. -| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | +| **SpreadsheetML Element** | **Open XML SDK 2.5 Class** | |---------------------------|------------------------------------------------------------------------------------------------------------------------| -| tableColumn | [TableColumn](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.tablecolumn.aspx) | +| 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 2.5 Table Class + The Open XML SDK 2.5**Table** class represents the table (\<**table**\>) element defined in the Open XML File Format schema for SpreadsheetML documents. Use the @@ -85,8 +80,7 @@ the Open XML File Format schema for SpreadsheetML documents. Use the \<**table**\> elements in a SpreadsheetML document. -The following information from the ISO/IEC 29500 specification -introduces the **table** (\<**table**\>) element. +The following information from the ISO/IEC 29500 specification introduces the **table** (\<**table**\>) element. An instance of this part type contains a description of a single table and its autofilter information. (The data for the table is stored in the @@ -94,8 +88,6 @@ corresponding Worksheet part.) The root element for a part of this content type shall be table. -© ISO/IEC29500: 2008. - The table part contains the definition of a single table. When there are multiple tables on a worksheet there are multiple table parts. The root element for this part is the table. At a minimum, the table only needs @@ -126,8 +118,6 @@ introduces the **TableColumn** (\<**tableColumn**\>) element. An element representing a single column for this table. -© ISO/IEC29500: 2008. - ### Auto Filter Class The following information from the ISO/IEC 29500 specification @@ -154,8 +144,6 @@ than or equal to 0.5. ``` -© ISO/IEC29500: 2008. - ### SpreadsheetML Example This example shows the XML for a file that contains one table on Sheet1. @@ -231,6 +219,7 @@ displayed in the table, and contains the **tablePart** element that references t ``` + The following XML defines the table and is contained in the "table1.xml" file. The table XML file defines how the range of the table and how the table looks, and defines any autofilters for the table. From c650cfabe0dc792e34fa266759c894bba4b05fbb Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 11:44:51 -0800 Subject: [PATCH 039/275] Fix paragraph wrapping --- ...add-tables-to-word-processing-documents.md | 53 ++++--------------- 1 file changed, 11 insertions(+), 42 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 20d13df6..dbf2ab76 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -23,7 +23,6 @@ This topic shows how to use the classes in the Open XML SDK 2.5 for Office to pr 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: - 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. @@ -40,8 +39,6 @@ You must also use the following **using** directives or **Imports** statements t Imports DocumentFormat.OpenXml.Wordprocessing ``` ------------------------------------------------------------------------------ - ## AddTable Method You can use the **AddTable** method to add a simple table to a word processing document. The **AddTable** method accepts two parameters, indicating the following: @@ -60,8 +57,6 @@ You can use the **AddTable** method to add a simple table to a word processing d ByVal data(,) As String) ``` ------------------------------------------------------------------------------ - ## Calling the AddTable Method The **AddTable** method modifies the document you specify, adding a table that contains the information in the two-dimensional array that you provide. To call the method, pass both of the parameter values, as shown in the following code. @@ -85,13 +80,9 @@ The **AddTable** method modifies the document you specify, adding a table that c {"Massachusetts", "MA"}}) ``` ------------------------------------------------------------------------------ +## How the Code Works -## How the Code Works - -The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open.md) method and -indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document.md) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.md) of the word processing -document. +The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open.md) method and indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document.md) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.md) of the word processing document. ```csharp using (var document = WordprocessingDocument.Open(fileName, true)) @@ -108,9 +99,7 @@ document. End Using ``` ------------------------------------------------------------------------------ - -## Creating the Table Object and Setting Its Properties +## Creating the Table Object and Setting Its Properties Before you can insert a table into a document, you must create the [Table](/dotnet/api/documentformat.openxml.wordprocessing.table.md) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md) object. The **TableProperties** class provides many table-oriented properties, like [Shading](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading.md), [TableBorders](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders.md), [TableCaption](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption.md), [TableCellSpacing](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing.md), [TableJustification](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification.md), and more. The sample method includes the following code. @@ -179,15 +168,9 @@ 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.md) -constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md)—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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. -## Filling the Table with Data +## Filling the Table with Data Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](/dotnet/api/documentformat.openxml.wordprocessing.tablerow.md) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: @@ -229,15 +212,9 @@ For each row, the code iterates through all the columns in the array of strings Next, the code does the following: -- Creates a new [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object that contains a value from - the array of strings. - -- Passes the [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object to the constructor for a - new [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object. - -- Passes the [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object to the constructor for a new - [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object. - +- Creates a new [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object that contains a value from the array of strings. +- Passes the [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object to the constructor for a new [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object. +- Passes the [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object to the constructor for a new [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object. - Passes the [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object to the [Append](/dotnet/api/documentformat.openxml.openxmlelement.append.md)method of the cell. In other words, the following code appends the text to the new **TableCell** object. @@ -250,9 +227,7 @@ In other words, the following code appends the text to the new **TableCell** obj tc.Append(New Paragraph(New Run(New Text(data(i, j))))) ``` -The code then appends a new [TableCellProperties](/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties.md) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this -case, the code passes only a new [TableCellWidth](/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth.md) object, with its [Type](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type.md) property set to [Auto](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues.md) (so that the table automatically sizes -the width of each column). +The code then appends a new [TableCellProperties](/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties.md) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this case, the code passes only a new [TableCellWidth](/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth.md) object, with its [Type](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type.md) property set to [Auto](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues.md) (so that the table automatically sizes the width of each column). ```csharp // Assume you want columns that are automatically sized. @@ -266,9 +241,7 @@ the width of each column). New TableCellWidth With {.Type = TableWidthUnitValues.Auto})) ``` ------------------------------------------------------------------------------ - -## Finishing Up +## Finishing Up The following code concludes by appending the table to the body of the document, and then saving the document. @@ -282,8 +255,6 @@ The following code concludes by appending the table to the body of the document, doc.Save() ``` ------------------------------------------------------------------------------ - ## Sample Code The following is the complete **AddTable** code sample in C\# and Visual Basic. @@ -410,8 +381,6 @@ The following is the complete **AddTable** code sample in C\# and Visual Basic. End Sub ``` ------------------------------------------------------------------------------ - ## See also -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) \ No newline at end of file +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md)- From edb07ce543088893c633ce376d070d3f5b630e97 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 18:14:39 -0800 Subject: [PATCH 040/275] Update working-with-pivottables.md --- docs/working-with-pivottables.md | 68 +++++++++----------------------- 1 file changed, 19 insertions(+), 49 deletions(-) diff --git a/docs/working-with-pivottables.md b/docs/working-with-pivottables.md index b0b2ad04..d99344bf 100644 --- a/docs/working-with-pivottables.md +++ b/docs/working-with-pivottables.md @@ -14,19 +14,15 @@ ms.topic: conceptual ms.date: 11/01/2017 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 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). +## PivotTable in SpreadsheetML --------------------------------------------------------------------------------- -## PivotTable in SpreadsheetML -The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the **PivotTableDefinition** (\<**pivotTableDefinition**\>) element. +The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the **PivotTableDefinition** (\<**pivotTableDefinition**\>) element. PivotTables display aggregated views of data easily and in an understandable layout. Hundreds or thousands of pieces of underlying @@ -59,8 +55,6 @@ also indicates formatting information about the PivotTable. If conditional formatting has been applied to the PivotTable, that is also expressed in the pivotTable part. -© ISO/IEC29500: 2008. - The pivot cache definition contains the definitions of all fields in the PivotTable. If you create a PivotTable based on a regular table, each column in the table becomes a field of the pivot cache definition. The @@ -92,24 +86,18 @@ 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 2.5 classes used when working with the **PivotTableDefinition** class. +| **SpreadsheetML Element** | **Open XML SDK 2.5 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) | -| **SpreadsheetML Element** | **Open XML SDK 2.5 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 2.5 PivotTableDefinition Class The Open XML SDK 2.5**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. +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 about which field is displayed on which axis of the PivotTable and in @@ -130,15 +118,9 @@ specification. ### PivotField Class -The **PivotTableDefinition** element contains -the **PivotField** (\<**pivotField**\>) elements. The following information -from the ISO/IEC 29500 specification introduces the **PivotField** (\<**pivotField**\>) element. - -Represents a single field in the PivotTable. This element contains -information about the field, including the collection of items in the -field. +The **PivotTableDefinition** element contains the **PivotField** (\<**pivotField**\>) elements. The following information from the ISO/IEC 29500 specification introduces the **PivotField** (\<**pivotField**\>) element. -© ISO/IEC29500: 2008. +Represents a single field in the PivotTable. This element contains information about the field, including the collection of items in the field. First, define the collection of fields that appear on the PivotTable using the **pivotFields** element. Each field @@ -151,17 +133,13 @@ applied to the four areas of the PivotTable. ### Pivot Cache Definition Class -The following information from the ISO/IEC 29500 specification -introduces the **PivotCacheDefinition** -(\<**pivotCacheDefinition**\>) element. +The following information from the ISO/IEC 29500 specification introduces the **PivotCacheDefinition** (\<**pivotCacheDefinition**\>) element. The pivotCacheDefinition part defines each field in the pivotCacheRecords part, including field name and information about the data contained in the field. The pivotCacheDefinition part also defines pivot items that are shared among the pivotTable and pivotRecords parts. -© ISO/IEC29500: 2008. - The pivot cache defines the source of the data in the PivotTable, which allows it to be updated, and it defines the list of fields in that data. Be aware that the cache defines all the fields available to the @@ -187,16 +165,8 @@ value, the cache record uses a reference into the **cacheField** collection of s ### Pivot Cache Records Class -The following information from the ISO/IEC 29500 specification -introduces the **PivotCacheRecords** (\<**pivotCacheRecords**\>) element. - -The pivotCacheRecords part contains the underlying data to be -aggregated. It is a cache of the source data. +The following information from the ISO/IEC 29500 specification introduces the **PivotCacheRecords** (\<**pivotCacheRecords**\>) element. -© ISO/IEC29500: 2008. +The pivotCacheRecords part contains the underlying data to be aggregated. It is a cache of the source data. -The cache records part can store any number of cached records. Each -record has the same number of values defined as there are fields in the -cache definition. Each record is defined with the **r** element. This record contains value items as -child elements. You can provide certain typed values, such as Numeric, -Boolean, or Date-Time, or you can reference into the shared items. +The cache records part can store any number of cached records. Each record has the same number of values defined as there are fields in the cache definition. Each record is defined with the **r** element. This record contains value items as child elements. You can provide certain typed values, such as Numeric, Boolean, or Date-Time, or you can reference into the shared items. From 5f00ceb9b64e13ae648f5526cf9a1ddc8bbae525 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 18:20:50 -0800 Subject: [PATCH 041/275] Fix wrapping --- ...add-custom-ui-to-a-spreadsheet-document.md | 125 ++++++------------ 1 file changed, 38 insertions(+), 87 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 af797c8b..b5a2f8ab 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,22 +17,15 @@ 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 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 task. -To use the sample code in this topic, you must install the [Open XML SDK 2.0](https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124). -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 2.0](https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124). Explicitly reference the following assemblies in your project: -- WindowsBase +- WindowsBase +- DocumentFormat.OpenXml (installed by the Open XML SDK) -- 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. +You must also use the following **using** directives or **Imports** statements to compile the code in this topic. ```csharp using DocumentFormat.OpenXml.Office.CustomUI; @@ -44,28 +37,10 @@ the code in this topic. Imports DocumentFormat.OpenXml.Packaging ``` ------------------------------------------------------------------------------ -## 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). -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. +## 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). +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 @@ -81,44 +56,36 @@ in Excel. When you click the button, it attempts to run a macro named ``` ------------------------------------------------------------------------------ -## Create the Macro -For this demonstration, the ribbon customization includes a button that -attempts to run a macro in the host workbook. To complete the -demonstration, you must create a macro in a sample workbook for the -button's Click action to call. +## Create the Macro -### To create the macro +For this demonstration, the ribbon customization includes a button that attempts to run a macro in the host workbook. To complete the demonstration, you must create a macro in a sample workbook for the button's Click action to call. -1. Create a new workbook. +1. Create a new workbook. -2. Press Alt+F11 to open the Visual Basic Editor. +2. Press Alt+F11 to open the Visual Basic Editor. -3. On the **Insert** tab, click **Module** to create a new module. -4. Add code such as the following to the new module. +4. Add code such as the following to the new module. -```vb + ```vb Sub SampleMacro(button As IRibbonControl) MsgBox "You Clicked?" End Sub -``` + ``` -5. Save the workbook as an Excel Macro-Enabled Workbook named - AddCustomUI.xlsm. +5. Save the workbook as an Excel Macro-Enabled Workbook named AddCustomUI.xlsm. +## AddCustomUI Method ------------------------------------------------------------------------------ -## AddCustomUI Method -The **AddCustomUI** method accepts two -parameters: +The **AddCustomUI** method accepts two parameters: -- *filename*—A +- *filename*—A string that contains a file name that specifies the workbook to modify. -- *customUIContent*—A string that contains the custom content (that is, the XML markup that describes the customization). @@ -134,11 +101,9 @@ The following code shows the two parameters. ByVal customUIContent As String) ``` ------------------------------------------------------------------------------ -## Calling the AddCustomUI Method -The method modifies the ribbon in an Excel workbook. To call the method, -pass the file name of the workbook to modify, and a string that contains -the customization XML, as shown in the following example code. +## Call the AddCustomUI Method + +The method modifies the ribbon in an Excel workbook. To call the method, pass the file name of the workbook to modify, and a string that contains the customization XML, as shown in the following example code. ```csharp const string SAMPLEXML = "AddCustomUI.xml"; @@ -156,11 +121,9 @@ the customization XML, as shown in the following example code. AddCustomUI(DEMOFILE, content) ``` ------------------------------------------------------------------------------ -## Interacting with the Workbook -The sample method, **AddCustomUI**, starts by -opening the requested workbook in read/write mode, as shown in the -following code. +## Interact with the Workbook + +The sample method, **AddCustomUI**, starts by opening the requested workbook in read/write mode, as shown in the following code. ```csharp using (SpreadsheetDocument document = @@ -172,12 +135,9 @@ following code. SpreadsheetDocument.Open(fileName, True) ``` ------------------------------------------------------------------------------ -## Work with the Ribbon Extensibility Part -Next, as shown in the following code, the sample method attempts to -retrieve a reference to the single ribbon extensibility part. If the -part does not yet exist, the code creates it and stores a reference to -the new part. +## Work with the Ribbon Extensibility Part + +Next, as shown in the following code, the sample method attempts to retrieve a reference to the single ribbon extensibility part. If the part does not yet exist, the code creates it and stores a reference to the new part. ```csharp // You can have only a single ribbon extensibility part. @@ -198,13 +158,9 @@ the new part. End If ``` ------------------------------------------------------------------------------ -## Add the Customization -Given a reference to the ribbon extensibility part, the following code -finishes by setting the part's **CustomUI** -property to a new [CustomUI](https://msdn.microsoft.com/library/office/documentformat.openxml.office.customui.customui.aspx) object that contains the supplied -customization. Once the customization is in place, the code saves the -custom UI. +## Add the Customization + +Given a reference to the ribbon extensibility part, the following code finishes by setting the part's **CustomUI** property to a new [CustomUI](https://msdn.microsoft.com/library/office/documentformat.openxml.office.customui.customui.aspx) object that contains the supplied customization. Once the customization is in place, the code saves the custom UI. ```csharp part.CustomUI = new CustomUI(customUIContent); @@ -216,10 +172,9 @@ custom UI. part.CustomUI.Save() ``` ------------------------------------------------------------------------------ -## Sample Code -The following is the complete **AddCustomUI** -code sample in C\# and Visual Basic. +## Sample Code + +The following is the complete **AddCustomUI** code sample in C\# and Visual Basic. ```csharp static public void AddCustomUI(string fileName, string customUIContent) @@ -302,12 +257,8 @@ code sample in C\# and Visual Basic. End Sub ``` ------------------------------------------------------------------------------ -## See also - +## See also - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - [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) - - From c24e5a5793b29ba6bbcafe08e01aaf46049af44e Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 18:30:22 -0800 Subject: [PATCH 042/275] Update introduction-to-markup-compatibility.md --- docs/introduction-to-markup-compatibility.md | 216 +++++-------------- 1 file changed, 58 insertions(+), 158 deletions(-) diff --git a/docs/introduction-to-markup-compatibility.md b/docs/introduction-to-markup-compatibility.md index fbfd8eeb..4852e433 100644 --- a/docs/introduction-to-markup-compatibility.md +++ b/docs/introduction-to-markup-compatibility.md @@ -14,123 +14,53 @@ ms.topic: conceptual ms.date: 11/01/2017 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. - - --------------------------------------------------------------------------------- -## Introduction -Suppose you have a Microsoft Word 2013 document that employs a feature -introduced in Microsoft Office 2013. When you open that document in -Microsoft Word 2010, an earlier version, what should happen? Ideally, -you want the document to remain interoperable with Word 2010, even -though Word 2010 will not understand the new feature. - -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). - -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. - - ---------------------------------------------------------------------------------- -## What is Markup Compatibility? -Open XML defines formats for word-processing, spreadsheet and -presentation documents in the form of specific markup languages, namely -WordprocessingML, SpreadsheetML, and PresentationML. With respect to the -Open XML file formats, markup compatibility is the ability for a -document expressed in one of the above markup languages to facilitate -interoperability between applications, or versions of an application, -with different feature sets. This is supported through the use of a -defined set of XML elements and attributes in the Markup Compatibility -namespace of the Open XML specification. Notice that while the markup is -supported in the document format, markup producers and consumers, such -as Microsoft Word, must support it as well. In other words, -interoperability is a function of support both in the file format and by -applications. - - --------------------------------------------------------------------------------- -## 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. - - --------------------------------------------------------------------------------- -## Open XML SDK 2.5 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: - -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. - - ---------------------------------------------------------------------------------- -## Setting 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. +This topic introduces the markup compatibility features included in the Open XML SDK 2.5 for Office. + +## Introduction + +Suppose you have a Microsoft Word 2013 document that employs a feature introduced in Microsoft Office 2013. When you open that document in Microsoft Word 2010, an earlier version, what should happen? Ideally, you want the document to remain interoperable with Word 2010, even though Word 2010 will not understand the new feature. + +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). + +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. + +## What is markup compatibility? + +Open XML defines formats for word-processing, spreadsheet and presentation documents in the form of specific markup languages, namely WordprocessingML, SpreadsheetML, and PresentationML. With respect to the Open XML file formats, markup compatibility is the ability for a document expressed in one of the above markup languages to facilitate interoperability between applications, or versions of an application, with different feature sets. This is supported through the use of a defined set of XML elements and attributes in the Markup Compatibility namespace of the Open XML specification. Notice that while the markup is supported in the document format, markup producers and consumers, such as Microsoft Word, must support it as well. In other words, interoperability is a function of support both in the file format and by applications. + +## 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. + +## Open XML SDK 2.5 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: + +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. + +## 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. The class has the following properties: -- - **[ProcessMode](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.processmode.aspx)** - Determines the - parts that are preprocessed. +- **[ProcessMode](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.processmode.aspx)** - Determines the parts that are preprocessed. -- - **[TargetFileFormatVersions](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.targetfileformatversions.aspx)** - - Specifies the context that applies to preprocessing. +- **[TargetFileFormatVersions](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocesssettings.targetfileformatversions.aspx)** - Specifies the context that applies to preprocessing. -By default, documents are not preprocessed. If however you do specify -open settings and provide markup compatibility process settings, then -the document is preprocessed in accordance with those settings. +By default, documents are not preprocessed. If however you do specify open settings and provide markup compatibility process settings, then the document is preprocessed in accordance with those settings. -The following code example demonstrates how to call the Open method with -an instance of the open settings class as a parameter. Notice that the -**ProcessMode** and **TargetFileFormatVersions** properties are -initialized as part of the **MarkupCompatiblityProcessSettings** constructor. +The following code example demonstrates how to call the Open method with an instance of the open settings class as a parameter. Notice that the **ProcessMode** and **TargetFileFormatVersions** properties are initialized as part of the **MarkupCompatiblityProcessSettings** constructor. ```csharp // Create instance of OpenSettings @@ -152,58 +82,28 @@ initialized as part of the **MarkupCompatiblityProcessSettings** constructor. } ``` ---------------------------------------------------------------------------------- -## 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. +## 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. -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. +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. > [!WARNING] > Preprocessing affects what gets saved. When you save a file, the only markup that is saved is that which remains after preprocessing. ---------------------------------------------------------------------------------- -## Understanding Process Mode -The process mode specifies which document parts should be preprocessed. -You set this property to a member of the **[MarkupCompatibilityProcessMode](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocessmode.aspx)** enumeration. -The default value, **NoProcess**, indicates -that no preprocessing is performed. Your application must be able to -understand and handle any elements and attributes present in the -document markup, including any of the elements and attributes in the -Markup Compatibility namespace. - -You might want to work on specific document parts while leaving the rest -untouched. For example, you might want to ensure minimal modification to -the file. In that case, specify **ProcessLoadedPartsOnly** for the process mode. With -this setting, preprocessing and the associated filtering is only applied -to the loaded document parts, not the entire document. - -Finally, there is **ProcessAllParts**, which -specifies what the name implies. When you choose this value, the entire -document is preprocessed. - - ---------------------------------------------------------------------------------- -## Setting the Target File Format Version -The target file format versions property lets you choose to process -markup compatibility content in either Office 2010 or Office 2013 -context. Set the **TargetFileFormatVersions** -property to a member of the **[FileFormatVersions](https://msdn.microsoft.com/library/office/documentformat.openxml.fileformatversions.aspx)** enumeration. - -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 +## Understand process mode + +The process mode specifies which document parts should be preprocessed. You set this property to a member of the **[MarkupCompatibilityProcessMode](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.markupcompatibilityprocessmode.aspx)** enumeration. The default value, **NoProcess**, indicates that no preprocessing is performed. Your application must be able to understand and handle any elements and attributes present in the document markup, including any of the elements and attributes in the Markup Compatibility namespace. + +You might want to work on specific document parts while leaving the rest untouched. For example, you might want to ensure minimal modification to the file. In that case, specify **ProcessLoadedPartsOnly** for the process mode. With this setting, preprocessing and the associated filtering is only applied to the loaded document parts, not the entire document. + +Finally, there is **ProcessAllParts**, which specifies what the name implies. When you choose this value, the entire document is preprocessed. + +## Set the target file format version + +The target file format versions property lets you choose to process markup compatibility content in either Office 2010 or Office 2013 context. Set the **TargetFileFormatVersions** property to a member of the **[FileFormatVersions](https://msdn.microsoft.com/library/office/documentformat.openxml.fileformatversions.aspx)** enumeration. + +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 the Office 2013 compatible alternate-content. From 886fa897d6038f13560e4ad2c0c69f0312016c38 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 19:10:35 -0800 Subject: [PATCH 043/275] Remove HTML tags --- ...how-to-add-custom-ui-to-a-spreadsheet-document.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 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 b5a2f8ab..df07b1e2 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 @@ -64,8 +64,7 @@ For this demonstration, the ribbon customization includes a button that attempts 2. Press Alt+F11 to open the Visual Basic Editor. -3. On the **Insert** tab, click **Module** to create a new module. +3. On the **Insert** tab, click **Module** to create a new module. 4. Add code such as the following to the new module. @@ -81,14 +80,9 @@ For this demonstration, the ribbon customization includes a button that attempts The **AddCustomUI** method accepts two parameters: -- *filename*—A - string that contains a file name that specifies the workbook to - modify. +- *filename* — A string that contains a file name that specifies the workbook to modify. -- *customUIContent*—A string that contains - the custom content (that is, the XML markup that describes the - customization). +- customUIContent*—A string that contains the custom content (that is, the XML markup that describes the customization). The following code shows the two parameters. From fb8d017fc5556989be2ff2a68d84fc9299f75c42 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 19:12:48 -0800 Subject: [PATCH 044/275] Remove HTML tags --- docs/how-to-add-tables-to-word-processing-documents.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 dbf2ab76..2a926ef3 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -168,7 +168,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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. ## Filling the Table with Data From 4359d897b848ed5e538acf8e0032f5ffb71b2043 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 7 Mar 2022 19:14:05 -0800 Subject: [PATCH 045/275] Remove HTML tags --- docs/working-with-pivottables.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/working-with-pivottables.md b/docs/working-with-pivottables.md index d99344bf..0498b427 100644 --- a/docs/working-with-pivottables.md +++ b/docs/working-with-pivottables.md @@ -17,8 +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 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). ## PivotTable in SpreadsheetML From 1e3790c91db60a5acb2e138c9a9578ff19187ad8 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:42:53 -0800 Subject: [PATCH 046/275] Remove HTML --- ...change-text-in-a-table-in-a-word-processing-document.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) 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 841ee22e..04e0c8af 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 @@ -35,12 +35,7 @@ The following assembly directives are required to compile the code in this topic ## Open the Existing Document -To open an existing document, instantiate the **WordprocessingDocument** class as shown in -the following **using** statement. In the same -statement, open the word processing file at the specified **filepath** by using the **Open** method, with the Boolean parameter set -to **true** to enable editing the document. +To open an existing document, instantiate the **WordprocessingDocument** class as shown in the following **using** statement. In the same statement, open the word processing file at the specified **filepath** by using the **Open** method, with the Boolean parameter set to **true** to enable editing the document. ```csharp using (WordprocessingDocument doc = From 3a1e95d74d218391b26c2ef8235f2e3d660fd6b0 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:44:15 -0800 Subject: [PATCH 047/275] Remove HTML --- ...sing-document-from-the-docm-to-the-docx-file-format.md | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) 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 eaa5f9b4..261035a0 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 @@ -115,13 +115,7 @@ the document contains a vbaProject part, and deleting the part. After the code deletes the part, it changes the document type internally and renames the document so that it uses the .docx extension. -The code starts by opening the document by using the **Open** method and indicating that the -document should be open for read/write access (the final true -parameter). The code then retrieves a reference to the Document part by -using the **MainDocumentPart** property of the word -processing document. +The code starts by opening the document by using the **Open** method and indicating that the document should be open for read/write access (the final true parameter). The code then retrieves a reference to the Document part by using the **MainDocumentPart** property of the word processing document. ```csharp using (WordprocessingDocument document = From 0c452cc9a9ffe32d005fdaa38d38c49a04bb9f50 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:48:28 -0800 Subject: [PATCH 048/275] Remove HTML --- ...t-from-the-docm-to-the-docx-file-format.md | 26 +++---------------- 1 file changed, 4 insertions(+), 22 deletions(-) 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 261035a0..079b7487 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 @@ -137,16 +137,7 @@ The code starts by opening the document by using the **Open** method and indicat End Using ``` -The sample code next verifies that the vbaProject part exists, deletes -the part and saves the document. The code has no effect if the file to -convert does not contain a vbaProject part. To find the part, the sample -code retrieves the **VbaProjectPart** property of the document. It -calls the **DeletePart** method to delete the part, and -then calls the **Save** method of the document to save the -changes. +The sample code next verifies that the vbaProject part exists, deletes the part and saves the document. The code has no effect if the file to convert does not contain a vbaProject part. To find the part, the sample code retrieves the **VbaProjectPart** property of the document. It calls the **DeletePart** method to delete the part, and then calls the **Save** method of the document to save the changes. ```csharp // Look for the vbaProject part. If it is there, delete it. @@ -172,18 +163,9 @@ changes. 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). - -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. +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). + +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. ```csharp // Change the document type to From a35cad54224f895210deb4db525022a501fcebf7 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:56:00 -0800 Subject: [PATCH 049/275] Remove HTML --- ...w-to-delete-a-slide-from-a-presentation.md | 45 ++----------------- 1 file changed, 4 insertions(+), 41 deletions(-) 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 28696840..ac03d574 100644 --- a/docs/how-to-delete-a-slide-from-a-presentation.md +++ b/docs/how-to-delete-a-slide-from-a-presentation.md @@ -49,26 +49,7 @@ this topic. -------------------------------------------------------------------------------- ## Getting a Presentation 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 one -of the **Open** method overloads. The code in -this topic uses the **[PresentationDocument.Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562287.aspx)** -method, which takes a file path as the first parameter to specify the -file to open, and a Boolean value as the second parameter to specify -whether a document is editable. Set this second parameter to **false** to open the file for read-only access, or -**true** if you want to open the file for -read/write access. The code in this topic opens the file twice, once to -count the number of slides and once to delete a specific slide. When you -count the number of slides in a presentation, it is best to open the -file for read-only access to protect the file against accidental -writing. The following **using** statement -opens the file for read-only access. In this code example, the **presentationFile** parameter is a string that -represents the path for the file from which you want to open the -document. +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 one of the **Open** method overloads. The code in this topic uses the **[PresentationDocument.Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562287.aspx)** method, which takes a file path as the first parameter to specify the file to open, and a Boolean value as the second parameter to specify whether a document is editable. Set this second parameter to **false** to open the file for read-only access, or **true** if you want to open the file for read/write access. The code in this topic opens the file twice, once to count the number of slides and once to delete a specific slide. When you count the number of slides in a presentation, it is best to open the file for read-only access to protect the file against accidental writing. The following **using** statement opens the file for read-only access. In this code example, the **presentationFile** parameter is a string that represents the path for the file from which you want to open the document. ```csharp // Open the presentation as read-only. @@ -104,15 +85,8 @@ statement. 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 **presentationDocument**. +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 @@ -179,12 +153,7 @@ 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 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. | PresentationML Element | Open XML SDK 2.5 Class | Description | |---|---|---| @@ -193,15 +162,9 @@ correspond to the **sld**, **sldLayout**, **sldMaster**, and **notesMaster** ele | 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. | --------------------------------------------------------------------------------- ## Counting the Number of Slides -The sample code consists of two overloads of the **CountSlides** method. The first overload uses a -**string** parameter and the second overload -uses a **PresentationDocument** parameter. In -the first **CountSlides** method, the sample -code opens the presentation document in the **using** statement. Then it passes the **PresentationDocument** object to the second **CountSlides** method, which returns an integer -number that represents the number of slides in the presentation. +The sample code consists of two overloads of the **CountSlides** method. The first overload uses a **string** parameter and the second overload uses a **PresentationDocument** parameter. In the first **CountSlides** method, the sample code opens the presentation document in the **using** statement. Then it passes the **PresentationDocument** object to the second **CountSlides** method, which returns an integer number that represents the number of slides in the presentation. ```csharp // Pass the presentation to the next CountSlides method From 9f2f94a628c69d48db4e921742a0dc86f8e55585 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:58:06 -0800 Subject: [PATCH 050/275] Remove HTML --- ...-values-from-a-word-processing-document.md | 26 ++++--------------- 1 file changed, 5 insertions(+), 21 deletions(-) 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 0ed59d2c..af751a25 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 @@ -40,14 +40,7 @@ the code in this topic. ## Retrieving Application Properties -To retrieve application document properties, you can retrieve the **ExtendedFilePropertiesPart** property of a -**WordprocessingDocument** object, and then -retrieve the specific application property you need. To do this, you -must first get a reference to the document, as shown in the following -code. +To retrieve application document properties, you can retrieve the **ExtendedFilePropertiesPart** property of a **WordprocessingDocument** object, and then retrieve the specific application property you need. To do this, you must first get a reference to the document, as shown in the following code. ```csharp const string FILENAME = "DocumentProperties.docx"; @@ -68,11 +61,7 @@ code. End Using ``` -Given the reference to the **WordProcessingDocument** object, you can retrieve a -reference to the **ExtendedFilePropertiesPart** property of the -document. This object provides its own properties, each of which exposes -one of the application document properties. +Given the reference to the **WordProcessingDocument** object, you can retrieve a reference to the **ExtendedFilePropertiesPart** property of the document. This object provides its own properties, each of which exposes one of the application document properties. ```csharp var props = document.ExtendedFilePropertiesPart.Properties; @@ -82,14 +71,9 @@ one of the application document properties. Dim props = document.ExtendedFilePropertiesPart.Properties ``` -Once you have the reference to the properties of **ExtendedFilePropertiesPart**, you can then retrieve -any of the application properties, using simple code such as that shown -in the next example. Note that the code must confirm that the reference -to each property isn't **null** before -retrieving its **Text** property. Unlike core properties, -document properties aren't available if you (or the application) haven't -specifically given them a value. +Once you have the reference to the properties of **ExtendedFilePropertiesPart**, you can then retrieve any of the application properties, using simple code such as that shown +in the next example. Note that the code must confirm that the reference to each property isn't **null** before retrieving its **Text** property. Unlike core properties, +document properties aren't available if you (or the application) haven't specifically given them a value. ```csharp if (props.Company != null) From efefa2b59d3af1a8008c54b700183833abbe7eef Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 14:59:32 -0800 Subject: [PATCH 051/275] Update working-with-animation.md --- docs/working-with-animation.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/docs/working-with-animation.md b/docs/working-with-animation.md index 0d415bf9..09e8e8ea 100644 --- a/docs/working-with-animation.md +++ b/docs/working-with-animation.md @@ -17,14 +17,13 @@ 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 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). ## Animation in PresentationML The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Animation section of the Open XML PresentationML framework as follows: -The Animation section of the PresentationML framework stores the movement and related information of objects. This schema is loosely based on the syntax and concepts from the Synchronized Multimedia Integration Language (SMIL), a W3C Recommendation for describing multimedia presentations using XML. The schema describes all the animations effects that reside on a slide and also the animation that occurs when going from slide to slide (slide transition). Animations on a slide are inherently time-based and consist of an animation effects on -an object or text. Slide transitions however do not follow this concept and always appear before any animation on a slide. All elements described in this schema are contained within the slide XML file. More specifically they are in the \ and the \ element as shown below: +The Animation section of the PresentationML framework stores the movement and related information of objects. This schema is loosely based on the syntax and concepts from the Synchronized Multimedia Integration Language (SMIL), a W3C Recommendation for describing multimedia presentations using XML. The schema describes all the animations effects that reside on a slide and also the animation that occurs when going from slide to slide (slide transition). Animations on a slide are inherently time-based and consist of an animation effects on an object or text. Slide transitions however do not follow this concept and always appear before any animation on a slide. All elements described in this schema are contained within the slide XML file. More specifically they are in the \ and the \ element as shown below: ```xml @@ -135,8 +134,7 @@ Example: Consider a shape with a "fly-in" animation. The \ element should ## Working with the Animate Class -The **Animate** class, which represents the \ element, is therefore also associated with other classes that represent the child elements of the \ element, including the -**CommonBehavior** class, which describes common animation behaviors, and the **TimeAnimateValueList** class, which specifies a list of time-animated value elements, as shown in the previous XML code. Other classes associated with the **Animate** class are the **Timing** class, which specifies timing information for all the animations on the slide, and the **TargetElement** class, which specifies the target child elements to which the animation effects are applied. +The **Animate** class, which represents the \ element, is therefore also associated with other classes that represent the child elements of the \ element, including the **CommonBehavior** class, which describes common animation behaviors, and the **TimeAnimateValueList** class, which specifies a list of time-animated value elements, as shown in the previous XML code. Other classes associated with the **Animate** class are the **Timing** class, which specifies timing information for all the animations on the slide, and the **TargetElement** class, which specifies the target child elements to which the animation effects are applied. ## See also From 7df6fbc1c16b07b8b4008523085c90fe461b3b32 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 15:03:13 -0800 Subject: [PATCH 052/275] Remove HTML --- docs/working-with-handout-master-slides.md | 67 ++++++---------------- 1 file changed, 19 insertions(+), 48 deletions(-) diff --git a/docs/working-with-handout-master-slides.md b/docs/working-with-handout-master-slides.md index 0d9e7265..6a784449 100644 --- a/docs/working-with-handout-master-slides.md +++ b/docs/working-with-handout-master-slides.md @@ -16,19 +16,11 @@ 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 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). - ---------------------------------------------------------------------------------- ## 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 \ -element used to represent a handout master slide in a PresentationML -document as follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ +element used to represent a handout master slide in a PresentationML document as follows: This element specifies an instance of a handout master slide. Within a handout master slide are contained all elements that describe the @@ -46,27 +38,21 @@ SDK 2.5 classes that correspond to them. | **PresentationML Element** | **Open XML SDK 2.5 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 -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. -Classes commonly associated with the **HandoutMaster** class are shown in the following -sections. +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. + +Classes commonly associated with the **HandoutMaster** class are shown in the following sections. ### ColorMap Class -The **ColorMap** class corresponds to the -\ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) -specification introduces the \ element: +The **ColorMap** class corresponds to the \ element. The following information from the [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification introduces the \ element: This element specifies the mapping layer that transforms one color scheme definition to another. Each attribute represents a color name @@ -83,9 +69,6 @@ accent5="accent5" accent6="accent6" hlink="hlink" folHlink="folHlink"/> ``` - -© ISO/IEC29500: 2008. - ### CommonSlideData Class The **CommonSlideData** class corresponds to @@ -103,8 +86,6 @@ The actual data in \ describe only the particular parent slide; it is only the type of information stored that is common across all slides. -© ISO/IEC29500: 2008. - ### ExtensionListWithModification Class The **ExtensionListWithModification** class @@ -123,8 +104,6 @@ framework. > Using this extLst element allows the generating application to store whether this extension property has been modified. -© ISO/IEC29500: 2008. - ### HeaderFooter Class The **HeaderFooter** class corresponds to the @@ -136,11 +115,9 @@ Headers and footers consist of placeholders for text that should be consistent across all slides and slide types, such as a date and time, slide numbering, and custom header and footer text. -© ISO/IEC29500: 2008. - --------------------------------------------------------------------------------- ## Working with the HandoutMaster Class + As shown in the Open XML SDK code sample that follows, every instance of the **HandoutMaster** class is associated with an instance of the [HandoutMasterPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.handoutmasterpart.aspx) class, which represents a @@ -154,9 +131,8 @@ series of other classes that represent the child elements of the \ element. Among these classes, as shown in the following code sample, are the **CommonSlideData** class, the **ColorMap** class, the [ShapeTree](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shapetree.aspx) class, and the [Shape](https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.shape.aspx) 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 part. The **HandoutMaster** class constructor @@ -240,8 +216,9 @@ namespace. Return handoutMasterPart1 End Function ``` ---------------------------------------------------------------------------------- + ## Generated PresentationML + When the Open XML SDK 2.5 code is run, the following XML is written to the PresentationML document referenced in the code. @@ -296,18 +273,12 @@ the PresentationML document referenced in the code. folHlink="folHlink" /> ``` --------------------------------------------------------------------------------- -## See also - -[About the Open XML SDK 2.5 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) - -[How to: Retrieve the number of slides in a presentation document (Open XML SDK)](how-to-retrieve-the-number-of-slides-in-a-presentation-document.md) +## See also -[How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) +[About the Open XML SDK 2.5 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) +[How to: Retrieve the number of slides in a presentation document (Open XML SDK)](how-to-retrieve-the-number-of-slides-in-a-presentation-document.md) +[How to: Apply a theme to a presentation (Open XML SDK)](how-to-apply-a-theme-to-a-presentation.md) From 57b7b19b76f88b287bc3453b23d5198c5f7cf340 Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Tue, 8 Mar 2022 15:09:24 -0800 Subject: [PATCH 053/275] Remove HTML --- docs/working-with-slide-layouts.md | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/docs/working-with-slide-layouts.md b/docs/working-with-slide-layouts.md index 57a35646..16112453 100644 --- a/docs/working-with-slide-layouts.md +++ b/docs/working-with-slide-layouts.md @@ -17,15 +17,11 @@ 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 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. ## Slide Layouts 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 \ -element used to represent slide layouts in a PresentationML document as -follows: +The [ISO/IEC 29500](https://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=51463) specification describes the Open XML PresentationML \ element used to represent slide layouts in a PresentationML document as follows: This element specifies an instance of a slide layout. The slide layout contains in essence a template slide design that can be applied to any @@ -170,11 +166,9 @@ 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 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 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. +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. ```csharp private static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1) From cf9645735630ba419450da920a3f538a3171826f Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 21 Mar 2022 12:43:31 -0700 Subject: [PATCH 054/275] Fix broken URL --- ...to-add-a-new-document-part-to-a-package.md | 59 +++++-------------- 1 file changed, 15 insertions(+), 44 deletions(-) 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 ae8ded2f..5e8f96a0 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 @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,19 +6,16 @@ api_type: ms.assetid: ec83a076-9d71-49d1-915f-e7090f74c13a title: 'How to: Add a new document part to a package (Open XML SDK)' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 03/22/2022 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 2.5 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. @@ -34,8 +30,8 @@ this topic. Imports DocumentFormat.OpenXml.Packaging ``` ------------------------------------------------------------------------------ -## Packages and Document Parts +## Packages and Document Parts + An Open XML document is stored as a package, whose format is defined by [ISO/IEC 29500-2](https://www.iso.org/standard/71691.html). The package can have multiple parts with relationships between them. The @@ -48,15 +44,9 @@ package-relationship item contains a relationship to a workbook part, it is defined as a spreadsheet document. In this how-to topic, you will use a word-processing document package. +## Getting a WordprocessingDocument Object ------------------------------------------------------------------------------ -## Getting a WordprocessingDocument Object -The code starts with opening a package file by passing a file name to -one of the overloaded **[Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx)** methods of the **[DocumentFormat.OpenXml.Packaging.WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx)** -that takes a string and a Boolean value that specifies whether the file -should be opened for editing or for read-only access. In this case, the -Boolean value is **true** specifying that the -file should be opened in read/write mode. +The code starts with opening a package file by passing a file name to one of the overloaded **[Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx)** methods of the **[DocumentFormat.OpenXml.Packaging.WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx)** that takes a string and a Boolean value that specifies whether the file should be opened for editing or for read-only access. In this case, the Boolean value is **true** specifying that the file should be opened in read/write mode. ```csharp using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(document, true)) @@ -71,26 +61,13 @@ file should be opened in read/write mode. End Using ``` -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**. +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. + +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 @@ -110,15 +87,14 @@ classes in the **[DocumentFormat.OpenXml.Wordprocessing](https://msdn.microsoft. 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 2.5 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. | ------------------------------------------------------------------------------ ## How the Sample Code Works After opening the document for editing, in the **using** statement, as a **WordprocessingDocument** object, the code creates a reference to the **MainDocumentPart** part and @@ -148,7 +124,6 @@ file that contains the custom XML and writes it to the **CustomXmlPart** part. End Using ``` ------------------------------------------------------------------------------ ## Sample Code The following code adds a new document part that contains custom XML from an external file and then populates the part. To call the @@ -206,11 +181,7 @@ Following is the complete code example in both C\# and Visual Basic. End Sub ``` ------------------------------------------------------------------------------ -## See also - - -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - +## See also +- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk) From a52ea01879739f1b427dc48f4e29abbda7905e3f Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 21 Mar 2022 12:58:07 -0700 Subject: [PATCH 055/275] clean up --- ...to-add-a-new-document-part-to-a-package.md | 47 +++------ ...add-tables-to-word-processing-documents.md | 18 ++-- ...paragraph-in-a-word-processing-document.md | 95 +++++-------------- 3 files changed, 45 insertions(+), 115 deletions(-) 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 5e8f96a0..3d67a86c 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 @@ -17,8 +17,7 @@ ms.localizationpriority: medium 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. -The following assembly directives are required to compile the code in -this topic. +The following assembly directives are required to compile the code in this topic. ```csharp using System.IO; @@ -32,17 +31,7 @@ this topic. ## Packages and Document Parts -An Open XML document is stored as a package, whose format is defined by -[ISO/IEC 29500-2](https://www.iso.org/standard/71691.html). The -package can have multiple parts with relationships between them. The -relationship between parts controls the category of the document. A -document can be defined as a word-processing document if its -package-relationship item contains a relationship to a main document -part. If its package-relationship item contains a relationship to a -presentation part it can be defined as a presentation document. If its -package-relationship item contains a relationship to a workbook part, it -is defined as a spreadsheet document. In this how-to topic, you will use -a word-processing document package. +An Open XML document is stored as a package, whose format is defined by [ISO/IEC 29500-2](https://www.iso.org/standard/71691.html). The package can have multiple parts with relationships between them. The relationship between parts controls the category of the document. A document can be defined as a word-processing document if its package-relationship item contains a relationship to a main document part. If its package-relationship item contains a relationship to a presentation part it can be defined as a presentation document. If its package-relationship item contains a relationship to a workbook part, it is defined as a spreadsheet document. In this how-to topic, you'll use a word-processing document package. ## Getting a WordprocessingDocument Object @@ -61,11 +50,10 @@ The code starts with opening a package file by passing a file name to one of the End Using ``` -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 +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 +## 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. @@ -81,11 +69,7 @@ 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 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, +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, |**WordprocessingML Element** | **Open XML SDK 2.5 Class** | **Description** | |:---|:---|:---| @@ -95,11 +79,10 @@ correspond to the **document**, **body**, **p**, **r**, and **t** elements, | 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. | -## How the Sample Code Works -After opening the document for editing, in the **using** statement, as a **WordprocessingDocument** object, the code creates a -reference to the **MainDocumentPart** part and -adds a new custom XML part. It then reads the contents of the external -file that contains the custom XML and writes it to the **CustomXmlPart** part. +## How the Sample Code Works + +After opening the document for editing, in the **using** statement, as a **WordprocessingDocument** object, the code creates a reference to the **MainDocumentPart** part and adds a new custom XML part. It then reads the contents of the external +file that contains the custom XML and writes it to the **CustomXmlPart** part. > [!NOTE] > To use the new document part in the document, add a link to the document part in the relationship part for the new part. @@ -124,12 +107,9 @@ file that contains the custom XML and writes it to the **CustomXmlPart** part. End Using ``` -## Sample Code -The following code adds a new document part that contains custom XML -from an external file and then populates the part. To call the -AddCustomXmlPart method in your program, you can use the following -example that modifies the file "myPkg2.docx" by adding a new document -part to it. +## Sample Code + +The following code adds a new document part that contains custom XML from an external file and then populates the part. To call the AddCustomXmlPart method in your program, use the following example that modifies the file "myPkg2.docx" by adding a new document part to it. ```csharp string document = @"C:\Users\Public\Documents\myPkg2.docx"; @@ -181,7 +161,6 @@ Following is the complete code example in both C\# and Visual Basic. End Sub ``` - -## See also +## See also - [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 2a926ef3..8cae6a16 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +7,6 @@ ms.assetid: 65c377d2-1763-4bb6-8915-bc6839ccf62d title: 'How to: Add tables to word processing documents (Open XML SDK)' description: 'Learn how to add tables to word processing documents using the Open XML SDK.' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual @@ -39,7 +37,7 @@ You must also use the following **using** directives or **Imports** statements t Imports DocumentFormat.OpenXml.Wordprocessing ``` -## AddTable Method +## AddTable method You can use the **AddTable** method to add a simple table to a word processing document. The **AddTable** method accepts two parameters, indicating the following: @@ -57,7 +55,7 @@ You can use the **AddTable** method to add a simple table to a word processing d ByVal data(,) As String) ``` -## Calling the AddTable Method +## Call the AddTable method The **AddTable** method modifies the document you specify, adding a table that contains the information in the two-dimensional array that you provide. To call the method, pass both of the parameter values, as shown in the following code. @@ -80,7 +78,7 @@ The **AddTable** method modifies the document you specify, adding a table that c {"Massachusetts", "MA"}}) ``` -## How the Code Works +## How the code works The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open.md) method and indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document.md) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.md) of the word processing document. @@ -99,7 +97,7 @@ The following code starts by opening the document, using the [WordprocessingDocu End Using ``` -## Creating the Table Object and Setting Its Properties +## Create the table object and set its properties Before you can insert a table into a document, you must create the [Table](/dotnet/api/documentformat.openxml.wordprocessing.table.md) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md) object. The **TableProperties** class provides many table-oriented properties, like [Shading](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading.md), [TableBorders](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders.md), [TableCaption](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption.md), [TableCellSpacing](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing.md), [TableJustification](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification.md), and more. The sample method includes the following code. @@ -168,9 +166,9 @@ 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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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, you create an instance of the [EnumValue\](/dotnet/api/documentformat.openxml.enumvalue-1.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—that is, it is appending an instance of the **TableProperties** class, using the variable **props** as the value. -## Filling the Table with Data +## Fill the table with data Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](/dotnet/api/documentformat.openxml.wordprocessing.tablerow.md) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: @@ -241,7 +239,7 @@ The code then appends a new [TableCellProperties](/dotnet/api/documentformat.ope New TableCellWidth With {.Type = TableWidthUnitValues.Auto})) ``` -## Finishing Up +## Finish up The following code concludes by appending the table to the body of the document, and then saving the document. @@ -383,4 +381,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.md)- +- [Open XML SDK 2.5 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 e3c9cf65..faf6f4ec 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 @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,7 +7,6 @@ ms.assetid: 8d465a77-6c1b-453a-8375-ecf80d2f1bdc title: 'How to: Apply a style to a paragraph in a word processing document' description: 'Learn how to apply a style to a paragraph in a word processing document using the Open XML SDK.' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual @@ -23,7 +21,6 @@ This topic shows how to use the classes in the Open XML SDK 2.5 for Office to pr 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: - 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. @@ -55,26 +52,11 @@ The **ApplyStyleToParagraph** example method can be used to apply a style to a p The following sections in this topic explain the implementation of this method and the supporting code, as well as how to call it. The complete sample code listing can be found in the [Sample Code](#sample-code) section at the end of this topic. -## Getting a WordprocessingDocument Object - -The Sample Code section also shows the code required to set up for -calling the sample method. To use the method to apply a style to a -paragraph in a document, you first need a reference to the open -document. In the Open XML SDK, the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class represents a -Word document package. To open and work with a Word document, you create -an instance of the **WordprocessingDocument** -class from the document. After you create the instance, you can use it -to obtain access to the main document part that contains the text of the -document. The content in the main document part is represented in the -package as XML using WordprocessingML markup. - -To create the class instance, you call one of the overloads of the [Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method. The following sample code -shows how to use the [WordprocessingDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) overload. The -first parameter takes a string that represents the full path to the -document to open. The second parameter takes a value of **true** or **false** and -represents whether to open the file for editing. In this example the -parameter is **true** to enable read/write -access to the file. +## Get a WordprocessingDocument object + +The Sample Code section also shows the code required to set up for calling the sample method. To use the method to apply a style to a paragraph in a document, you first need a reference to the open document. In the Open XML SDK, the [WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx) class represents a Word document package. To open and work with a Word document, create an instance of the **WordprocessingDocument** class from the document. After you create the instance, use it to obtain access to the main document part that contains the text of the document. The content in the main document part is represented in the package as XML using WordprocessingML markup. + +To create the class instance, call one of the overloads of the [Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) method. The following sample code shows how to use the [WordprocessingDocument.Open](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx) overload. The first parameter takes a string that represents the full path to the document to open. The second parameter takes a value of **true** or **false** and represents whether to open the file for editing. In this example the parameter is **true** to enable read/write access to the file. ```csharp using (WordprocessingDocument doc = @@ -91,17 +73,9 @@ access to the file. End Using ``` -## Understanding the Structure of a WordprocessingML Document +## 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." +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 @@ -115,41 +89,23 @@ 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 -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. - -| WordprocessingML Element | Open XML SDK 2.5 Class | Description | -|---|---|---| +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. + +| **WordprocessingML Element** | **Open XML SDK 2.5 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). +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). -## Getting the Paragraph to Style +## Get the paragraph to style -After opening the file, the sample code retrieves a reference to the -first paragraph. Because a typical word processing document body -contains many types of elements, the code filters the descendants in the -body of the document to those of type **Paragraph**. The -[ElementAtOrDefault](https://msdn.microsoft.com/library/bb494386.aspx) -method is then employed to retrieve a reference to the paragraph. -Because the elements are indexed starting at zero, you pass a zero to -retrieve the reference to the first paragraph, as shown in the following -code example. +After opening the file, the sample code retrieves a reference to the first paragraph. Because a typical word processing document body contains many types of elements, the code filters the descendants in the body of the document to those of type **Paragraph**. The [ElementAtOrDefault](https://msdn.microsoft.com/library/bb494386.aspx) method is then employed to retrieve a reference to the paragraph. Because the elements are indexed starting at zero, you pass a zero to retrieve the reference to the first paragraph, as shown in the following code example. ```csharp // Get the first paragraph. @@ -188,7 +144,7 @@ style to apply as the second parameter, the name of the style as the third parameter, and the reference to the paragraph to which to apply the style, as the fourth parameter. -## Adding the Paragraph Properties Element +## Add the paragraph properties element The first step of the example method is to ensure that the paragraph has a paragraph properties element. The paragraph properties element is a @@ -204,9 +160,7 @@ Within the paragraph, all rich formatting at the paragraph level is stored within the **pPr** element (§17.3.1.25; §17.3.1.26). [Note: Some examples of paragraph properties are alignment, border, hyphenation override, indentation, line spacing, shading, text direction, and -widow/orphan control. - -© ISO/IEC29500: 2008. +widow/orphan control. Among the properties is the **pStyle** element to specify the style to apply to the paragraph. For example, the @@ -250,7 +204,7 @@ the instance, as shown in the following code example. Dim pPr As ParagraphProperties = p.Elements(Of ParagraphProperties)().First() ``` -## Adding the Styles Part +## Add the atyles part With the paragraph found and the paragraph properties element present, now ensure that the prerequisites are in place for applying the style. @@ -319,7 +273,7 @@ the code saves the part. End Function ``` -## Verifying that the Style Exists +## Verify that the style exists Applying a style that does not exist to a paragraph has no effect; there is no exception generated and no formatting changes occur. The example @@ -460,8 +414,7 @@ to find a match based on the style name instead. The **GetStyleIdFromStyleName** work, looking for a match on style name and returning the styleid for the matching element if found, or null if not. - -## Adding the Style to the Styles Part +## Add the style to the styles part The **AddNewStyle** example method takes three parameters. The first parameter takes a reference to the styles part. @@ -589,7 +542,7 @@ example. End Sub ``` -## Applying the Style to the Paragraph +## Apply the style to the paragraph Now, the example code has located the paragraph, added the required paragraph properties element if required, checked for the styles part @@ -611,7 +564,7 @@ properties object. This creates and assigns the appropriate value to the .Val = styleid} ``` -## Sample Code +## Sample code You can use the **ApplyStyleToParagraph** example method to apply a named style to a paragraph in a word @@ -922,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.md) +- [Open XML SDK 2.5 class library reference](\/office/open-xml/open-xml-sdk) From c4544b018346928199ae8bb6b15f6288ba2a799b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 21 Mar 2022 13:20:56 -0700 Subject: [PATCH 056/275] clean up --- ...to-add-a-new-document-part-to-a-package.md | 12 +-- ...elete-text-from-a-cell-in-a-spreadsheet.md | 75 ++++++------------- ...et-worksheet-information-from-a-package.md | 13 ++-- ...ow-to-insert-a-chart-into-a-spreadsheet.md | 69 ++++++----------- ...-the-hidden-worksheets-in-a-spreadsheet.md | 18 ++--- ...ve-the-values-of-cells-in-a-spreadsheet.md | 25 +------ 6 files changed, 70 insertions(+), 142 deletions(-) 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 3d67a86c..4e1f2ed6 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 @@ -29,11 +29,11 @@ The following assembly directives are required to compile the code in this topic Imports DocumentFormat.OpenXml.Packaging ``` -## Packages and Document Parts +## Packages and document parts An Open XML document is stored as a package, whose format is defined by [ISO/IEC 29500-2](https://www.iso.org/standard/71691.html). The package can have multiple parts with relationships between them. The relationship between parts controls the category of the document. A document can be defined as a word-processing document if its package-relationship item contains a relationship to a main document part. If its package-relationship item contains a relationship to a presentation part it can be defined as a presentation document. If its package-relationship item contains a relationship to a workbook part, it is defined as a spreadsheet document. In this how-to topic, you'll use a word-processing document package. -## Getting a WordprocessingDocument Object +## Get a WordprocessingDocument object The code starts with opening a package file by passing a file name to one of the overloaded **[Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.open.aspx)** methods of the **[DocumentFormat.OpenXml.Packaging.WordprocessingDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.wordprocessingdocument.aspx)** that takes a string and a Boolean value that specifies whether the file should be opened for editing or for read-only access. In this case, the Boolean value is **true** specifying that the file should be opened in read/write mode. @@ -53,7 +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 +## 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. @@ -79,10 +79,10 @@ Using the Open XML SDK 2.5, you can create document structure and content using | 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. | -## How the Sample Code Works +## How the sample code works After opening the document for editing, in the **using** statement, as a **WordprocessingDocument** object, the code creates a reference to the **MainDocumentPart** part and adds a new custom XML part. It then reads the contents of the external -file that contains the custom XML and writes it to the **CustomXmlPart** part. +file that contains the custom XML and writes it to the **CustomXmlPart** part. > [!NOTE] > To use the new document part in the document, add a link to the document part in the relationship part for the new part. @@ -107,7 +107,7 @@ file that contains the custom XML and writes it to the **CustomXmlPart** part. End Using ``` -## Sample Code +## Sample code The following code adds a new document part that contains custom XML from an external file and then populates the part. To call the AddCustomXmlPart method in your program, use the following example that modifies the file "myPkg2.docx" by adding a new document part to it. 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 2aacb5ae..27403f0c 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 @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -11,7 +10,7 @@ ms.suite: office ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 03/22/2022 ms.localizationpriority: high --- # Delete text from a cell in a spreadsheet document (Open XML SDK) @@ -37,25 +36,14 @@ this topic. Imports DocumentFormat.OpenXml.Spreadsheet ``` --------------------------------------------------------------------------------- -## Getting a SpreadsheetDocument Object -In the Open XML SDK, the [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) class represents an -Excel document package. To open and work with an Excel document, you -create an instance of the **SpreadsheetDocument** class from the document. -After you create the instance from the document, you can then obtain -access to the main workbook part that contains the worksheets. The text -in the document is represented in the package as XML using **SpreadsheetML** markup. - -To create the class instance from the document, call one of the [Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.open.aspx) methods. Several are provided, each -with a different signature. The sample code in this topic uses the [Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562356.aspx) method with a -signature that requires two parameters. The first parameter takes a full -path string that represents the document that you want to open. The -second parameter is either **true** or **false** and represents whether you want the file to -be opened for editing. Any changes that you make to the document will -not be saved if this parameter is **false**. - -The following **using** statement code example -calls the **Open** method. + +## Get a SpreadsheetDocument object + +In the Open XML SDK, the [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) class represents an Excel document package. To open and work with an Excel document, create an instance of the **SpreadsheetDocument** class from the document. After you create the instance from the document, obtain access to the main workbook part that contains the worksheets. The text in the document is represented in the package as XML using **SpreadsheetML** markup. + +To create the class instance from the document, call one of the [Open()](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.open.aspx) methods. Several are provided, each with a different signature. The sample code in this topic uses the [Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562356.aspx) method with a signature that requires two parameters. The first parameter takes a full path string that represents the document that you want to open. The second parameter is either **true** or **false** and represents whether you want the file to be opened for editing. Any changes that you make to the document will not be saved if this parameter is **false**. + +The following **using** statement code example calls the **Open** method. ```csharp // Open the document for editing. @@ -79,15 +67,9 @@ 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 --------------------------------------------------------------------------------- -## 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. +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 @@ -126,8 +108,8 @@ 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 2.5 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. | @@ -137,14 +119,9 @@ the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elemen | 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 --------------------------------------------------------------------------------- -## How the Sample Code Works -In the following code example, you delete text from a cell in a [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) document package. Then, -you verify if other cells within the spreadsheet document still -reference the text removed from the row, and if they do not, you remove -the text from the [SharedStringTablePart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.sharedstringtablepart.aspx) object by using the -[Remove](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.remove.aspx) method. Then you clean up the **SharedStringTablePart** object by calling the **RemoveSharedStringItem** method. +In the following code example, you delete text from a cell in a [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) document package. Then, you verify if other cells within the spreadsheet document still reference the text removed from the row, and if they do not, you remove the text from the [SharedStringTablePart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.sharedstringtablepart.aspx) object by using the [Remove](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlelement.remove.aspx) method. Then you clean up the **SharedStringTablePart** object by calling the **RemoveSharedStringItem** method. ```csharp // Given a document, a worksheet name, a column name, and a one-based row index, @@ -204,9 +181,7 @@ the text from the [SharedStringTablePart](https://msdn.microsoft.com/library/off End Sub ``` -In the following code example, you verify that the cell specified by the -column name and row index exists. If so, the code returns the cell; -otherwise, it returns **null**. +In the following code example, you verify that the cell specified by the column name and row index exists. If so, the code returns the cell; otherwise, it returns **null**. ```csharp // Given a worksheet, a column name, and a row index, gets the cell at the specified column and row. @@ -386,8 +361,8 @@ references. Finally, you save the worksheet and the [SharedStringTable](https:// End Sub ``` --------------------------------------------------------------------------------- -## Sample Code +## Sample code + The following code sample is used to delete text from a specific cell in a spreadsheet document. You can run the program by calling the method **DeleteTextFromCell** from the file @@ -408,7 +383,8 @@ a spreadsheet document. You can run the program by calling the method Dim colName As String = "B" Dim rowIndex As UInteger = 2 DeleteTextFromCell(docName, sheetName, colName, rowIndex) -``` +``` + The following is the complete code sample in both C\# and Visual Basic. ```csharp @@ -627,14 +603,9 @@ The following is the complete code sample in both C\# and Visual Basic. End Sub ``` --------------------------------------------------------------------------------- ## See also - -- [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) - -[Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) - -[Lambda Expressions](https://msdn.microsoft.com/library/bb531253.aspx) - +[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) +[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-get-worksheet-information-from-a-package.md b/docs/how-to-get-worksheet-information-from-a-package.md index 730fbe43..590bd005 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -9,9 +9,10 @@ ms.suite: office ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 09/17/2021 +ms.date: 03/22/2022 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. @@ -34,9 +35,9 @@ The following assembly directives are required to compile the code in this topic Imports A = DocumentFormat.OpenXml.OpenXmlAttribute ``` -## Create SpreadsheetDocument Object +## Create SpreadsheetDocument object -In the Open XML SDK, the **[SpreadsheetDocument](/dotnet/api/documentformat.openxml.packaging.spreadsheetdocument.md)** 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?view=openxml-2.8.1)** 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)](https://docs.microsoft.com/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**. @@ -54,7 +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 +## Basic structure of a SpreadsheetML The basic document structure of a **SpreadsheetML** document consists of the **[Sheets](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1&preserve-view=true)** and **[Sheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1&preserve-view=true)** elements, which reference the worksheets in the **[Workbook](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1&preserve-view=true)**. A separate XML file is created @@ -133,7 +134,7 @@ You then you iterate through the **Sheets** collection and display **[OpenXmlEle By displaying the attribute information you get the name and ID for each worksheet in the spreadsheet file. -## Sample Code +## Sample code In the following code example, you retrieve and display the attributes of the all sheets in the specified workbook contained in a **SpreadsheetDocument** document. The following code example shows how to call the **GetSheetInfo** method. @@ -185,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.md) +[Open XML SDK 2.5 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 255ba455..4e679ff6 100644 --- a/docs/how-to-insert-a-chart-into-a-spreadsheet.md +++ b/docs/how-to-insert-a-chart-into-a-spreadsheet.md @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,20 +6,18 @@ api_type: ms.assetid: 281776d0-be75-46eb-8fdc-a1f656291175 title: 'How to: Insert a chart into a spreadsheet document (Open XML SDK)' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 11/01/2017 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 2.5 for Office to insert a chart into a spreadsheet document programmatically. -The following assembly directives are required to compile the code in -this topic. +The following assembly directives are required to compile the code in this topic. ```csharp using System.Collections.Generic; @@ -44,7 +41,7 @@ this topic. Imports DocumentFormat.OpenXml.Drawing.Spreadsheet ``` -## Getting a SpreadsheetDocument Object +## Get a SpreadsheetDocument object In the Open XML SDK, the [SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx) class represents an Excel document package. To open and work with an Excel document, you @@ -62,8 +59,7 @@ second parameter is either **true** or **false** and represents whether you want be opened for editing. Any changes to the document will not be saved if this parameter is **false**. -The code that calls the **Open** method is -shown in the following **using** statement. +The code that calls the **Open** method is shown in the following **using** statement. ```csharp // Open the document for editing. @@ -80,15 +76,9 @@ shown in the following **using** statement. 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 *document*. +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 +## 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 @@ -141,8 +131,8 @@ 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 2.5 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. | @@ -152,8 +142,7 @@ the **workbook**, [Sheets](https://msdn.microsoft.com/library/office/documentfor | 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. | - -## Row Element +## Row element In this how-to, you are going to deal with the row, cell, and cell value elements. Therefore it is useful to familiarize yourself with these @@ -163,7 +152,7 @@ introduces row (\<**row**\>) element. > The row element expresses information about an entire row of a > worksheet, and contains all cell definitions for a particular row in > the worksheet. -> +> > This row expresses information about row 2 in the worksheet, and > contains 3 cell definitions. @@ -208,7 +197,7 @@ element. ``` -## Cell Element +## Cell element The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces cell (\<**c**\>) element. @@ -216,7 +205,7 @@ introduces cell (\<**c**\>) element. > This collection represents a cell in the worksheet. Information about > the cell's location (reference), value, data type, formatting, and > formula is expressed here. -> +> > This example shows the information stored for a cell whose address in > the grid is C6, whose style index is 6, and whose value metadata index > is 15. The cell contains a formula as well as a calculated result of @@ -251,7 +240,7 @@ element. ``` -## Cell Value Element +## Cell value element The following text from the [ISO/IEC 29500](https://www.iso.org/standard/71691.html) specification introduces Cell Value (\<**c**\>) element. @@ -262,11 +251,11 @@ introduces Cell Value (\<**c**\>) element. > the cell is expressed directly in this element. Cells containing > formulas express the last calculated result of the formula in this > element. -> +> > For applications not wanting to implement the shared string table, an > "inline string" may be expressed in an \<**is**\> element under \<**c**\> (instead of a \<**v**\> element under \<**c**\>), in the same way a string would be > expressed in the shared string table. -> +> > © ISO/IEC29500: 2008. In the following example cell B4 contains the number 360. @@ -277,11 +266,9 @@ In the following example cell B4 contains the number 360. ``` -## How the Sample Code Works +## How the sample code works -After opening the spreadsheet file for read/write access, the code -verifies if the specified worksheet exists. It then adds a new [DrawingsPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.drawingspart.aspx) object using the [AddNewPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.addnewpart.aspx) method, appends it to the -worksheet, and saves the worksheet part. The code then adds a new [ChartPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.chartpart.aspx) object, appends a new [ChartSpace](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.chartpart.chartspace.aspx) object to the **ChartPart** object, and then appends a new [EditingLanguage](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.chartspace.editinglanguage.aspx) object to the **ChartSpace*** object that specifies the language for the chart is English-US. +After opening the spreadsheet file for read/write access, the code verifies if the specified worksheet exists. It then adds a new [DrawingsPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.drawingspart.aspx) object using the [AddNewPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.addnewpart.aspx) method, appends it to the worksheet, and saves the worksheet part. The code then adds a new [ChartPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.chartpart.aspx) object, appends a new [ChartSpace](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.chartpart.chartspace.aspx) object to the **ChartPart** object, and then appends a new [EditingLanguage](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.chartspace.editinglanguage.aspx) object to the **ChartSpace*** object that specifies the language for the chart is English-US. ```csharp IEnumerable sheets = document.WorkbookPart.Workbook.Descendants().Where @@ -413,8 +400,7 @@ The code then iterates through each key in the **Dictionary** class. For each ke Next key ``` -The code adds the [CategoryAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.categoryaxis.aspx) object and [ValueAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.valueaxis.aspx) object to the chart and sets the -value of the following properties: [Scaling](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.scaling.aspx), [AxisPosition](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.axisposition.aspx), [TickLabelPosition](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.ticklabelposition.aspx), [CrossingAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.crossingaxis.aspx), [Crosses](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.crosses.aspx), [AutoLabeled](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.autolabeled.aspx), [LabelAlignment](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.labelalignment.aspx), and [LabelOffset](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.labeloffset.aspx). It also adds the [Legend](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.chart.legend.aspx) object to the chart and saves the chart part. +The code adds the [CategoryAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.categoryaxis.aspx) object and [ValueAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.valueaxis.aspx) object to the chart and sets the value of the following properties: [Scaling](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.scaling.aspx), [AxisPosition](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.axisposition.aspx), [TickLabelPosition](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.ticklabelposition.aspx), [CrossingAxis](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.crossingaxis.aspx), [Crosses](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.crosses.aspx), [AutoLabeled](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.autolabeled.aspx), [LabelAlignment](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.labelalignment.aspx), and [LabelOffset](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.labeloffset.aspx). It also adds the [Legend](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.charts.chart.legend.aspx) object to the chart and saves the chart part. ```csharp barChart.Append(new AxisId() { Val = new UInt32Value(48650112u) }); @@ -502,12 +488,7 @@ value of the following properties: [Scaling](https://msdn.microsoft.com/library/ chartPart.ChartSpace.Save() ``` -The code positions the chart on the worksheet by creating a [WorksheetDrawing](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.drawingspart.worksheetdrawing.aspx) object and appending a -**TwoCellAnchor** -object. The **TwoCellAnchor** object specifies -how to move or resize the chart if you move the rows and columns between -the [FromMarker](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.frommarker.aspx) and [ToMarker](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.tomarker.aspx) anchors. The code then creates a [GraphicFrame](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.graphicframe.aspx) object to contain the chart -and names the chart "Chart 1," and saves the worksheet drawing. +The code positions the chart on the worksheet by creating a [WorksheetDrawing](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.drawingspart.worksheetdrawing.aspx) object and appending a **TwoCellAnchor** object. The **TwoCellAnchor** object specifies how to move or resize the chart if you move the rows and columns between the [FromMarker](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.frommarker.aspx) and [ToMarker](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.tomarker.aspx) anchors. The code then creates a [GraphicFrame](https://msdn.microsoft.com/library/office/documentformat.openxml.drawing.spreadsheet.graphicframe.aspx) object to contain the chart and names the chart "Chart 1," and saves the worksheet drawing. ```csharp // Position the chart on the worksheet using a TwoCellAnchor object. @@ -602,8 +583,7 @@ class. For instance, you can call the method **InsertChartInSpreadsheet** by usi InsertChartInSpreadsheet(docName, worksheetName, title, data) ``` -After you have run the program, take a look the file named "Sheet6.xlsx" -to see the inserted chart. +After you have run the program, take a look the file named "Sheet6.xlsx" to see the inserted chart. > [!NOTE] > This code can be run only once. You cannot create more than one instance of the chart. @@ -881,12 +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.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) - [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-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 faf2a2b6..83833492 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 @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -8,13 +7,13 @@ ms.assetid: a6d35b76-d12a-460c-9d9d-2334abde759e title: 'How to: Retrieve a list of the hidden worksheets in a spreadsheet document (Open XML SDK)' description: 'Learn how to retrieve a list of the hidden worksheets in a spreadsheet document using the Open XML SDK.' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual ms.date: 06/28/2021 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. @@ -22,7 +21,6 @@ This topic shows how to use the classes in the Open XML SDK 2.5 for Office to pr 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: - 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. @@ -40,7 +38,7 @@ You must also use the following **using** directives or **Imports** statements t Imports DocumentFormat.OpenXml.Packaging ``` -## GetHiddenSheets Method +## GetHiddenSheets method You can use the **GetHiddenSheets** method, which is shown in the following code, to retrieve a list of the hidden worksheets in a workbook. The **GetHiddenSheets** method accepts a single parameter, a string that indicates the path of the file that you want to examine. @@ -54,7 +52,7 @@ You can use the **GetHiddenSheets** method, which is shown in the following code The method works with the workbook you specify, filling a **[List\](https://msdn2.microsoft.com/library/6sh2ey19)** instance with a reference to each hidden **Sheet** object. -## Calling the GetHiddenSheets Method +## Calling the GetHiddenSheets method The method returns a generic list that contains information about the individual hidden **Sheet** objects. To call the **GetHiddenWorksheets** method, pass the required parameter value, as shown in the following code. @@ -79,7 +77,7 @@ The method returns a generic list that contains information about the individual Next ``` -## How the Code Works +## How the code works The following code starts by creating a generic list that will contain information about the hidden worksheets. @@ -111,7 +109,7 @@ Next, the following code opens the specified workbook by using 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 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. @@ -124,7 +122,7 @@ The following code uses the **State** property of the **Sheet** object contains an enumerated value of **Hidden**. You can also make a worksheet very hidden by writing code (either in VBA or in another language) that sets the sheet's **Visible** property to the enumerated value **xlSheetVeryHidden**. For worksheets hidden in this manner, the **State** property of the **Sheet** object contains the enumerated value **VeryHidden**. @@ -155,7 +153,7 @@ Finally, the following code calls the Date: Fri, 1 Apr 2022 11:29:27 -0700 Subject: [PATCH 058/275] [BrokenLinksH2] fixing broken link Fixed link in line 931 --- ...ate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 392cbf94..fba821f5 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 @@ -928,7 +928,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](/dotnet/api/overview/openxml/) - [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) From dccde76f43ce1e9f985cb34192b7829cb33fe7ba Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Fri, 1 Apr 2022 11:46:08 -0700 Subject: [PATCH 059/275] [BrokenLinksH2] fixing broken links Fixed download link in line 23 and link in line 256 --- docs/how-to-add-custom-ui-to-a-spreadsheet-document.md | 4 ++-- 1 file changed, 2 insertions(+), 2 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 df07b1e2..9dddafa1 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 @@ -20,7 +20,7 @@ ms.localizationpriority: high 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 task. -To use the sample code in this topic, you must install the [Open XML SDK 2.0](https://www.microsoft.com/download/en/details.aspx?displaylang=en&id=5124). Explicitly reference the following assemblies in your project: +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: - WindowsBase - DocumentFormat.OpenXml (installed by the Open XML SDK) @@ -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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) - [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) From 46d21df026e4f6b312c9dd661028ceef555502a1 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Fri, 1 Apr 2022 14:18:07 -0700 Subject: [PATCH 060/275] Update how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md --- ...the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md | 6 +++--- 1 file changed, 3 insertions(+), 3 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 fba821f5..fb473840 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 @@ -308,7 +308,7 @@ 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](https://msdn.microsoft.com/library/az24scfc.aspx). It -gets the row index by calling the **[Regex.Match](https://msdn2.microsoft.com/library/3zy662f6)** +gets the row index by calling the **[Regex.Match](https://msdn.microsoft.com/library/3zy662f6)** method, and then returns the row index. ```csharp @@ -338,7 +338,7 @@ 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](https://msdn2.microsoft.com/library/3zy662f6)** +column name by calling the **[Regex.Match](https://msdn.microsoft.com/library/3zy662f6)** method, and then returns the column name. ```csharp @@ -369,7 +369,7 @@ 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](https://msdn2.microsoft.com/library/2se42k1z)** +target="M:System.String.Compare(System.String,System.String,System.Boolean)">**[Compare](https://msdn.microsoft.com/library/2se42k1z)** and returns the result. ```csharp From c996e35566a8bde5e39b74c93eae9469a08efdd8 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Mon, 4 Apr 2022 11:41:14 -0700 Subject: [PATCH 061/275] [BrokenLinksH2] fixing broken link Fixed 33 links by taking off .md --- ...add-tables-to-word-processing-documents.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 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 8cae6a16..e3121864 100644 --- a/docs/how-to-add-tables-to-word-processing-documents.md +++ b/docs/how-to-add-tables-to-word-processing-documents.md @@ -80,7 +80,7 @@ The **AddTable** method modifies the document you specify, adding a table that c ## How the code works -The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open.md) method and indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document.md) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart.md) of the word processing document. +The following code starts by opening the document, using the [WordprocessingDocument.Open](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.open) method and indicating that the document should be open for read/write access (the final **true** parameter value). Next the code retrieves a reference to the root element of the main document part, using the [Document](/dotnet/api/documentformat.openxml.packaging.maindocumentpart.document) property of the [MainDocumentPart](/dotnet/api/documentformat.openxml.packaging.wordprocessingdocument.maindocumentpart) of the word processing document. ```csharp using (var document = WordprocessingDocument.Open(fileName, true)) @@ -99,7 +99,7 @@ The following code starts by opening the document, using the [WordprocessingDocu ## Create the table object and set its properties -Before you can insert a table into a document, you must create the [Table](/dotnet/api/documentformat.openxml.wordprocessing.table.md) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.md) object. The **TableProperties** class provides many table-oriented properties, like [Shading](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading.md), [TableBorders](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders.md), [TableCaption](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption.md), [TableCellSpacing](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing.md), [TableJustification](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification.md), and more. The sample method includes the following code. +Before you can insert a table into a document, you must create the [Table](/dotnet/api/documentformat.openxml.wordprocessing.table) object and set its properties. To set a table's properties, you create and supply values for a [TableProperties](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties) object. The **TableProperties** class provides many table-oriented properties, like [Shading](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.shading), [TableBorders](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tableborders), [TableCaption](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecaption), [TableCellSpacing](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablecellspacing), [TableJustification](/dotnet/api/documentformat.openxml.wordprocessing.tableproperties.tablejustification), and more. The sample method includes the following code. ```csharp Table table = new Table(); @@ -166,11 +166,11 @@ 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.md) constructor). In this case, the code creates [TopBorder](/dotnet/api/documentformat.openxml.wordprocessing.topborder.md), [BottomBorder](/dotnet/api/documentformat.openxml.wordprocessing.bottomborder.md), [LeftBorder](/dotnet/api/documentformat.openxml.wordprocessing.leftborder.md), [RightBorder](/dotnet/api/documentformat.openxml.wordprocessing.rightborder.md), [InsideHorizontalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insidehorizontalborder.md), and [InsideVerticalBorder](/dotnet/api/documentformat.openxml.wordprocessing.insideverticalborder.md) 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.md) generic type, passing the specific border type ([Single](/dotnet/api/documentformat.openxml.wordprocessing.bordervalues.md) 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.md) method of the table, indicating that the generic type is [TableProperties](/dotnet/api/ ocumentformat.openxml.wordprocessing.tableproperties.md)—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.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. ## Fill the table with data -Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](/dotnet/api/documentformat.openxml.wordprocessing.tablerow.md) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: +Given that table and its properties, now it is time to fill the table with data. The sample procedure iterates first through all the rows of data in the array of strings that you specified, creating a new [TableRow](/dotnet/api/documentformat.openxml.wordprocessing.tablerow) instance for each row of data. The following code leaves out the details of filling in the row with data, but it shows how you create and append the row to the table: ```csharp for (var i = 0; i <= data.GetUpperBound(0); i++) @@ -189,7 +189,7 @@ Given that table and its properties, now it is time to fill the table with data. Next ``` -For each row, the code iterates through all the columns in the array of strings you specified. For each column, the code creates a new [TableCell](/dotnet/api/documentformat.openxml.wordprocessing.tablecell.md) object, fills it with data, and appends it to the row. The following code leaves out the details of filling each cell with data, but it shows how you create and append the column to the table: +For each row, the code iterates through all the columns in the array of strings you specified. For each column, the code creates a new [TableCell](/dotnet/api/documentformat.openxml.wordprocessing.tablecell) object, fills it with data, and appends it to the row. The following code leaves out the details of filling each cell with data, but it shows how you create and append the column to the table: ```csharp for (var j = 0; j <= data.GetUpperBound(1); j++) @@ -210,10 +210,10 @@ For each row, the code iterates through all the columns in the array of strings Next, the code does the following: -- Creates a new [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object that contains a value from the array of strings. -- Passes the [Text](/dotnet/api/documentformat.openxml.wordprocessing.text.md) object to the constructor for a new [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object. -- Passes the [Run](/dotnet/api/documentformat.openxml.wordprocessing.run.md) object to the constructor for a new [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object. -- Passes the [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph.md) object to the [Append](/dotnet/api/documentformat.openxml.openxmlelement.append.md)method of the cell. +- Creates a new [Text](/dotnet/api/documentformat.openxml.wordprocessing.text) object that contains a value from the array of strings. +- Passes the [Text](/dotnet/api/documentformat.openxml.wordprocessing.text) object to the constructor for a new [Run](/dotnet/api/documentformat.openxml.wordprocessing.run) object. +- Passes the [Run](/dotnet/api/documentformat.openxml.wordprocessing.run) object to the constructor for a new [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph) object. +- Passes the [Paragraph](/dotnet/api/documentformat.openxml.wordprocessing.paragraph) object to the [Append](/dotnet/api/documentformat.openxml.openxmlelement.append)method of the cell. In other words, the following code appends the text to the new **TableCell** object. @@ -225,7 +225,7 @@ In other words, the following code appends the text to the new **TableCell** obj tc.Append(New Paragraph(New Run(New Text(data(i, j))))) ``` -The code then appends a new [TableCellProperties](/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties.md) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this case, the code passes only a new [TableCellWidth](/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth.md) object, with its [Type](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type.md) property set to [Auto](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues.md) (so that the table automatically sizes the width of each column). +The code then appends a new [TableCellProperties](/dotnet/api/documentformat.openxml.wordprocessing.tablecellproperties) object to the cell. This **TableCellProperties** object, like the **TableProperties** object you already saw, can accept as many objects in its constructor as you care to supply. In this case, the code passes only a new [TableCellWidth](/dotnet/api/documentformat.openxml.wordprocessing.tablecellwidth) object, with its [Type](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthtype.type) property set to [Auto](/dotnet/api/documentformat.openxml.wordprocessing.tablewidthunitvalues) (so that the table automatically sizes the width of each column). ```csharp // Assume you want columns that are automatically sized. From 29ea6fae70b4fb49620bcd0acaa1be5abbd0c5d7 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Mon, 4 Apr 2022 11:52:13 -0700 Subject: [PATCH 062/275] [BrokenLinksH2] fixing broken link Fixed link in line 240 --- ...to-create-a-spreadsheet-document-by-providing-a-file-name.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a06913e4..f1dba398 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 @@ -237,4 +237,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](/dotnet/api/overview/openxml/) From eb0b4cd15bbbd3e7afee21a6021058b6f45e67ad Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Mon, 4 Apr 2022 12:02:02 -0700 Subject: [PATCH 063/275] [BrokenLinksH2] fixing broken link Fixed link in line 413 --- docs/how-to-get-a-column-heading-in-a-spreadsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 abee7a54..6b4300da 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](/office/open-xml/open-xml-sdk.md) +[Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) From 27dfd37f567e40553b3e197fe3cf81544ad3e79b Mon Sep 17 00:00:00 2001 From: Linda Lu Cannon Date: Mon, 4 Apr 2022 13:32:52 -0700 Subject: [PATCH 064/275] Update how-to-calculate-the-sum-of-a-range-of-cells-in-a-spreadsheet-document.md --- ...ange-of-cells-in-a-spreadsheet-document.md | 191 ++++-------------- 1 file changed, 41 insertions(+), 150 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 392cbf94..86a78c18 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 @@ -1,5 +1,4 @@ --- - api_name: - Microsoft.Office.DocumentFormat.OpenXML.Packaging api_type: @@ -7,22 +6,18 @@ api_type: ms.assetid: 41c001da-204e-4669-a722-76c9f7928281 title: 'How to: Calculate the sum of a range of cells in a spreadsheet document' ms.suite: office - ms.author: o365devx author: o365devx ms.topic: conceptual -ms.date: 11/01/2017 +ms.date: 04/04/2022 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 2.5 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. +The following assembly directives are required to compile the code in this topic. ```csharp using System.Collections.Generic; @@ -42,28 +37,13 @@ this topic. Imports DocumentFormat.OpenXml.Spreadsheet ``` ----------------------------------------------------------------------------- -## Getting a SpreadsheetDocument Object - -In the Open XML SDK, the **[SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx)** class represents an -Excel document package. To open and work with an Excel document, you -create an instance of the **SpreadsheetDocument** class from the document. -After you create the instance from the document, you can then obtain -access to the main **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx)** part that contains the worksheets. -The text in the document is represented in the package as XML using -**SpreadsheetML** markup. - -To create the class instance from the document that you call one of the -**Open** methods. Several are provided, each -with a different signature. The sample code in this topic uses the **[Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562356.aspx)** method with a -signature that requires two parameters. The first parameter takes a full -path string that represents the document that you want to open. The -second parameter is either **true** or **false** and represents whether you want the file to -be opened for editing. Any changes that you make to the document will -not be saved if this parameter is **false**. - -The code that calls the **Open** method is -shown in the following **using** statement. +## Get a SpreadsheetDocument Object + +In the Open XML SDK, the **[SpreadsheetDocument](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.spreadsheetdocument.aspx)** class represents an Excel document package. To open and work with an Excel document, you create an instance of the **SpreadsheetDocument** class from the document. After you create the instance from the document, you can then obtain access to the main **[Workbook](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.workbook.aspx)** part that contains the worksheets. The text in the document is represented in the package as XML using **SpreadsheetML** markup. + +To create the class instance from the document that you call one of the **Open** methods. Several are provided, each with a different signature. The sample code in this topic uses the **[Open(String, Boolean)](https://msdn.microsoft.com/library/office/cc562356.aspx)** method with a signature that requires two parameters. The first parameter takes a full path string that represents the document that you want to open. The second parameter is either **true** or **false** and represents whether you want the file to be opened for editing. Any changes that you make to the document will not be saved if this parameter is **false**. + +The code that calls the **Open** method is shown in the following **using** statement. ```csharp // Open the document for editing. @@ -80,23 +60,12 @@ shown in the following **using** statement. 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 **document**. - +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 +## 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. +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 @@ -107,12 +76,8 @@ example. ``` -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. + +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 @@ -127,11 +92,7 @@ Sheet1.xml file and is shown in the following code example. ``` -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 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. | SpreadsheetML Element | Open XML SDK 2.5 Class | Description | |---|---|---| @@ -144,39 +105,16 @@ the **workbook**, **sheets**, **sheet**, **worksheet**, and **sheetData** elemen | 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 - -The sample code starts by passing in to the method **CalculateSumOfCellRange** a parameter that -represents the full path to the source **SpreadsheetML** file, a parameter that represents -the name of the worksheet that contains the cells, a parameter that -represents the name of the first cell in the contiguous range, a -parameter that represent the name of the last cell in the contiguous -range, and a parameter that represents the name of the cell where you -want the result displayed. - -The code then opens the file for editing as a **SpreadsheetDocument** document package for -read/write access, the code gets the specified **Worksheet** object. It then gets the index of the -row for the first and last cell in the contiguous range by calling the -**GetRowIndex** method. It gets the name of the -column for the first and last cell in the contiguous range by calling -the **GetColumnName** method. - -For each **Row** object within the contiguous -range, the code iterates through each **Cell** -object and determines if the column of the cell is within the contiguous -range by calling the **CompareColumn** method. -If the cell is within the contiguous range, the code adds the value of -the cell to the sum. Then it gets the **SharedStringTablePart** object if it exists. If it -does not exist, it creates one using the **[AddNewPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.addnewpart.aspx)** method. It inserts the result -into the **SharedStringTablePart** object by -calling the **InsertSharedStringItem** method. - -The code inserts a new cell for the result into the worksheet by calling -the **InsertCellInWorksheet** method and set -the value of the cell. For more information, see -[how to insert a cell in a spreadsheet](how-to-insert-text-into-a-cell-in-a-spreadsheet.md#how-the-sample-code-works), and then saves -the worksheet. +## How the Sample Code Works + +The sample code starts by passing in to the method **CalculateSumOfCellRange** a parameter that represents the full path to the source **SpreadsheetML** file, a parameter that represents the name of the worksheet that contains the cells, a parameter that represents the name of the first cell in the contiguous range, a parameter that represent the name of the last cell in the contiguous range, and a parameter that represents the name of the cell where you want the result displayed. + +The code then opens the file for editing as a **SpreadsheetDocument** document package for read/write access, the code gets the specified **Worksheet** object. It then gets the index of the row for the first and last cell in the contiguous range by calling the **GetRowIndex** method. It gets the name of the column for the first and last cell in the contiguous range by calling the **GetColumnName** method. + +For each **Row** object within the contiguous range, the code iterates through each **Cell** object and determines if the column of the cell is within the contiguous +range by calling the **CompareColumn** method. If the cell is within the contiguous range, the code adds the value of the cell to the sum. Then it gets the **SharedStringTablePart** object if it exists. If it does not exist, it creates one using the **[AddNewPart](https://msdn.microsoft.com/library/office/documentformat.openxml.packaging.openxmlpartcontainer.addnewpart.aspx)** method. It inserts the result into the **SharedStringTablePart** object by calling the **InsertSharedStringItem** method. + +The code inserts a new cell for the result into the worksheet by calling the **InsertCellInWorksheet** method and set the value of the cell. For more information, see [how to insert a cell in a spreadsheet](how-to-insert-text-into-a-cell-in-a-spreadsheet.md#how-the-sample-code-works), and then saves the worksheet. ```csharp // Given a document name, a worksheet name, the name of the first cell in the contiguous range, @@ -303,13 +241,8 @@ the worksheet. 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](https://msdn.microsoft.com/library/az24scfc.aspx). It -gets the row index by calling the **[Regex.Match](https://msdn2.microsoft.com/library/3zy662f6)** -method, and then returns the row index. +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. ```csharp // Given a cell name, parses the specified cell to get the row index. @@ -334,12 +267,7 @@ method, and then returns the row index. 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](https://msdn2.microsoft.com/library/3zy662f6)** -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.md)** method, and then returns the column name. ```csharp // Given a cell name, parses the specified cell to get the column name. @@ -364,13 +292,7 @@ method, and then returns the column name. 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](https://msdn2.microsoft.com/library/2se42k1z)** -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?view=net-6.0)** and returns the result. ```csharp // Given two columns, compares the columns. @@ -404,16 +326,7 @@ and returns the result. 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](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheet.sharedstringitem.aspx)** 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.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. ```csharp // Given text and a SharedStringTablePart, creates a SharedStringItem with the specified text @@ -473,19 +386,7 @@ It then returns the index for the **SharedStringItem** object that represents th 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](https://msdn.microsoft.com/library/office/documentformat.openxml.openxmlcompositeelement.insertbefore.aspx)** 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.md)** 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. @@ -574,13 +475,9 @@ new **Cell** object. End Function ``` ----------------------------------------------------------------------------- -## Sample Code +## Sample Code -The following code sample calculates the sum of a contiguous range of -cells in a spreadsheet document. The result is inserted into the **SharedStringTablePart** object and into the -specified result cell. You can call the method CalculateSumOfCellRange -by using the following example. +The following code sample calculates the sum of a contiguous range of cells in a spreadsheet document. The result is inserted into the **SharedStringTablePart** object and into the specified result cell. You can call the method CalculateSumOfCellRange by using the following example. ```csharp string docName = @"C:\Users\Public\Documents\Sheet1.xlsx"; @@ -600,9 +497,7 @@ by using the following example. CalculateSumOfCellRange(docName, worksheetName, firstCellName, lastCellName, resultCell) ``` -After running the program, you can inspect the file named "Sheet1.xlsx" -to see the sum of the column in the worksheet named "John" in the -specified cell. +After running the program, you can inspect the file named "Sheet1.xlsx" to see the sum of the column in the worksheet named "John" in the specified cell. The following is the complete sample code in both C\# and Visual Basic. @@ -925,14 +820,10 @@ The following is the complete sample code in both C\# and Visual Basic. End Function ``` ------------------------------------------------------------------------------ -## See also +## See also - [Open XML SDK 2.5 class library reference](/office/open-xml/open-xml-sdk.md) -- [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) - - - - +- [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) From c66ecc36b621943c50a60ca8e7f178feab36bb66 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Mon, 4 Apr 2022 15:44:12 -0700 Subject: [PATCH 065/275] [BrokenLinksH2] fixing broken link Fixed link in line 414 --- 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 9bd4aaad..79a37629 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From c12012be764c5dd642d27e26e19d7d25f59b95d8 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Mon, 4 Apr 2022 15:58:51 -0700 Subject: [PATCH 066/275] [BrokenLinksH2] fixing broken link Fixed link in line 765 --- docs/how-to-insert-text-into-a-cell-in-a-spreadsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 ee0ab4d8..149d9b53 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](/office/open-xml/open-xml-sdk.md) +[Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) [Language-Integrated Query (LINQ)](https://msdn.microsoft.com/library/bb397926.aspx) From 6d1c05a8649c7918249222c602d496486173a8fb Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 11:23:36 -0700 Subject: [PATCH 067/275] [BrokenLinksH2] fixing broken link Fixed link in line 225 --- docs/how-to-open-and-add-text-to-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 a26f735b..15d1501b 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From ff451a02f3d5115f1a85ef05454186ba7c062737 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 11:51:23 -0700 Subject: [PATCH 068/275] [BrokenLinksH2] fixing broken link Fixed link in line 283 --- docs/how-to-open-a-spreadsheet-document-from-a-stream.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 4c6a0c44..415154ca 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From 7557752c4f076ba20232d12e85575a0f0b7fbf4f Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 11:58:18 -0700 Subject: [PATCH 069/275] [BrokenLinksH2] fixing broken link Fixed link in line 362 --- ...w-to-open-a-word-processing-document-for-read-only-access.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1dd1d97f..9f226b14 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From 8af57b73125f38d69416cb620d4610f21cce1467 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 12:04:37 -0700 Subject: [PATCH 070/275] [BrokenLinksH2] fixing broken link Fixed link in line 236 --- docs/how-to-open-a-word-processing-document-from-a-stream.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7f887ec0..832c23d7 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From e8873fee2328a5eb6c1eae128f45846808bb2235 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 12:21:08 -0700 Subject: [PATCH 071/275] [BrokenLinksH2] fixing broken link Fixed link in line 285 --- docs/how-to-parse-and-read-a-large-spreadsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c3129d5d..7d5eee59 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From d7725f2f6e675a105d7aac729b03baad96b79487 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 12:27:59 -0700 Subject: [PATCH 072/275] [BrokenLinksH2] fixing broken link Fixed link in line 543 --- docs/how-to-retrieve-the-values-of-cells-in-a-spreadsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 7c8d9ecc..2bd9389a 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](/office/open-xml/open-xml-sdkd) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From 5a3439800cae9dbda5362b5e3b8357ced3fcc154 Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 12:33:22 -0700 Subject: [PATCH 073/275] [BrokenLinksH2] fixing broken link Fixed link in line 202 --- docs/how-to-search-and-replace-text-in-a-document-part.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 735708db..6c3c4d3d 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) [Regular Expressions](https://msdn.microsoft.com/library/hs600312.aspx) From e13ab2727690a1bda4d57ba977ffdbb86278cb8e Mon Sep 17 00:00:00 2001 From: "J.P. DeLauri" <100883092+jdelauri@users.noreply.github.com> Date: Tue, 5 Apr 2022 12:38:24 -0700 Subject: [PATCH 074/275] [BrokenLinksH2] fixing broken link Fixed link in line 731 --- ...ow-to-set-a-custom-property-in-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 108e9c18..393ba450 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](/office/open-xml/open-xml-sdk.md) +- [Open XML SDK 2.5 class library reference](/dotnet/api/overview/openxml/) From 56e917dc5817f7dc53d47c3e6fa082bc14ccae98 Mon Sep 17 00:00:00 2001 From: dereklh7 <101607642+dereklh7@users.noreply.github.com> Date: Thu, 7 Apr 2022 17:30:39 -0500 Subject: [PATCH 075/275] HTML fixes --- .../structure-of-a-presentationml-document.md | 24 +++++++++---------- docs/working-with-conditional-formatting.md | 2 +- docs/working-with-presentation-slides.md | 2 +- docs/working-with-presentations.md | 4 ++-- docs/working-with-tables.md | 2 +- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/docs/structure-of-a-presentationml-document.md b/docs/structure-of-a-presentationml-document.md index d79db7ba..b34afe61 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 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](https://docs.microsoft.com/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 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. | **Package Part** | **Top Level PresentationML Element** | **Open XML SDK 2.5 Class** | **Description**\* | |-------------------------|--------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Presentation | \ | [Presentation](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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](https://docs.microsoft.com/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?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). | *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. diff --git a/docs/working-with-conditional-formatting.md b/docs/working-with-conditional-formatting.md index de59d895..f27ed230 100644 --- a/docs/working-with-conditional-formatting.md +++ b/docs/working-with-conditional-formatting.md @@ -19,7 +19,7 @@ ms.localizationpriority: medium 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 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)**. +make up a SpreadsheetML document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md)**. --------------------------------------------------------------------------------- diff --git a/docs/working-with-presentation-slides.md b/docs/working-with-presentation-slides.md index 56d766d4..24b396b6 100644 --- a/docs/working-with-presentation-slides.md +++ b/docs/working-with-presentation-slides.md @@ -182,7 +182,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 +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. The **Slide** class constructor creates diff --git a/docs/working-with-presentations.md b/docs/working-with-presentations.md index 279aaffc..c9d20a2b 100644 --- a/docs/working-with-presentations.md +++ b/docs/working-with-presentations.md @@ -19,7 +19,7 @@ ms.localizationpriority: medium 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 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, see [Structure of a PresentationML document (Open XML SDK)](structure-of-a-presentationml-document.md). @@ -325,7 +325,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) +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 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 diff --git a/docs/working-with-tables.md b/docs/working-with-tables.md index 82233241..72ec9dc3 100644 --- a/docs/working-with-tables.md +++ b/docs/working-with-tables.md @@ -20,7 +20,7 @@ ms.localizationpriority: high 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 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 +document, see [Structure of a SpreadsheetML document (Open XML SDK)](structure-of-a-spreadsheetml-document.md). ## Tables in SpreadsheetML From 04629b4d67653e365da26ad6fa6088a81f62d353 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 06:16:31 -0600 Subject: [PATCH 076/275] test --- ...ow-to-accept-all-revisions-in-a-word-processing-document.md | 2 +- ...o-create-a-spreadsheet-document-by-providing-a-file-name.md | 3 +-- 2 files changed, 2 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 f13c7209..148834c4 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,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) -- [Accepting Revisions in Open XML Word-Processing Documents](https://docs.microsoft.com/previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) +- [Accepting Revisions in Open XML Word-Processing Documents](previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) 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 f1dba398..c40f6fa5 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 @@ -50,8 +50,7 @@ provided, each with a different signature. The sample code in this topic uses the **Create** method with a signature that requires two parameters. The first parameter, **package**, takes a full path string that represents the document that you want to create. The -second parameter, *type*, is a member of the [SpreadsheetDocumentType](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheetdocumenttype.aspx) enumeration. This +second parameter, *type*, is a member of the [SpreadsheetDocumentType](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheetdocumenttype.aspx) enumeration. This parameter represents the document type. For example, there are different members of the **SpreadsheetDocumentType** enumeration for add-ins, templates, workbooks, and macro-enabled From c349eaf233c17e968968ddb705884f2222e6ab29 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 08:32:42 -0600 Subject: [PATCH 077/275] revision --- ...ow-to-get-worksheet-information-from-a-package.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 590bd005..9768ac41 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?view=openxml-2.8.1)** 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)](https://docs.microsoft.com/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?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**. 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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheets?view=openxml-2.8.1&preserve-view=true)** and **[Sheet](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheet?view=openxml-2.8.1&preserve-view=true)** elements, which reference the -worksheets in the **[Workbook](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.workbook?view=openxml-2.8.1&preserve-view=true)**. A separate XML file is created -for each **[Worksheet](https://docs.microsoft.com/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?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. ```xml @@ -71,7 +71,7 @@ for each **[Worksheet](https://docs.microsoft.com/dotnet/api/documentformat.open ``` -The worksheet XML files contain one or more block level elements such as **SheetData**. **[SheetData](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.sheetdata?view=openxml-2.8.1&preserve-view=true)** represents the cell table and contains one or more **[Row](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.row?view=openxml-2.8.1&preserve-view=true )** elements. A **row** contains one or more **[Cell](https://docs.microsoft.com/dotnet/api/documentformat.openxml.spreadsheet.cell?view=openxml-2.8.1&preserve-view=true)** elements. Each cell contains a **[CellValue](https://docs.microsoft.com/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?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. ```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](https://docs.microsoft.com/dotnet/api/documentformat.openxml.openxmlelement?view=openxml-2.8.1&preserve-view=true)** and the **[OpenXmlAttribute](https://docs.microsoft.com/dotnet/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?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. ```csharp foreach (E sheet in sheets) From 38e827c9e69e9d86075f2d34fe61659a445d1085 Mon Sep 17 00:00:00 2001 From: dereklh7 <101607642+dereklh7@users.noreply.github.com> Date: Fri, 8 Apr 2022 10:06:37 -0500 Subject: [PATCH 078/275] HTML fixes --- ...tionary-of-all-named-ranges-in-a-spreadsheet.md | 7 +++---- ...st-of-the-hidden-worksheets-in-a-spreadsheet.md | 14 +++++++------- 2 files changed, 10 insertions(+), 11 deletions(-) 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 2caaec39..c1a98fff 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 @@ -112,9 +112,8 @@ The code starts by creating a variable named **returnValue** that the method wil Return returnValue ``` -The code continues by opening the spreadsheet document, using the **Open** method and indicating that the -document should be open for read-only access (the final false parameter). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part. The code stores this reference in a variable named **wbPart**. +The code continues by opening the spreadsheet document, using the **Open** method and indicating that the +document should be open for read-only access (the final false parameter). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part. The code stores this reference in a variable named **wbPart**. ```csharp // Open the spreadsheet document for read-only access. @@ -141,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 2.5. 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 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 83833492..26c14a80 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 @@ -50,7 +50,7 @@ You can use the **GetHiddenSheets** method, which is shown in the following code Public Function GetHiddenSheets(ByVal fileName As String) As List(Of Sheet) ``` -The method works with the workbook you specify, filling a **[List\](https://msdn2.microsoft.com/library/6sh2ey19)** instance with a reference to each hidden **Sheet** object. +The method works with the workbook you specify, filling a **[List\](https://msdn2.microsoft.com/library/6sh2ey19)** instance with a reference to each hidden **Sheet** object. ## Calling the GetHiddenSheets method @@ -89,7 +89,7 @@ The following code starts by creating a generic list that will contain informati Dim returnVal As New List(Of Sheet) ``` -Next, the following code opens the specified workbook by using the **SpreadsheetDocument.Open** method and indicating that the document should be open for read-only access (the final **false** parameter value). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part, storing the reference in a variable named **wbPart**. +Next, the following code opens the specified workbook by using the **SpreadsheetDocument.Open** method and indicating that the document should be open for read-only access (the final **false** parameter value). Given the open workbook, the code uses the **WorkbookPart** property to navigate to the main workbook part, storing the reference in a variable named **wbPart**. ```csharp using (SpreadsheetDocument document = @@ -111,8 +111,8 @@ Next, the following code opens the specified workbook by using 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 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. +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 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 var sheets = wbPart.Workbook.Descendants(); @@ -125,9 +125,9 @@ The following code uses the **State** property of the **Sheet** object contains an enumerated value of **Hidden**. You can also make a worksheet very hidden by writing code (either in VBA or in another language) that sets the sheet's **Visible** property to the enumerated value **xlSheetVeryHidden**. For worksheets hidden in this manner, the **State** property of the **Sheet** object contains the enumerated value **VeryHidden**. +For these worksheets, the **State** property of the **Sheet** object contains an enumerated value of **Hidden**. You can also make a worksheet very hidden by writing code (either in VBA or in another language) that sets the sheet's **Visible** property to the enumerated value **xlSheetVeryHidden**. For worksheets hidden in this manner, the **State** property of the **Sheet** object contains the enumerated value **VeryHidden**. -Given the collection that contains information about all the sheets, the following code uses the **[Where](https://msdn2.microsoft.com/library/bb301979)** function to filter the collection so that it contains only the sheets in which the **State** property is not null. If the **State** property is not null, the code looks for the **Sheet** objects in which the **State** property as a value, and where the value is either **SheetStateValues.Hidden** or **SheetStateValues.VeryHidden**. +Given the collection that contains information about all the sheets, the following code uses the **[Where](https://msdn2.microsoft.com/library/bb301979)** function to filter the collection so that it contains only the sheets in which the **State** property is not null. If the **State** property is not null, the code looks for the **Sheet** objects in which the **State** property as a value, and where the value is either **SheetStateValues.Hidden** or **SheetStateValues.VeryHidden**. ```csharp var hiddenSheets = sheets.Where((item) => item.State != null && @@ -143,7 +143,7 @@ Given the collection that contains information about all the sheets, the followi item.State.Value = SheetStateValues.VeryHidden)) ``` -Finally, the following code calls the **[ToList\](https://msdn2.microsoft.com/library/bb342261)** method to execute the LINQ query that retrieves the list of hidden sheets, placing the result into the return value for the function. +Finally, the following code calls the **[ToList\](https://msdn2.microsoft.com/library/bb342261)** method to execute the LINQ query that retrieves the list of hidden sheets, placing the result into the return value for the function. ```csharp returnVal = hiddenSheets.ToList(); From b049209b2abd7b90ee234e96d77e914f815e3c88 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 09:15:10 -0600 Subject: [PATCH 079/275] disallowd html --- docs/how-to-merge-two-adjacent-cells-in-a-spreadsheet.md | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) 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 c597c52f..8162b326 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 @@ -93,10 +93,8 @@ object that is created or named in the **using** statement, in this case **docum ## 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**. +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. @@ -237,8 +235,7 @@ expression matches any combination of uppercase or lowercase letters. For more information about regular expressions, see [Regular Expression Language Elements](https://msdn.microsoft.com/library/az24scfc.aspx). The -code gets the column name by calling the [Regex.Match](https://msdn2.microsoft.com/library/3zy662f6). +code gets the column name by calling the [Regex.Match](https://msdn2.microsoft.com/library/3zy662f6). ```csharp // Given a cell name, parses the specified cell to get the column name. From 00df8df43fe9586e243c4c84d1a33ba34b6178a6 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 09:20:08 -0600 Subject: [PATCH 080/275] revision --- ...how-to-accept-all-revisions-in-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 148834c4..3f69bc28 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,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) -- [Accepting Revisions in Open XML Word-Processing Documents](previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) +- [Accepting Revisions in Open XML Word-Processing Documents](/previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) From acaab16bfadff531538a9c1f112245410bd315b9 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 09:28:52 -0600 Subject: [PATCH 081/275] typo --- ...ow-to-get-worksheet-information-from-a-package.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 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 9768ac41..85781616 100644 --- a/docs/how-to-get-worksheet-information-from-a-package.md +++ b/docs/how-to-get-worksheet-information-from-a-package.md @@ -37,7 +37,7 @@ 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?view=openxml-2.8.1)** 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?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**. @@ -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?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. ```xml @@ -71,7 +71,7 @@ for each **[Worksheet](dotnet/api/documentformat.openxml.spreadsheet.worksheet?v ``` -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?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. ```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?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. ```csharp foreach (E sheet in sheets) From bb2308cf5c2f7341a9e8b9f0df0cc3da66a1d21a Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 09:40:56 -0600 Subject: [PATCH 082/275] view parameter --- ...how-to-accept-all-revisions-in-a-word-processing-document.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3f69bc28..dce33047 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,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) -- [Accepting Revisions in Open XML Word-Processing Documents](/previous-versions/office/developer/office-2007/ee836138(v=office.12)&preserve-view=true) +- [Accepting Revisions in Open XML Word-Processing Documents](/previous-versions/office/developer/office-2007/ee836138) From cc6a774718127ca06234569728e3c46000b24751 Mon Sep 17 00:00:00 2001 From: Emily Prindeville <101227626+v-emilypr@users.noreply.github.com> Date: Fri, 8 Apr 2022 09:56:03 -0600 Subject: [PATCH 083/275] change --- ...to-create-a-spreadsheet-document-by-providing-a-file-name.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 c40f6fa5..5cb8d4b0 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 @@ -50,7 +50,7 @@ provided, each with a different signature. The sample code in this topic uses the **Create** method with a signature that requires two parameters. The first parameter, **package**, takes a full path string that represents the document that you want to create. The -second parameter, *type*, is a member of the [SpreadsheetDocumentType](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheetdocumenttype.aspx) enumeration. This +second parameter, *type*, is a member of the [SpreadsheetDocumentType](https://msdn.microsoft.com/library/office/documentformat.openxml.spreadsheetdocumenttype.aspx) enumeration. This parameter represents the document type. For example, there are different members of the **SpreadsheetDocumentType** enumeration for add-ins, templates, workbooks, and macro-enabled 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 084/275] [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 085/275] [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 086/275] 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 087/275] 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 088/275] [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 089/275] [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 090/275] 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 091/275] 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 092/275] 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 093/275] [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 094/275] 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 095/275] 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 096/275] 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 097/275] 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 098/275] 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 099/275] 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 100/275] 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 101/275] 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 102/275] 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 103/275] 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 104/275] 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 105/275] 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 106/275] 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 107/275] 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 108/275] 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 zcmeHD`#%$o*WYG_xik}V$^C8=Hf+eXMD;1rB9hCZG0CN5E}2_aX|%b{CD$-y2npqq z+fd4KExBKod_oEpPko=~KX`uqp4U0=*E#3?KIe5_=Y*XN2J3klhzHyP02Ft?fWM~w z7ykAV_xJbz<^UuBfCC`^I2nM$0dUMeH4=bC0&sr<`NzmiB$9#xIZLkpTpVT zAJ0geDk+*}RWCkoTIpzCW%sSUeY-w3w)tslYhnHem%H=z-=AAse|GJ2$ou<$*8Caz z-<$t)_`ap_Z80842}GbMG+xH?Y)n_vuz!fh7GFG^hCifdbTfnVxN>U!mi@C)wA2@6RDJ2U`6@xP@R`ea!tj48i| zOW+DSpXVS1HVL{j6yaN)9<>`v;PdZ<`W$N3kQ!Pth(N((GD!!LzAIf5DReXstg!nf4>f0#*pBVOWFq zx z<@@;(Z1KE`4y{#ct4ni5H*dL-AfhKfwK!*m9H4YfEI9Yf<`^@fz~y$ zzm2P;2w2KEr6ZILWswJ(#0x12Cs#hdDiAl!Y`f$+;QAtAHdMCra;z${EYM6{@3C4B zUtpvBz+%nCvDYR`DSDj(Yp;~)Ju;n&^b>XcN$W|uY@XaowN8!x{;Z%>xyk~@4rmbl z{#bR1Pf_9bijDz08EsexH$CEd<;9B0)w&k0-}NS*YpVv6;|USpn!)Na@_R4++`sw{ zPBA?mrQR4_&58(E=a2OblSV2`@g8*z8=;y^`PHp8MQFEd8|!Ft#v4BRE!A@)8ans% zuPU(iI%FGY_|Kyf4>bl}uM~A0_0MC3h@zd6Y#3vga|u3DEFau0(#K2Pr9IEm)7Q;@ zX6h_W)ii7?x<}Dl`*u`(gJ#NE0{xQ#yYPDfO6AO-f2qv5LA~ z-$|DZTIN8pno(chneYvIzEFwA2|Km}V$I0~h;mQMf?eUxfS(sQv;Lru9c%m)F`TZ{ zU+IlH1wZ3L-OM&9Py=|ifm~{*b3o^=nvygJNh1yn)Sm8R^nw83HZ&e`grKhD^c56# z_|+p&Q;d*{eXL7^1q6DoOb~n$B+=Fe`EIIq6m>E-{Ch|dFHqySfS>)1!|~ZFVU|MD z;R7Ls=d+K<_MRfLV*No1k3sD#=0xT>m+m%2Gehix|i6`x9!prtb|;D2l0NV z`1~8ZC>Z6kujVkmgY&eci|KeS+i_%MI`iLOdshV=pyx-XQu8Fmd;LjRSdSbE(v)lY zPl6O@1cItJv2`#)$o<#9^9gpv6oTA>pZK)Fs7 z;E8=T-3ZFk(;?=};WwVun3++ic3%$D*C1U_$iP{4U<;>>Y8&f0%RJ-dd3@Y|wjgA!|^`tMEmZ zlG_X0=OR{>7Usp5$2K2X!U+!zqa^{@JqB`Mi;dj59v~?xP3rmkXacRR!G{EHcTq}lj>x<}s|)mr+x@QNfya>aR}1}}Sn z)c2D5Kw{46(|Ce>^|>;;b%u?-MfyZkv<|Nma#UCMRS3w@l9&(5m+xI4(?d(5p z?0EF)m!3KH`IieAE`5*TDy?nSm^Zps3Qe;%Hn@ciRg9E>h9xOuSR0sTBkR_yu{<%+Yc$HBy$Pi^q}O7?~U0^{xY6Ceq<@zzpv zA+kmUGv2po{V~0@PE(ZR9ptiUnx6S0Pn<%cP3Nd}*ODYpVbDRa_0PDYDi?TG(e}Ck zJVcbVb_}<-Wf;ZlNfA$=Kuhg~7VLS&MZc@T3;{gj^&lOBRDhC1&|T@0fxXHvP( zsHa@8@;B$??_tT?naTGbM(pyRP%J%Jz9ricSz_83?C&N}rvzn@pF4O2K7z;E6nFS*(}@NqSd3NsFcgoV76Gkw1NY zPpjiZkaVp~y}qrj0|KK-mkLpkQUYm_G?Y(7YkCCr=0m>(O*4S@-b>umF+XSO2(gUj5t zByVF&Vi^%13p3{9(mr&S%Ym&T8HTkKgE~>#q^Nb}OvOL*w4lwD<&BgBsWN9L5HI=5 zgS9jq&(oDuj%XBHooTYH5KU_aR$ZJce~+yMl^ga<=t<05oH`g8v0OC|VMd7_d)Xvw zv~yq2Px|V7MZ+`m;c&AMsVArBPu7nlvz=KGqz8XCOK6fM@{*bkE-*5>=dWIyY|)sYAWQ(UzI=KU%eYWeWMdaX!7 h9bbE$&`e#m23)5&|2#ZAOjT7$j*d#Cwo0YvNwCsMu;Wz# z0965xRW$%rHA+=gHC0trR#lf(R<>1#%~zZMSEI*Ft>IO*wpF(0SGoUH(f?ln0ABzn zS^!F4C{T3T9Jc&k~Z)mWqFUajF{03lxhNoEWHW(mT-=Fb&sodng4gH|97Bj*efAkjIY4=Z(hy zht21V&i9Vc|CAU2mNfvBF(H;UCzdrymQ{z6d6$=$my*i=niv3@7)+jzmzU>&#@^?} z-v7ku|HbzI%Fvq4-MY=?)Xn1O&gTEj@b1p{@6iAM(2fAqmNnFtRn?jp(7IpO*VoqQ z|JMKi-o0Agx?kMWm)g<)-rnBZ;{V?7|JwQg;{N~UwN>f5U+2`8;_15Q=jY|(|L5<$ z;`P+x{^{iZ`RyDe@4Z^@y<_d-|L^|)^wgI0)Ti?4y7le<@buL1|LOGn_V)k(|Im*9 z)|&t6y8rb5|Mb-U|JMHh>Hq)l|Nr#=|NjX709|>ZMzEm4g9sBUT*$DY!-o(fN}Ncs zqQ#3C8w$+Gv7^V2AVZ2Ad2u7jlPFWFT*;E6$(Ar<%A85_;mevhbL!mbQJ}J)K!XY$ zO0=laqezn~UCOkn)2C3QN}Y<-Cs1TyI%w@sg{s%0Shs%Yq%_$f4~f32UCXwuTccKg zVjZijQU?-mo2u%-Cg@zUOwFRrOSrJ%!$IRJo4ZMw;IxQ|n&s;k%!kH-&q9vOxwGe` z0*8qn7R>S{(RQm0+pCp?=+dow-5n;I1njL-v|c8iwL=J4thI)Sb!e;W*QQ0wzAQTg zt0-GLlo58e&uZhmwR-3yTWb~STg(289#6i!`Sa-0t6$H)z5Dm@Lys=K`+Aky*KLE@ zu6%aw(%UV!NouA2wpSH_ht|O;=9pxb*`kcR(a76&j6@j)2s|D~n}2uFCu9d8 zkm3nf_>H!wYHgPIV3TT!2Bm5k=1HZMeYBb5n_H^s=#yZYY3ZeyT8gHf!vs2~Yky+M zUzTs`S!a;43Yhr)$?2Yo?(yrWnI^03 zvg>Wyn^v^$*_vp(KsQ^P#@U&wsj5}0-K(;C>aCm+dLTvzG!hGnwdhJBj2-+*I~%9N z$P2Ec48~s7&+CIOnYM&I$|U%FjRtE%eYt7j5*> zNGGlI(o8q)^wUsBE%nq$hvEg*SZA&E)?9b(_198c4ffb%mu>dhXhSV_+HAM&_S8Pi!`s$zy1iotR+wJP5+_Nsxmi?4Aixs6rMx@p&$c-4|jIL)pzxh%WF(KD@WY6mstc z-M}IS+ws8=iZO{@Y~mBwsJtk?P6{!QLKS0oMI>rbhZ-y+7-1KWdVFw?nIIzwgZMfQ zijap#>>eQjz>Xchu7`_!od#?8y-1?akv!zyB3)4r9-1&8Yz!sx+z3Z0$Wewa2;v2^ zxJ52@5&$UNqc3E+L?Z|?h`#V3F&G&^*nKdFu?*uSc6f;(vSW|g_+$}X&_!SdL72oe zX7^~w4hddDl-Lwr6iaE!Il}ISl;j=`!AHXy%F>673}QAsNQN-RZkGTkVs zNMFn|mHcGlJp3US{K?>U6;#hj~kqPLPNa%mxin=uBt^m6um!M@eVORom6{b~k0ED`A&IW_B`% z<>a6~56O;2<`Ajj#3Ur0YSIrz)dh!yWf0`b)7QcC5;O#5R|gxruiEa4HXLXCz*xp4 zIu?C|jVu5RTf1IT(1P-#p$#9)+44!2u#}}80C!l{&YCuSpB-#yQ_I@cLNTGPjsC4{ zueaLS+V-|Ig)MG(%Uj^p_IUg#MF5B(hX52|cKo0P9AM{vd_NXC0=-kH{SA| zm$}ebE_0m=-R=Sazr=F~5VX5p1Lt>m`xRb)0bpL)>BA88#Rn1spny9(H@ef!E&%vp zi|O9LzVHQy2GGy|Z-8UE)dc`Pnve<;A6U8rSgt<;41nf_xE&x4Kz5TGh7#O>#5R7N ze3e1s8@Pi7s0cs<#IfP*BKX0+)h+fWT;bSZ7s!Hmu7*z><`LWC2F(@m{(%h)juwL> z#^6{0eV44^?BW9pr1&!IW=!8UuQ$5SZ8C{loZRK&x4mC>hmlDv=R1?)%2-Bd`?&ny z5!b@H_<%wM+nee2rq>(}zVUSB41h21SiptmbB~>?X!n*n(8}Gjrj^`+bHqBx0mw1z zqD$)ZdZWE-esriKEot^qI(EJWK(aYKYh|}U98I9_>#l5S9*(1?@OF>==|M$YuR(1*gIP75=Z&=704DyMG zt!E!o7t>47L9Unk;s7jQ8P+!Qk2U<`LMwdK%E0b5(e7$$SntiIK z-M5u4({=+dxWg@OrP~*Es;AcKsqMPgB@6bko1KAWKfBuTm-e;0owiJWyWB(B_T6Ef zxW+|ptl3N8_e%HW*L`@hgQw@-`ML1E^YOz|D~h;R&*`um{Hk4jJNquVzTH)|4gpi=76!LY8jYv-IZ*<7G!QFfoi5`(`9qZ@Ph~VWg#e8 zBe-Ss=W)mud&}lrQtohqSg{*G6woXlDl)TT|F{RcLx)cwlvyfBu1XW)9bXEXQvFs0;unaIIHx2Zw;> zri1F`XMpB&Kq!GQ*kW@i4tUmFM|gfBFb~)kZ~(B1oY;pT_=l?)i?TS2v{;L_c#F80 zi?&OrgC4nYUPIyF*kFiHflJBdPwGESg2mk#{);^hUNzj z958adR*gJ3T^x{!NQjEdrG!Fej+SVCQRs{A_>S;Mi@X?*@#u8mpnCKOk5M>v`Ph&C z_>TY?knuQ=0(pyfr*#EMkL{R{4B3zl`H;0pkPtbM`M8i2d65{Ik+^6z8rhK^`H>(Q zlJ3ZnB3Y6qd6FoZkR+LsEZLGS`I4)+{*o{`lQdbA6e*J#d60QGi$3R%J-Lpnm~=Jy zlQx-=IGKBi$qzJ7kQKdIYr(Si@R5dKDl?n2$dLzkyB}q zduNpxiIo6ZN?XZ_gSd4dcYk%LVC|rUx`q!-a0k_;gbY9j0!Ek57yufO2Jtm=@TY_~ zSBBY`ecRW4G3Ii9SYzB4d>Z6vX$B9>w*bf>U4(X)XnB*l=a1afmLv9-vq*8?plA`t zYA1kccs6D-ri$)h0?Xxd?$Da0wwJi+XpXju)`xE%Xk-gWV5v5M=htHU77prFXA)Ok z@&*T0`I!%?mi@?0r$mb-c!J#iB@58d22gMgmv)c7sf7u6aGW@6;u&n|iD+u}o2~eU z^H5?-cmt}&XIDmIG1iIgP-xL9oefEy^tezC^-$Ppn!*@+&1D0*une`(3YxZ_C#a`_+L8Wz+K@WAb%UCyf?BAG+Nh2?omKj%k~*mZ$*7cishHY}mYS)Y z+NrU)sS`;Lo;s=_391n32-;wf!i9H;+MnZ4;e$d+N-6vbza$zJsFn7%5RHDtFdRRv#6{NSw+ptlfD|1 z7$%qJxL|fkZ+W?wBL}9dNSDrcj@}q_Fs27ECJSwteJCe#0RX1M=U)7GXZA`1(sctb zrfbMbs@&R;-pZ@8xO=FnnhY4Eyom&2CY!XmhvwI=u@{8q=YSmuiLYs~VVbRCISR@} zqBd%r6-ct$8vc{Gnvu-PuniloCTM(xz@6R+o_Xf45vpwF`Gd1&gMm3+rP#4;Sewd~ zY{hx4stJY`XJEc|u%nu=45_O!JG0OFs|flG3d*1k>S8=gpRTxv!@6y7(0Rq0T|S7k zXDfVrC!?}hXHNTJP^(^2>#0vO4wqZg~OEy!Ia3kOFRUv|r~Et|ImDXM(Cil#@c&naVDT60}0ZC~n_Vv44HHlHT< zrbs{l_L_}s8<=3Kgw9zAqmXZPc>=W?Y<76Jo$9$5>8A`?vlm&GEt`+V%aG|1z0y0q z)LXsQ{(HUHo4wk*z1-Wq-uu1ayS*a$y!m*&o%(_y*QnTgl`mV6)!V%A3jowhr5Gu_ z@q53vXukzXzPFeT`1`-O7`>I+zUAw`y$HGh+_DDzkNiuE3#^NKYm0}9ohTZts28hA z3X8JZcTJY0SYWRYN0h@SxY3nkibiT=IhMZoz|Kp+^vJ@vXtfd?t{SU{`RJ4y%8C^X zl((2{a?6y8J7k_olwanmvxvdD$h`dvkPSSGFno(K>#U*+tvM&HV2Pz%xx*F-gd8wm z!)ksa?3qQp!?cLRxTwVW%fv1mk56oi3tOOl3zg$)Wpin+hKa6vDTnLom+iV>&i4lX z^2q>m;9hOkg@H+E@@cy}_6EvDp%VvVCX25^jCwVP05XSiHJ5ORc?>7#WbxXr^VMYI zH)T}@WGdW?ZTyZ+EQ_g3i*F3BaU8^TX}2Y?nodTzuo;QUcCkKJc($otV;FR5%WB!0 zX7X^e5ejTY{IQNUd=xmzMoXVtYKc|Jo^`os%#3GfT#K#ji>n-q-7Jey498R4u-bXE z-T9s28Md1Dv-B3UMyA8!R=AMZ1k2EUODF>HV4NB&4w{x;*idoLHO6d9#FOlDAttBV z#b+oxi@bJ;nY+ynti}@=&ao)NQf!3>x@laypbh$<>^!!P>}qD)llLf|Gj{&Z_z1V$ zr3ZGFmuxuD(441@yPqekpkTBPYhSHn1V+$%XwWuIb6g#y860xS#eHZtaoJ^b zPb+M#$Ho*5kw%TcN&RtHT)Mq!ra-y6VOoi<`;3SzVhoMXCOmR6R%)cyT#rp)8b$z@ zTh{W4$3ixvB_> zl9vbDFD%;)N!!wipLMO<@95jKNYwHx+{g{iybZm{o!rE|t!oUA&;H%qnL6FKTG8&P z*VK)v*6p&`?TbiVpjo$*4g1=@2&)>5i)QSO#;T~@4FJY%)EG_98r{`RDXck+v1Odz z0omS(`rh&Fj^hl=YxdzD7CCG$4Wlu=7UY*FScxK9`0!_%6?FVPq`lu29-M#qA7hd189JRF^ zvA9gJv3ZWX9BaNDYrYoDrbf&*jDX0{T@NUn5on4GCaLe82@>v(@(lnM-s7fcX*P?q z>b$e#DYkRw&M2sZ@r<$X#b+sv&mp$Y*9y06YUSJwkXo+e{<=8d1n%Qm*tH)Gwr8%N zWQ)^g2%T?BuwrJ<`TdNPXM=bC;DVavTfV~X7~X%b)TjrzO+BNy9M$nfn~Ce8dw11Y zZHfIxi(D9OGZy8fFzGk$sFu#>xv1Tn&evY3rQU_Qe5kr7&bovRbcWsHh#hU39j1(3 zxSKi9H>Zspd#SaK*8;iP1=-rFZQk3h-2b@ewtmC5P2MJ%+uOdxdVc9#F2Irs+~uCX z>VEDTslV+m?eZ>=-rkY#JMUAP?+$tIBFVk_?vVhWk^WwixX#MqoA3(1@C@JZ4qxvl zS@0sM=`%att*Y&=eZjD}-o5yfU)Ol70^6h)TQ}f94&UkiORBf0~cc zr2$}|;O@xr8d>rnIp8Qiiw91R(~4m&FOXpf^9)()H$Ue*1LUzoW`)kgH zYm*-rLJKKN7is|`X&B}`W<=ltB>JKnV=s1wXtvLBQ4MC80VB{ zc>;Z9gBScgd*;HsgO6V7kzYZ~@9NGklF+Y_6hHm-?V?N#w}^kEqdwKrX8X~$>Hq-% zfWAVc0Jv-6&EK;d{A`J6C(s`>I06BHgShYp0FC+tZIsAxV8Me4!7Wf`QJ_9UDK+w= zUGpo&yQp#A5JbfB*w- z<`f8yD+4-k+yRLgHb4V$V0SL$>Xo2DgbGD^euBG)g($=$W-^QIA zz-ZmQdo~R~L{0#yzKtJ8o?JOmqsyH?haO!zbl%ggU&o$Z`|jr3y?+NEK6G{Q<;|bp zPG0*`^zGeGSD)RHwxGa;6Zg4!wtmja+?7BHwEws=%$uG(>kF*gXnGH~_^?A{8v0Ii z3aa8%s>?S0UZSO$YDvVQK-4k8 zs`|qX#S~v#(Yh90oKPjyEbNIYn)JEqAhZVbiZCYbAb^ws$@1{5d2HcI1bUvyD}8wkz|3U4Jgiutu~Gr^6adLHp2%B18quHtGP0ql+_S# zoR+IBJ=16>u?Q?xt&Ok+i>6C^a86}4TmuvS&hzD2J(ZPKm>r(A30z5mH>Ho$3K_JKp<@rIB_EyYW~;E$YTYUk zT$f90TNM?|00M;A8;`2gZ$Jcgm~{yq8Uu1&I0<^?ql*^s^DCzz$~bDFruOb?l%>_J zVZj$CQrPzF8xB&&Cl8Ns$}h+KILkBVyz|CA2R(G%HW$5g(*+_uxvEcR9X`k9%eT?s zBF~T9*Z4DWsNAMHvW*~xS%$sI_1Ul6P93!Aa?;fZoJpisiVW|xME|@_PgyVm83LdcF z=NtLuCwwZQ$)rk9sT*7>Q=4iaVLasyP~nUr3z1790>d#lz^WaxdSI32(x2|$m@3(&G-bF+J5B4?DOoxmJMrg?s2Kl934~!&4 zn*IjH23;~YB}3k^EHXX;vdmWtv|-E$Db1RhFJ(P|gF~{Ev%U~5E8wVzs^pmQ@`w~9KnKT3Cx21KGMJGk6DvtCNWAVm^ka|+sHiG~4+ft_d!0RV254S2@N{vsqD z1s^{^2VnrKA*)_TtuVAJUM*5ry4n>0j1|vbjU7P#VAe5f`{;CMh-VOx)A&>#>27y>vV5C9M9b}im;D<(`kgsOfpM1@tX zK<;q?;BqwpvAwHv;jml-Q5PH(FvWA-FWT7OhR`pz3ScX+wTanThF$)#hDjWjL8tBe88t2MFY(49Z**0|QgwG4xd6+`3NQ5jt*ot2M@Q~4ZIB-B< zeS!}h>o_bAfJYZjF~AuxgDlnf01pMOD@(nuUN$czoF%Yrz;+xCaKJQKJT* zHPB0bK!cxrktlE3Ak>Adg}KbM!dm3QUG^}T%Zv>tlbFP_O*2~+on%tSd9LA+>~xTM zlyBsiFgd{NX>id4Qf&3R`lVTa_ZwaR)=0t>HbtWqYh4MP+R={IvRV~e)yizO!ytBc zUuYJM%7D7CYQ9I7ETUF8JNCS&rn7YLnVSVa7R`nAEdx-SVblKNw!4HXZUAH;>?xnO z%DlaFp(5~0#%|ThMs6)vpc`=BK9(yo_^h>WGGjJ>xJ{(3fLtRzXQ+lp&F8@|#VZaT zu$rgiG~Rf~8SS$-JKbWQo$l%@UtO^pYDLG&a`PCYPzQWs2k|OO(2828DNINJvw0#mYef|*%vHGUaqZhG_9Rzr&a(z`W z5{`txYD`(eU)e)Gd8A<7^7=eurnEJ!JPyAk=D^|xHAoX?+Qg5r4+}`>zAIMQBt!hs zW~L5SlMd;AB+#?J0#k(jP2tV z05mxPG!B_7K;W|`jd44;Yr6nIn8&z*u(POgAr!(`s47_(zTrCF;egjmfw|E(clf~? zLChhZ0}2pHoj% z*g~NS!=JFi6xWhgK#H0AbKqSPU7{o$E zM1eTOL@dNbWW+#p#7FGINR-4pq{K?B!%M`(IMl>VY{O3U#4H5GP@K6@B*m69#ZzoT jRV2hzWJQs4#aH~kJ(NXMq{UiXMO?(gSky(O3J3r@UE;gM 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 zcmV(>K-j-WNk%w1Vci0m0e1iZA^8LV00000EC2ui0Nnza0f+zp{{R30001-q08Rh^ zUH|}g004&oE@S{KY5+NX08MoOOSAx9g9%hw0b`H=W}g6Hs|E-R2@jP5H-`m7r3YHM z1a`v{8Y3EwwGNEZ6##w`9HJW{ED&bB8a|{Y001i;fhjOLC^eQSPOmFfmnmAhEo6iw zcE~4<)HVP#HvnBXHLNvVUN>N+G<1+Te4#dnhc}7II{*Mc4{1Rcj6WKgH$O@`OlUx5 zz&&)}Cv_7mlngqMem0iZLI`s}HI70{wnIu&L}iCRZk|MWtO%@VgNH`09j%#0Bk5yU^X^jHiuwHsAgeIXlQ9;bcjXunc&A^>zUKy)%9dRLWub^vsEesPVL zbCJq*l;?M!)Ow)VZ?yDvwEu=R0DELGeq>g8X{d;S9)5p4fO}y3UHx?2iFeh!jkS7)psp0*OB_j9mtcZZC;* zQH*tzk$O~!gJ+10dy9^fjG?EEqsNc2wvrkEkU9XDL>`rRIFyQ7i;FXlv*nn)>zZ{2 znu~6plYN|>o|3kSpueW7NC2Zx0IFXAqJcc6tMR3%tD&&bpu+E)*7&dW>aI#OuS{LE zX9BNw0;Yo;tdL}?m{F^rfUmESud%hOy3et=zqZHPr^xlL&aJP_%&pGGuhRUl*{H7d ztg)_Lvd!jZ9inzF-y|%f(z{9@Bx4qW4z})`DpGVBi&&t=+ z&4x71hgHd>N6D*R&gjn0@T=O8FxInW*1CMp$EV!Ts^8YN*Vx(D$dBT%N#Ww*>#HyH zu3hlWhwkw5`ol~9+I;-su=(bf_4TIy{@)1x051r<5P@KXg9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWF({SC$evBRw(Z-vbL-yCySH!N9D)lUPJE#8$(6A&ketbsh%y-H0TX zXyS<|rl=x`A+{(ShqGO%9((S!7r`Rr1lU($`<3G3k3a?~$Xrni! zFuB)Y_z~&npMVA`XrM^q_n)4RIr*f4Y8WWxqmWuD>7ZqiaYO0EGwkYSE=gmlqo&FKzvxuI2+7~1(xaO+suDtf@>#xB6Iw+w>Dv4;KiYDvi zWy~^r;Iq(1iy)-bR%`9G*k(KBm7J%tQdf)IGD`OJGEAPDW z0@#k-RPKkl0E$}G3+^2;m(EVIBx7AlF7IL~VE&OG<*^Unlwrs--H56AJ* zNGGi{iykirGHdE7qaVqBNg&SESc_8=$|~2W%-3Lt4fEJ!mmRar!qQBn%{J%k_SD+n z`R1I1?LZjGD8tJHgp3Y)*bc~m3@QW|Bf6cH2LL)R4p?rvG3_~$0y4aC5dbSS4qcj67Z0H3;+tvCVVi;kM}7c11W{FF@WusgVOc^h2&>K0Az6A{Q&9T zx5xo9j8eTKY}YTz`D7TWfbDSDw}|%vFvJrC@BtfqKoN=Ai{0=xF`~()Z-R@U1Scpi z!Z{5_hr56zY_qt%G!ARl5JxXo5JGWW!x}5lReMs0jIVtzbe)Ug=2)i-Wza!&qYFR{ zzs5S%vCeh=n!8~O=>R+jc%nVN1D@`XVG05O&poD~LNa(UgfQ@q7t8YmEnE0` z1k!!*e*mzI>?6)j!+Kb@Bmmp(6wU#IH?Yhce9N*XRJcTZ(Q10l?hXD(A!2ZSDo7L){UP2s+)(A_2?H zmosyh0xuemjLUOgHiHGEGp2Ek-+ZH=;z){N)v*vja^tZ02!|i-Z+mJRlp7^sNcGw0 z2nYVWPxQp6fd0L&eEbQF0^@ME1?g>X9fBYy7s}9vX2+8+Dvvib$iaM+OdP%df&?~D z32R_M4swVW7IqQK$#LOyo+E@UCXj~jsZJTJvz#Yv7={MiZgapy=>!sC%+V=gcR!pV z0cPsCnYQPLy5m6USa#AW@?r~Cq{Z@B@kOd;vkxg?!5GD8IXK|z36}eS07T(UZ{pE% zX%IkHpAd#dNUs!)KtLhlc-8>G;jN`$Ks$j%P9N1(j(;UZT+!)Qwc3@B0f1*e*;md| zL@y2C?1Ku7u)TVg;(UoE1p<~J05~8Po@d=&T*Eqwx`L0emzATB>IjGZfiJO?<^CRK z<2OLdEg=pJ>=xe?>d@Z$_P5}HC$@rXvhf|ISJ&}%8!AO=#zal_ywr)0&M z+Hyt@opJT-08oqoI1DzOYfQ0^7?3^&^s$=*FoaxFThDr$0G@C~fc0dYS2DPDdOm7o zIe$zFbz0V)dxdf-`UzL^mBPpH{9}&!V1yK;fs(r2t<}&+MxVm zxe|CKNkyu{7oc>QGxa5Vzh^sL@G^9N)?7|uc+2)8!vVT5bWl4tOV=6EJxkOb3vh_9 zCO)w}Q1zmJakaeR88`*9*diH9fvY%v*uW7kYlJ`iBXwe!!yaxYIo0XLBdGRAeSNYa zW9y@O?zq)!R40f>p;H?Dl>gWONGKjU#p}Uiax_ASe0OQ${D1UtCWsmx7+J zO+!H|=`AsX%gpFbHwDqGn~9d9H9;hJ(eLe?bstT+X728VcCs|ToS9$(U=xhG3b2FzM_p<%u=iZWLWJJSm$>i z^YmHV(@*)aPk*#V=y!C1(D*n0hb^&M&*6;@g_)4%uYLnwNV6$+# zbctePHkybw&l68UB1oX7(iK#d@h!ID8z>LrsjnX)cIMWvkVvn8F_e6mjox?c#sI`9pG3|C9?t!`H&C^ksBZh_9BlKX_0DEEQfKA57Utz`H>(Q zk|L=n1!YhNg;3gMZ~=_73eAoGzhmk}jMnJHp9mSkC$ zW_gxoX&S6SCc-5mQTdioIhC>z0rlWBgprE%m@|5!EKnkpk5ZPK5}1NHn1orFhIyD+ zvKkKp8@JJxyakt#$&H>A0rKFF)L0k+i7<>3DU-q_V)B`w8JeOwnxt8pt^pj587h&v zn%>wnlnIcqc`#o2EPrVwiD{ZBxhlH3o4nbZzWJNFk(wdGn#3uK9`l-g;SJxgoXpvr z&iS0s8J*HOozz*K&gl)4p6kKXy6;2ECcIiBR%GB$ah=$W4Cxt{FVp6>ac z@EM=-`JTwR7xGb@_?e&jxu4#+IO^dz02-hII-mqvpay!N2%4Y@x}Xf&pbq+=5E`Kp zI-wL=p%!|f7@DCPx}hA}p&t678tR`H0HP#Xq9%HxD4L=wx}q%FqAvQPFdCyT8Y^*- zDE}#=IGUq6x}!YWqdxkhKpLb%3ZXO_88xcDH%r^rB-^S zSem6;x}{v&r3E^rMmnNiI;Lb=re=DkXqu)H3Z{@zrC0+10HCIFI;V76r*?X$Fv_NJ z;HFmtrvxeu3t&6PfC>I801krC2@?7X6i^HYngOxUp_uSJAJ7d6N~qw#p_rfqqI$}w2MVa%0HB8|p_mW^V{oYfDg}@Fp}znEl==&_5TMd9 z0?8l_zZ$F`nyH&=LY^9+p?a#!+N{p{tO%N_V!EKL>Z*tup*?^M7ElcWYO5fM33yNr ze+sO^O0LDKshpaupem}++OF>UuB0lh0qUm%TCG=u2~|K2uPP2wU^$$ypucbh;IOP$ z)2{)*2~j|T;E(~wAP&DE0haTq(og}Va6A$lr~%Nh2&$;;%Bd${IjjJvT?I@BYYAmQ z4wz5|F%SSB5dN&!@Ua0f2PYe;iAAdiYOLwHs}v9b5r7Qhu&h0R2s;}FHVdytd$dSv zrSb}(^eUhtYdPG2ulkCpQt$~TgaR6ipv(FTN^q%z5C-B}u(!&v58JR4dkhl`ww5{w z|H_~*t3xJq0%i-W!&yV|ut z8v&Hs109>Rlv}x$>!V9ctqahq_nNPVdJQN5K31Ec+j=#n%dlDFt>VD2m|zH4!?qLK zs;r6$1aPYis;Ii~w3dUmtuw8q( z)LXsQ{=1@?tDyE8yq?<$pqsS{%Dmv?39*~HV>_s>do{3I0kXTfS5pKT+o0gu4CZ<@ zb?dt`d$Pe>2GC%xzze7{P_zY_yq&td(~C9Gdo^4uz}MTr4*b9qn!Rrtr}gT-ojbMs zN(RTOpako%8qf_=0Jd18x@0Q>W?KPh%f7;D!Q#NSl`0EY0|t4}3@6aG_S?JU`n&pD zy#Fe=$NIA1JHY6wyowsVF)XToE3T3Y!A#u5PMn|;+@}=mv@9&OuL`#cY zjG6)d8oUG$z^F^R5i6`J%&LPB0X3VTZ<|=*u)+$KssyvnTXuB6<`upG;>%*3xe%eH*WxD2ngoXfo2%f4KvyZp<-Jj}$L zrNLax$ehf|45Y`r%+8#kJMqlY%%Iu(7S?>t*qqJUyv^L)&EEXY;GE6VJkAH2x#4`y z=$y{#yw2?0&h9)EOm&-Q%J_?*xB%+B)M&sjsy`LLY(JkSJP&<1_b_3Y0I z4bbF34gi4A-3$w_FwvDz(SOheZ2$#OKm<9E1J?l2ARW>*Ar8$@(#^08D82p+y|4@- zJ<78-O)Jk(O!)c)?m^my$o#K)>@O+ zMWNJ8{m|c#4{HF`IxW@m4A25i6Uh+Rg3S#zfz?^<)y*K&bv@HD(F{hA*m7+XiCx!= z;0TJn)Qh0kksTCtJ<|`(45qLKIZe<|!PoK3&<+jQ@Zb-u-4Dos3^d^cvMm$vYdP3} z&0xUB2U`yrKn&tg0q#%~EKSmhz1A$<485?@S|ATG5xSOB3^IZKF(D2Zn+plu0k$&^(l7(?fC;OR-Pf$t*kPZ1@0SG=57SIlFQQD?G&N0o{GJy=N?GOFX5Bu=iv(VwB zKodm}2J)Q&xNyy2FbpFN+`=v14^0!~um;SX4=8{R`5+D+5Zoip-T9CK)x8s7Knye? z4iW(5`S1&bofF&L-8}K#A%xeAAk%S;*DU=D1K{BKAP52O&f?GkI6f2bE#KGN3^`H` zZr}!APz&U+r;^unAzE6A&KZ{?Z)NHh~QNfZ-ax4}@Om zA1)KWKm`R}-V2cBMRDRO-sM6u+$Eh4C%p_Lz0%FV1~ES4%}wJu-rX4h>N@e`G-2vK zk>owW(huzifFKTQ@Z{pq1=bJ~d7a=^e$QJj=`r!;*~|=TKo0p31#Hj-ToBMfUGy&)t&JE%&?yrpu9X<;mjtM0`6B&>W z+iePJMdZ?OJTf5a#{jXnkmryt6FmOg!9DMZrQ|))3*sH*;?UpEPU8b!;JB+cU4R2B4+u`s2hEW3D(?qQ zfayxG=rfV=CJ)~j5CE#s42TQl?;h{XZ8;*o<)k10)4%|@akWc98kOpsm+iZ>vLZ0tJ z?ha6&-Cv#o^}hKxuiHT0@4(&p`QYmVpAW`u=_@S`uWbyiAPTT8<0Q!NDxT!3KI;Bn zHy&C)*#w7PU|(E*T0|%*bWA9j|pNR z^+>cv4C=i7yrB>?~^nQs=pe%!e2!-`ekR(5F& zA;cB6NIG#f;1L8f43mHWZNt>dFpgl{l4(oE6<5I>rU-2Vyp0;TB(r=_qjocPOqZ^4 zy5!|UF)puMaT5Fna98#$Udw*n>He)dtYltyQNe6m822zzGl|Mt?5&^ znYfT^mWfjmFDi=CAv^3{%L3c5YkTxb|Of>S0Qb;xe(das{6c zx$NoFsPd*EK_ZagFG%uGq+@NMt>}gy+x-$|A&|t;F97H|5{Cl6BFLyDl^!H2LJ23N zutEzj#4tk*X)-D)rI=y~J%VQ0$DOOP+G;C%3Rz-4DuiQgfq9(ECoS+iO3ggF7P2cx z(ry$Hybx^B@w5vvJ*ak@ z#*SwQ3I{&R% z)oxrvzZGmqdCDP&oMvkCh8utU>F1btLP|8sV)FVj%`3&Npx?PTd5p`Fvh5a=Z7`AH ztUlqvM2yG4XqenH3l_(kW^lt;W8d--Bm$DekzyV&o<&GvOggdC+8W-e%vuTdk~ptn z0=0Qi&sa*hGBE`ggQq(6|cCslX zgqNhAuB93pXiHpiTnm6YZdtm#B|uxcT(8Ods@z<8GKZ-bBW^(b1|zgsM3i~x-3A$t zqLlm>6*BAWS)#?sJol9!3}PBLtzS4 zxIz{RMQ?HEX?JmY{nP@xyUv7V;{E0B+bWF#e7lQV+IC627nFMzm0 zJTh`UlbqWRyAerf=)jaZNTecF`3+FE(v`1dVI^TXOIp?vh2FrWDskxzTlUhIzZ{Az zf&Mv6ViwaU%0OnjzCn&WBGZ`9geEYBDUNGY)0)@BW;V6CO>TD6o8JUyIK??ma+cGa z=R{{Z)wxb~wv(I4MCLN{ArE*))1LQyI$svz~ zDg&Png=ir4X$^{2)S?%~Xht=W z5mB1fG?qu{l_ja!Ql9qIr#}U1P=z{Fq88PnFQr9Nm6}vu%+#h&g(}^q8C9xQ)v8y; z>N6vd4-YM+pkD=RSj9S4vX<4XXGLpT)w));sZD>V1 zTGE!*w5LUFYE`>h*0$EQuZ3-FWjkBTE_QE!y=EO6wOiiy*0;X}Zg7JHh{p2f6|_Ze zayLr}O89~|!i8>hr8`~fR@b`M#cp=ByIt;fce}RzP-DG2Uh-O(xVaU_E38po_O|!8 z=?%m++&f?T*4MuG#czJ~tKF^gfw8&WZ-BddUTfAt9J&>7g174nN+{UD4~B4rB|PEr zg4e46rf`ObTU-Qd*ux?cM}t2+ViK3w#3#OPfBCTD3l|v09wu-#4Q$~4tX2pRFUE0> zb-ZH@tC+>Obuo`29OG-uxW*O|v5=L#WF|K`yFTVai)HL&0TbECN2ZW3)=OnBciGEd zhO(54jOCzM`M^UN#01n_3Za~UmplOjnLd{mt_X*TI0bayg3VLXUyc4bF ziW6MT0#EY$-nr_#1?bpx&Wy{@~b-(7VbB*jF$X?fPuRX@gDUDB;!wsSK zf)}!Fjcv|6=H={g<;6e#bYFhVmL5IR#bJ86ognn+Cw)%XkNVb&!w*}SNv*x9{6Rqc z*TJr)|I0n(3qap{z5@)vWV;6A`#tHaCgoee6KKBQdpqY#CtFCoI}3+$Xt`|)H%5TD zZyTrZBfk0bW3!qVv2JBsy9cgw7L(8>EF_7`md{0;1bI9wfR@ zh{2*GLiejd_*1_dT)GiF@fVgWI1hlgz;Pbj*!vsb^!%I`P0IYy!gTqBQfo28#i$x!4uTPOQ8YLDB;~UeLi9+`$rfI+iF! z9pu3*B!Q)KL0;fNA{<4~Yc}`uhHJn@m$*U_pv4zFfu+NQ5qP>`)B|WRy;8JAA>^eS zR5qu}Gnt@-7C5yQP`&(nz5TX98^UdWW|PbLXvqwEtEkictOs4#`j~1P;^LYLPCig0V32zCP2ogi^$1YNt5I} zDRiirm`2;Mh8CbY*F!JQN-Tb&GdsgGfC@;0M9QR`u&r8z72|`0{6t=C$Q6Xi(3{AL zoWUH#$j&p#jRZ+jv`CitN|BU?U4*}rEXysFNg^yumo&YYoJg9CNtTd?YoLi&XaVPP z2A=dupaaUF1gxV}%E2Ve{bI_dd`dw(zmlBFSky|-`^sTV#kJ(fQ`CcU@X8mIOeG2g zau`d;oJ+>M%$5L2Q$R&>*i8N>Y)f(|#jm7EkYvkKsLPu01wdd4XRytf00e1JNN1Qa zzzi(GEX?5~PIb$NML^C)I7nGzOes7%kW50EOhOlw!LIa0j)cKsBsxa>%#hU1tn5W5 z;DT2y2iSx{r7MTFWF_dtL7L>qA)HO2*iCu6vUVd1;VjPl)Xyh7&g5K9cAKS%L?J`7 z&j`WK{Y20N6|TcX&i@2DS`tvavCW?>(EC)-3&qgrVo>E&Oci{k2)&yLeb5Re(GoS$ zd)iP3l`-I)D-p%K6NS+jmC;$+DoK!p2JKK5l`9ur%o+939|h7Us!uk}Jk`@Z< z)JKKXNR`w{<JyuLD*N_$2ktNxZ4cT*z*6IQV0`QB9<*tTx*>zl$ zT1-d*wCyghoiD?sF2t=`b#U5zINH%@+%$qRfu&tpcHP(7O&Qr;+l6@DlF-<|@YqrS*}Ns* z;x%4!McH&+2nev+uq9Z>r2-g`*tCV$qor907zMTngM4*fcD+~WeOR)6-h9Ab?e&Kk zxQw$U-*>%Q_C*M`2w%a_TJNpb7;pswAOr>&Uz`2j>2=-)=w9drU$FgP z6_(flUfBY^-~8R*$c5nTeP8!2-@iED86M&FWnTzZ-xEHM6ei#7hGzKAC)l6V! z98OxFtz=22-qHAh%N2)TUS5}lfHb~kf52qRl~;N#;GxakO%4)Xrep#*N)T;(X2J$z^G&-CcR^+W@%WIELP%_J^MKTcSP)t#u38 z#cB~zX?U(_r|s#dX4|s9XRy|3nI_tqCgGIM1-KULB<@_dK9948X5P(Qd6s9t&gX{S zX@bz|o(AZM9%ik6>aSL2iiY0^F6eZgT(sC-ZI<0!;AaB%+s>A3{(H?_rDa;u&fT-F z+>cf&kuK@hc5QJzX+XYU)K2S`-rQj}>`i8At0st?&SICfS>EOmz7FaT_*=-vhoVm9 z$_`kq1?ql{1a+WipQYsr?q}xy?ZZaw+C~rG_H7Cd6~|_7-bQYreO--p?!Kn$-QHcc z?pxy?>d21k!lv(5>?thx4{ z@U1@WyN+z$W^1qY?bS`&gMeAB<#4r*gwkH;n8sp*UT+mp?WAIDkrjsls0IVT22aX| z_A!TW%?F3AaXp^#w)g;iDCyYlZK@UMqg~}*mhh6u=^;-dZt@LtD3|aePh{wBaD@2sz}VM@C1|de^7u|}igsrl zcH1pCVR0_xB}e8azizHpTE;D73a|6|KHZMKZ$lT_amI5qM`u0fX+Ce{imm81XY&T{ zX!=HQord#%26P^wS_s%)f&O&B#)pR8Ui_YO313)9zjV{Zb6D2wc-~%`mF70LWL58K zN^jT{r-c>gRy8OEZUuuF7l$$62S)0F9PfpH*j6ye@n0C+r+|fJ|5kB;1ZXeUd?*1Q z7Y8c9cD(%sh43UGCvdS=UzaXhBY)fhAMUbccLe@+-cbkIusz#|ZP_heT79?fx)@>s zh-k3(cQ|Hle=k@rPxJOg;6`z8d`DY|pZ7E7;xcz;gg4l+X6t(YhbtdgSHM?{Z|j5? z@QD{++8ytJANa^Fcmq#kb%$xYhU<^tT!t0wt&_wKDFbJGy;PN(md&*HJ>_kYN1 ztA+WDPhtZG`SWG;gW&jwXA7Km=IR#Xc87TJg;z+w>Hw&QMgDnl0Cr*5Ry7ELVvqKF zfQlp-cW?J`Zw0|N0(NvV6_Uv5( zw)lWih=lddO8L-F_wOesnAHR;O0DT`J0NtZ%*iCdhnl&4A7~0KI<-(qG!q zH}|-2eZF6h)t7d>m!Z^8-O&e#NdJBbpqH-#p?~72@XJ>MAAny1f2Dv(kspAC{KOG3 zmyw}3NdF=RJ9sM}$$Sn0ump7N<;yzaW{LwqOO48$I(Oy+M#Ue`phAbL^a+$G(xgh4 zGHvSgsZ*m+r&6uTQ>xXhTDKAv{x=~2SaV#*k}Yc%YJ_~eXt9-d0cK2=a_0h2W1|V) zQgm5@!6sK+rjc~PBm@H%>`5>lLkgCwn6KC#GB9Qo2_OnY01ol}DhZ$mJ*s?S%PNFnjXQ!gz7zH*%>7mlmJ}9l}Xbk&a=XY6EAN3IP&Dmmosnfylh%t(s{Xs zd#%o1xym@$=x#%A_6+wl8^}y|^W(XX^NBDI`Mu@|30-4mx%u|z(D_Dho{L|#T&-D_ zAAa`LhMGz(S?AkKz&-aMgb_+OA%zuMcp-*EMK@h_y=C_yh+vGDPZE@A#>hzQah8IK zsd<#zX#mv0k3|0*^rB||54lFzNHyXInrICjXq#sjeYBAZ5NRY%l5+Kjnq~_2MpI2U zWq2i)S!%f@mtA^E)rQi!B@LNmVh19c>Wx^Ue*%EDnqhBdM8IjW1)yJP9|R#*X#se2 z(4C)|hS87u@i!!taekm=6$b>csBLcg`D8v5Kq?n+FfmwVa9<|pRai}7BEUU7VIsy+ zJjD)dUIxDRb#t^GctF|hZsHB>Ts!+PR8Z4{BE+;In#f3@T1!bCoCaI$uu!0`OYy@He`PK( z1RUn>P8lB+aK#6Mh4Eovq0FwEE$90$$PCvUa?T~6tTV?OR~)duK&hOQVaXD$F)&FY zJ#W2Ewfk$TDMQU`&Ie!JoV@gk1xCeFleO%a&Ys!rT;dE+jRAh4{WjcabE|EFyIo^; zxK=(D!@pdX3l-l;{jJo!LJ_8px=1Ia61uDUGq_4#^?mT-jyJw9b;o$PNV;GI_^a|ebwgq+$&Yn_>}y*KgSD? zD(IpoH2yp0q35G}>aUs(EV}u$P>VnS&zw)`iX;9#RE5V&$oLRTuRG=GGk196F@zvi z7c3;pRa(mE&#bf3oEHhSO7}p6BvYwaS<#E6(~3< z@QuPv27{mkGgv_o0<42YyVYR^#y+pyFLyE9R}5T1075Vzf+#f2!vgj(Noi~;*+Ul# zGiN@=EsljitXJk57eUVvg?8X`7a0CkydkE`TuL<8;AYo5okY=hAyY}P%Jjbhva*$~gj)ht znYT_U(pZ?Ni0~>>GFja+WQHLb0eFc^2imA~z09TYf{9GxIgOZggk15KcgWoJ4OyEM z8OpL4yn8`VWCkdbM&iX>{FaL&5^xvmh)kOb07oAsj!w2C2-)A%|DzN0~Ky@ zD1&<^4SA(a92(AG`+S(s7N<{oMzfN#f+w$F^)G(r&FS@%XoWFo#S}BW zh~hIR<7~< z)yzfluIahKp^J_~NhvzlnkyJ?ah>YK-AQu?!(2e%p%;Z&1sSKYuucywu1L~3kv7Vl z{FAVTT`9?aqSAcv3WbmTqSi#`STfpEl#}9HVZkTQhb9EIhIOrK<>*zFD%N>%)ap(= zo20*CqI-6uadt&YO_L&((_PFTe2c3&&I($h81trIYwmKfhh3-fXjDr@ zWwXpC)$x+|l~nbgRhfcUv1+xf-*ayrH|jn2W)HVI5n?2$q1mC7_PPF$70X;(S67!x z%A0P@s}L)a+#}wD!8++>(y;kpToNl)zqP49lIu?aPl~v*8!jJ_LdAw+m|+x-SBK3C ztm8$vTrF;$<1omt5Km8I8osbJr5oR!1U8VvZC!C~#LWW3w30?uu4aelw0rp%ADgVN z@QD09Kt?f|!%H&kmJBSGJ&Z8lZL0suE9No7@@}$RAT5{T%wzTvdia8=n|G|zHfxr4 z%Cp`dTi60N$TYWag|1%j+qzzQ<;cjz9l9W3RAN?-h{fDjq8I%S)igdpRjtT9~12@b+(&1EfVgKm;hZMQ|@q zg4?<0wjXOr^}L%Bms9K+r;25ip1&-L$%4k%c_TF6ErTHGW|p;k$CR3YjV#yLuC>r1>hM!XCIYk%6V3h5Xsl9;dK%QQX)0_GZsc9>J31+Q1pbxPfUq zl&sy*Tv^K*PfN~I%@H)L{VEmYXcuz(2GZXTQ@A6+((qzGSjs*IO5p)) zJv1grdN*@b(M%S(-{cKnw;7-2 zxn1%t-(YyeZ4g9czy^yP2}gtmlUPJW}EMYOKb(QDJ_h$7{Ssf9wdK#LQ~gjRG|Y1Nk5uwxJuoAsjvh5DH-gz7pF}pt&hu z68eW{dfjs>VVK!rxV@bo0>J07MCe6C6HK3BgocqUiDhU+MBozX*@i&C2nu3^Mi>cSoJ6G< zL~W2^KJ>sz>_z>lVVYG4Ar&C)sagKabs{uIBO88V9gjVvRgzd$R)yCS(Mg5_8MjxBtcfvMa@q> z)X)C`&gA5tK8_@=fuvF#q(CYpP1dAYFeEwTTq0CaMr84zWV^ZBiLFTIjoM0v3UA`u4 zGNeQD=sC`v%4rc%gT4a(Ba>6EfhG$TG8Ex98d7j=z=B8Gxm+(Zw9)*l`e%MzrzDasVxK=!agZD*-}?;$TPi z&1eoBOd(y#5oV2vTqq$NTIE)<1l`twoo4;kXl7Mx4XNpDoXcR5!pO{+x{BjO%nor3 zW6k7~4r)zC069!4m0GEo`6N&_AEG=WnpDc5uo4))jh3coGF}P(Wr*R~&RJ|Kp@yoc zDn$g81EN-GHNKJ>fCmy{AORS}$4X>q^Z<^`Di|cjY48ZG zDnv&dNu};cF`8Z%;z)jAO2Z1K#O^H5_AFW)YQ%7iMSlEZc7zE(LhoHb;Ml{N!K*T!! zLn_`Y2D%9u*Z@CdFZD63?TRQO|$jE%Ejw$8KRn7EszeZ2;9S z(cW&RB1MxPOy7{uT1r-CIb{iX5Y$alQ;rY=bC3d`rIUr_Tw>k(Uhwb6@9_3-@&1+u zxj}12;xAP3Z_%2s>U3s_@(eDuS!q%j!KD84X<4dFC|dv=1#zu6pz(bg(l%$F+mC_;PG%5=W)+|F$agS7}p9J_iqvdu#eu> z4FB2-*BO7B&I;?2A}3Gqr17ih8IPJ2UFtC=lPe#~tsgtd7`KEplrgu)+rOl!DAAkI z88E&PlymYM&jroZ=_r`4i|%H!Ef?!1V{RvVG9ZJpC_C&^G~v_oeI zIiF|dP2hRx!~*C`Lx{sqrh)}SOaZ)1Lli;GaP%(>Kq}OOLF0ouFN#Qm1v{woH$IFd zyii6{09d5LLJ#so?=(**M?{gGZ+VGz>t@pmjEnazgeC`%cUfmza_5%Bvh; zTOZzb3KnMfioikcrG55gqcCzHOIGaWc9$Lg6d3Yk6PE1nlxEZb4JWq;Sj=@ zmcej0&{T|gQ?|Y}mniiRmvzj@6jIB0%qlG`i+sDceJ>1}@{FCPTqtGD z*9{GNAB_bm4SJ8!7hU&cQ+9P1l-Ja^Vnz7-Yz@m@Rb~G3#9P-UG@o-$Tr^$NHeu@{ z1vGU5oOD#9bTwNwO0%;{@V0KJbBXfS4w2v2`mm;_qRs>e;25zEFdNU{(7 zz~osZx`N+1bg=dYbMh{Cnm~&KL4VFiW3*Ps3}Ul5aKCs$LyS#dZ$8ZQVdS<`eyG5)tGT1-TQ2l^9J?p}(Y(-wK|Jd6Gx>9f4LDg?p}W+O(@tVW3fisk<8`Po4GE zzR;1ilY1T^sE*$I-_iOqA{??eg+~gPzW8IG5h zWji@K6OWT$-MmHJJW|+`N97Yp^?FRg7;D87Q(m~$hz=@Wt&J?y7pXaWL6pTz)X|&e z)tCD#2N!!q*2XwJ)E`V1e|_(m@(C|y(#QGC1OAWGtCun*7n8O8Ch64L>x9Y6icWzh zs1<4PjMKvpam0uE#NRkkSo~vSyb`<16vy#bLGj+9ARmDcK` z{%YOuKL9`Q%hqz8m_BtB%J4pK`4;&c)YAc5kY%@1XqYjVd9eHECh1r$b)1k*ehyJ5 zso5O(Z_?jmY2aJ)R#3c982&pu_u0$W8b9&=H9q7!@q8+OOPWr86?1=SKR}qvCvL*M zdiSdU?KmdyY79!Lb{v#K{h7T2L#FPRbm@xh{ejHd(Wk`f0O9l|= z@*qr&H)EVc2qELmi2h8Xyg78`LNGFmCM9+UhGNqYF5Ea zokEn@Sh7EkjboTo`7*J^#Z0kM6u9|iBz19>8g-a5SA=pLU~`~#!CCFvbpYhny_~PU zmm16u!^p()iXij~d`KzuAh2*StQb1UI+8N2Q*Z$huQ z6Usi4@KaE~5Ra5mBAXI~51-7)JJKo?+lo>nsA`Es#KNqs$qd(GlZ`gza68V-Gto>_ z%{2i?j?CtqgHFng*gGl!zQ!WJB0TBBh$%hq%<4uv@g!@{tn>=Nzt8mI^Qa%++c6i+ z0&5f>f-dqi28*hROv=sdR1~BMEaK15Kto+E)lo|o(bAP##j7(vA-L!yO#S@xP{siD z45Eq(?G>X_`5X$@?EwB=?bw&P66{sB6srkXM5p~V(|d@ODp6mv&BwfDX$q=Viva9V zux@enb<+SkHS*kKx0Fsvl*V<%DJSJils|b+LkV!6i=^kZrSCRVV=s|j@^yf=9_WO z2VvM0CR5^{fezYCikE8+W0*mvIpm~O?lR|vHW_~KMNn7PM+79 zOvo8f5(9@s=_gm2$69DOy(!&rA>x1`ThfQ4AIgwHD&V12Je5Nim8CMgGDr=X7&WUz zaWYgi{t_5Wgu=08t%C5=VhNe|K$5vIgJsOy1{vl-HI@y8<%=109zw+VnB#x?(~ev+ z)gA1mCV!gB6rPqR7grE~5Df5BqLdfJ6ai&5o9f|ORN_bvnb1K~$=UX^|-*o6wDy4>ZU`lmVV_HKLJb1Y(Hw-Kj9dUDmyWoHIt&O5Hak*I zx~=dtUpyg!FzG3B7LtzXq-Q9_=`DKB)13I!kv`4IPZDKhnO8zhGb8g%S$^?+)ZC)} zRIa&}Y;F@uk@+T!Y8Fh5-fWo0^yo1~M?9EG@I3#VB?C>=(6wv}PZ9Osq~c=^mO6$Z z#i|QOO609`N;DTarBA5P^UVAJH6;Lwr%-U3&U*TEojPJ_Qg!;yr}k8-bRiH)_p>GX zkWh>`N$E6K+L@MG5S^5oX-bNiNU$dXp+2F-k)mXCS*41NAii?41n z(JuR<(Tli*qDt=dJ>fi|bsziCMM4*vE#hvjyenOukZ~vcv1`1rq@|LkWT9W>E3%GD zx3b36X%B+!eOnd*d4$PuwY}|shZ9$vp-{Nia%E3Ym@bSc_=$-z@3a`K+=4X{L<(%M z{!Znq0Z#E+7CzvtuqCYRa14PqU0{hFBU}_0Y>y^IE_*@CzXB(iRElBngk1&U8hb{< z0Aov2@f+lj>6gE>O(TGjJiCyRFPTDivg)MxWGM@o$g_Q2lCjJi0Z*CBUH0;qBUfdf z8JU<_PV$z)oMttznawW~bJ%`o<}9PR&2_f(o$>s&{aQKBaz68tL;jd&K@XbHQhsxP zkL>3^=a$KGE%c)y9ckztn#_vEGM!TvWl3+E)1A&4rLSyh0Am_ukeJ)LS*^A6N~ z7PW0jtsgC3G;^pn^{R25>)!2o%%OfYtO4ytDe=~-eKbf@U|>1JRyxPOq4Wi%3RBnk8pY&2RKi04Xrd=Fb3y$NtnWnaB={jIG+7ZP~yp z=b%m6P=eZ!?b>K*KDMpf{^*uYte3Fu*}|;?ZII0_5CdZ;{T{ENaOB;#F5U>h-kRm= zYN{{rEeQ23-uMj(AL8H03Wu5y@P;DjZtx19EC+QEba+st01&l?OYdZEFzilH5bWkK zj^^%R;}%1;&gyT50t`S73+WKQC=C|y5D&R;3)#pS@(>m_Fk?JRBfKN#NN_N=#^xl1 z;!cL=+OV(0?JF$A3hS^E)#?uaa1Z%VXp;UT6LSyh)ayH@jtQ|&D2$L0wQdxHq`rD& z?zqJ3d}1re&Jt=vJMy0 z8XMAV9#R_Wy*4JBprErla3Ns=!4 zQqt@aFC9iNqp~jvlhFPWFxNyd#j-FN^U)3yF=;X`v$8QM6VDzKGS5UY<+3t4)6Omv zGmk?vC$lq26U;snG>bzto2)ch)5}g1H3LjCSF<%~GYe&F%mNZNhekFXtu}r0zT8qb zgF`iY^EZuiqk>a7Cx$nVvpHcaIhC_F03jepM;@&6I9aoV^FHx2KlQUczq3Di;T!59Km~L_3A8{B z^gt0bK^1gC8MHwi^g$ssLM2o|p))#nV>+=CIv_M3c)>Z_bat3iV^%apzidW3azshgM5m$&rou+W&jz9cNb|u4Bq0EObRu!oLUnW~ zIDij&H2%~8MWZwy)Ib@G)FqQNI+s)p`uM;~$21@K;2W-#MT;yqUlc|& zRIWlG1o$9ChXO_GK|Ap@PxW+9`Ls{{^iKgbPz7~R`P59wluXf-P!)Ai8MRRz^-=$n z9ONNP5i(1ab4wBaA`42v8=llU$>CE$HB?1)R7tf|P4!e!HC0u0Rav!FT~$@}1Plm6?lOe zxPcw`fgw18C3u1FmwWq5{ZxQ1=`hH*HDby$VL`H{$V5zxq%-bkYgZ}1zC=3Igk}t zl?fOa#^8=!IfQk2l7)GgO}LDsm;*R@lYcj5VIi44nU{T8B3d~y*g=2mSdV#`2P~qR z{~=TYfSdall=U}`tC^3j*^Z&Pl_esV2tXAKX^#0go45HNTIrBaxqr?10b0QX+1Z^j z!ju(*p8x2T`!@z~*_7Eqp1)at<9Q6Ud7&AE09qjh4!NJ-d7Nz-fPaF2(|My4rJCz` zn!DJdhozVQc#iei1V#Fv6`Gs#d7rt>G6ou;|CynC$)@L7e;ox?zz*dYcI+N7^yADp_I z-?)_PH~>QVswvu(Y59~V>Z`$7o$ol9_xAz7*`UkXmD72w%Q`4T8KUDFtT7su3!0Yq zx1*(bsrT2B*?J!aJFM?m4(<7^*RZYmng9Zsuf;m5-P)SxSe2W)v+dciySb))I<t}z*U>Ihx({t`>16*ymflO8#|-J zyO0Umw+s8d@te5SJDM$nx{;e5dV97xyt##&e=!`Tr@Oin+Os$MyzTq0CHtg9JiJGu z7Lv!lRs6rH`i+Zw#2*}&-TS`pA--eWxlLTi^IMKXT)O+)uoHR7f84;Oe6@i(PFtI( z@7Ji6xxu44j(MD+rJ2Na8xuN#fT#KaR0OjrI*xC9ti8O$Rh*T3oUW~TuIu};nVh>l zyu7iR$G4k*ce<6;e7Pt4B;6)C;8^=Ff$4^_2+5ViPyF3BDoX!#Ykq4c~)7i)| z{g64k(3i-t>$}dIJh#h2qr?0t=6cFmJ&O_CwU-%awY-yMTc88L6?!?216tP=W5R9a zj{P@O5Svh5nb+TVU2q-F8$D4%*})ryzX5$u=sU$5y^fO|rwuu<8JXB4TH0}1two%! zAApvfn#g&*iv^mI=iAnk{oEP(*-tyb8NIwWy~Lwk-q(GlE!%&e{oMbV+5b48ZJNMa zz2KAh)v>&TW1Dy?7_cwh;3c@;A-;em9*z@W)h9mVaTwthJj)lp(Hj1Z4_)IKxZ+9v ze@)(mHwEKQzU5h%ZN|_sosE@Ugl}N=&OF~xxVX-{_2N*=0X07Z`|u^_?pc=?bZH( z!Cv8se(Vnzk{9^8EgqHAy3!-q#aG(25!jC-9f0+I?FHZL+x~Swo`_F)sz=#`(VFii z*u`1-mtk3!)7yUofABHC>I+|!-=2tRoSM(Mrd#^KFM{Q#TG7p!rVZV=2g#q|`KCud zq(}Xw`MLEkI<4n8r2QAe!}_6J8ulGJr^#ZXE86yJx|9Pw^Oc|KH$RP^zQLJ$)Wux0 z&3d<`y7Kq8s_`1nvwF^dBC`8Bs{i`_to=K!*Lu)D8@{`m0OXo~Tin0>_s?;h`aivh z$eQ{ce&t1Z{o9|!AKdW);-A2Q1PdBGh%lkTg$x@yd9~e~#w+?*3E=E&<5AI#fI&kXIq+-v;V24RSfVndEsjd3&Y1FTK z1&ZbSuPni~Sl?=$8z78Py$Zn&Y+E!h)VPT2-c9P4so!C4*$HI4F|_E>q)VGVjXJez ziyc9R9I5l9&DpeT+rEt(0M7o{K7R%s8X2!ZFq%I@l^PuL1G;DpdX;?dFIlr#310R` zc;DOSX_GHL4*2odz)=N@?|gRc_r3?E2WF>MFL&frF=I+mOF-1@hM}+i4`6@-4oF~u z1GWZ|NILD5TZ0Zh2q8?nmBf=zKnZo$Q;HEJ9B9{J(g{P)J)qcqS(*6Mctc^OA$FV< z1|I?JT}PH@;R$5oQ7L3)-e#TUNTN~i6-3-#Ihv>z7>WTSqjlarHHV#TIkqQG)TBv~b4?H@wrs7mrMG$tIud z<-uio%(Av1x9JIJ(LTL}w^`8!H{g9PQ zA%Rr4NR`ftqQYwV`r{g7i zTG{~rjXJr33r@JYFd+h{y+>q|vID?5J5yz|VbsV(K z&%A~HA@7jKARZz>Q;wCM`4EIL#H*az76q$=a0e_$nqTLfR3Gewff@t|OZtp*7FKBm zZZ0$%S8B+kKb7TeJoF)lFcZ2V`N)JivP)!wNX27i#zsu+VShr$Lc8HeIZE8i+^Ql( zEt)PeD>_k9govao>Tg^{nxGvw(vb^dkOLZQT?hXtlMlM-H#AzxtUTnM6pFDRe@Rvp z9WukPjE*|yyAGAs1}PeqjXjMk4<|2Wn6MEsf~14YdN64j5t45#R5DHk8@W5gYzTX< z9Ed2bBEmI}%`t|F&tzaIC_~3ATo!6DHTGHLXH0F z_$MKl)E<%kq?b;nr#m^Mk_t6h#7_bSdsIpfUZU8zA42DxBD_z2_5;c)xzKlF$YxgD zshn|ns5)rOc5ysdcypVQWR*nz*=MMdd+eifY!r>XrdhWBK4^6N?qdCx2eg&Nijp#^AT6F~$$(g~-=%@|a&6Do5 zr=O*0OlNw{j&3ugKaJ{CYbn%q9(BDoeQH(9de*98wX0hO>mk#6*StQBt#9qIT;I3X z#4a`-E6ssRw;I^l683^IES#WW#@N(eHL{h>?2bA6!t26oY92Wd;pj&n=)| zXFFlr7BRWv_8)ME6y6PqHoEU!>ub|_-5)D;p2a)B-tCY6e&B;%`=aNWfZGnZncdLA zo%7cQy6=Gp?_c+fGH~lr>fmcDk-4+yz_UFZ-y}b_9xc6Ze!tq^ga&vP|5}wU`cN(D z!5$pv7jEUmRE~t*Oab`{M69GSc|lL2$nrAOGBPoY@mCBgdi_R9Z2IYVYYo3H4O9KPTpk?Bv{&(srurog!AhI=0#! z!W;sWrkGOUL!07DN~(wKT5+gzzzG$4=FspqCnyvvr^37YMcmrhv<*2(tEcN+^uKy()#PP-tGQX3`|h7)cThyX7)%F{#a`-`s5c^ z-+(TCv$Ot8YHF&nnDwoJ=ioB&%W#P1b zs)S$p^e6Dilbv$s2kZ2x32^=YpIxMhg7+qGlf>@Y^YVw3v7==3shW=})R$>^0Wq3GeIEJ%BMQmt?VTf!%NQQ7| zFLH>3y5=5tD2T-5hI`0|f#ipr=7odEh)q+7hqx_?7=@14h?TfBj|ho0D2ZK2iI(Vz zHiL89{*V3$kiIC8fkcqPs1XW>dIj|e5A;;r*l-E>jb}5G zz*RfhgI2>4aqZ)g61P1Ums!xGap<=wA?I-kXe9%Oa4b2I6I7A?c#&6_k;u4_+=dZ1 zw|0w1MVs?AJ*kE|C0u6|Pz6CtfaN)`qI7ogass%(vfyv_aR=#dy{fD zRw8$Qf|ewNd9qX}Dsq@^`IhqFk8v50bXk{4>24R1czj8g5($_KF__ylc!x(2#G!^Q zbPtlJ9+WpDmY151_e~-G#d%S+7q59GDk7Vli8^pulw&BG5<;3SmX}6>LLNnQut%7L z8Ieu_QQpn3(4 z@yRsES)a;zpDkgRu85bWX^k9;qN3rUp&6noF`~Fwq834cDN3UfF_botoNw5oE}EaA zF{3pKq&ZVyIckUk`J&3mkwL1YT=I+|dZaG6q*2OYy=b31Dpx%!rCE9)R0^V2iV{ys zjTWJUT1uwNcYppYYNcSxju`QsWtyc;dY@_17 zGzzNeD2;)js(}Edd`haN`l(#1qh6Y-tJ6 zdZoq+ti#Hz2T`obimYEs3CbF#&1$XBYOB$z8`Em5)oQKGimk^Qt-i{t-nu3B)}{>x zj}@`5?vk$D; zYtEc8gstB1d*1Ja*5>AvrPh?CF=M@yoV|o8d*;sGW5w^SwZ+!X#Q*>Rj8a0t-bHgYmCm`?}Xlr*5>!6l;*ukoV8kOwR?nP5K@HB*1da_W4+GarG%|1V=-Ek ztwM~1oZeCpQiPOJ@1?Dr-qun8Lgthitx99&)`U`&Yf_BPggSfX8Rq60wHcIaQr-}R zlo{q35EH=gnNu3rHon#-i+oD2wH1|#W68b=H5yf&TCT6YlO~HQj8FU&KVhu5QGpJ z2r*Jx2pKxP<_L_%2xC$R5R@@mQUGIn=H3|)#hm878MRU=DU`(!2s-AqQV^8pIx!IM zluGya*0nL#jID$^=Dn>kQjA))5M$o8TIORq-i%r?j4|G05Z-$+Ym8dvYv%VlV;LFm zoDgFf5IPy=goGLIYf|rPgzr*Ptq_Fo85yk*V_Gqs=I=Va#hiqkwWWk(S_tp=tvcrB zwT!*35QOIUYv%VMwGc|y_wR(Y#kCowI%DQS05OE-#pYU+gnN4sV}y(lYm8c)Yn;W- zgmblHoMQ+=ty-MDI&=T`|M&mz_xJAr000R8009UbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*kNo9=nyerU~k{PdjAp$EI9Dq!G4LbBb*rUVaI$A8;0C>apS^|5l4nBIkDx< zm_rNxYv4%=g>lw(O3~?CnAP7>ymsAsb{N*QbK9;RyEbguzIEf?t(*7o-^6VnFRr^c z?G&+-*Iq8&HTBp=vJ)Ah;jYCQ@7_WG2?1q1pLZenqz}Qqz55VM;D>kw{}B`WkA^(j z&%eN<0svM}Km`IqL!f~O8fZlYRzL%T6%a-kAqo&uNTCThpE1rlViU^DdB8Vt_xSXrqNLdZ(gvutO+c287`QLi|MH z&pIi{#@cPBrV5>^sJ2>a7}2Hw`kJe%#`@~5vc}qKC$yrvs;|Ais_Uz~;_9odvKotQ z7?Wf-$p|ToutHZC%`hGm9fXi=n(V1(=6vksH(!4Ag}EPq0TPJiBhavmWdT=S*YD)mmfinPOM(l{M9oMcuX7Ut3Kl+GYFIw%Jps z?Y3f1Sj|@$Jop1Z9FYM3&^O-ztV3!T(3)0iw7161X*T* zm1XaGFt7j&XhtOju}gXt_~5zz1E&4d$AskqmkNz{v~017JnzuJ?;bJ(I`zedIP_Bv zuSOb8@g;{obQBN&^)iFb?2s=(1fmTCvqT~k(J@EV;SZ-6L?-fuh(?^^)w1TN#NaIs zd*cTH_#sAq_#-ukdqU;b*tyCP&NQlf+z6ocIW?}1jgwp58)ZYs$k9=Cb~Fth>&Qnq z_Ay$2EF2pJ*+xC)E?Pt|0yqrNhS|x07Dku^5qRf2;Ee}8E-c=9+EXU^fGdS4+}Q~C z^RE9u13=SD5S6}X0S3`4f=*h}1DAxdA|b#?>;qB!{w2)#ee6U&GN8a}R6ivklYc#; z*Z`q@}|uXh#b zKkFjleunV>CFYfjOe;jw5V}QB_GF6>Nkiy6{$L4+Xh4gBiKu57Lx-^GB?mS%zyvHK zD8~q@QG3BCr|7i9jBZpf9YxGX!)5@HPO+q%I_XMP+R?RfiU=+h6iW3nfyazAZwe9I zHxhZc&&d&5u|X=~NC!JP=CP4SU6oSjn7Km|6{>!eDs+}wRoFFEby%h29F2fU+)aS2 zGT6>pF=>QNgri#MiE9Xm7fKc$k3P&hA-VXuGyjCpKp%W1J!!T9&lNdoJ660 zG0CwWa;ySP^smVlOi0{R5dyZ!qHQLVMgD_PHCr^z6xA=8|9d88M-(K2)vvMuGhbwp zWU|Nq=IeVB^4|5l$Do?Qi-Yxio`AZfPjlfFmB_Q}dO!(fdDpw$j((TDjUtT=ed=B7G6rw{(3?NRxL^K~ zYL2-Buo~4!Im!uAkOBr>fE6s@1{0X8kBo4F2du~j&ym6f-lK#stl&TbIKUTP@DqqY z3vdvjrss!y2e`{j@1C$JRxXq%~C`!hR{Taw^GzB%5IO7MsB-IY^#Xiq~&(_Pikfc!UKQQ_$j5t{u^U+R#LZ5&vzPs0L<0EP#gV_Jzp8z$xKbrMNGsa4OWgvl{&LR?ikA+L@^dPl_ee_~|g0?O< z(=L9sN@LP|jJ85ahi}A_G{?6Io8VA`*B5Iib{^<=Gj(Dbbr^jYcRdw?-IaKQr*RHMHVPZ~9rk7(I3{Un5+8j3AT-BibYT*7!WBIR zf+bjDFCD}n_L5}uVgZfy04w8g`!ZYNM`xI2W$Uvr=@)V&Cvp|TKlLLcegHA_Co%NL zBN*c%>6ZYWWlZ3-K35hb?gqgz9L6g!fSp&;~x3j^!wJ>sW;529I4Qk1?o&IjDm; zxQ>$m0h%-ceE}_>az+5KUw=a?XDEA}M|oc8g_l=`prd(ab%hvtkq+sQ5t(`!36U0= zks@hU7Fm(12Vf)#I?dt>wBQSsPz9OPhnMtXe`o}KF$sPDHwl_F2Ztzc=)s8WVIJ>+ zS9j%n%yX3b#3eyjeS%dpRuX8mL@ycSWTN4f@UuSygo`-xFk{I- zHR1=*1O#Y_mbsXVGjfajb0W^vS*plp=|fCGQi}XyA$rC#+yesy5HnKJThxPzL*{c` z0wyK2Z^wm=NtY&!*d|Bw4x3;M95?|3Nd#?xlLMKVga?m3rAauMkA&A#@TikSAeyB) zgsHijng=;P&HKg$;R;4Jncsd4?nZ8Iqreg=VOc+(^^AvAtYlm7_uZ)nM+dQAlZ{avNTwhn3xY3LjFM}j5#zaG=bc*bV~DF z^59S^keZ@Nh+C?fsCk^BsgqsWX{V`~t*Mh^N~WUur7MtotAUUM(Kmi05M;DBOL#_P zw5R>0H+y5JeM6@Mft#fAUvtEzWXh$f37r$sumY+1rD941Zn^?G`K4bv36|=dqv>_G z(GP$#MgrjvJP?H=S*o&!o*PMrT}YDSIi9Ghd0x1x8kv%_7oYPfh?B58fcRo+x}1;t ztCNrdK0pBhN_^s>GzMi?ka$03m9Au7(&oTbo)l7RGNInQ=sHQtp5(BNn5G{8mqC7im8&SNh>h2AiJ?6 zOQ{?ivMRf!C@ZN%FtQ`C8nxLs{t&2ORI`7oH)fQOOBifR$b@lFMth@>`o&+7@M~j4 zMt@_o32B?1unt2tI~(h!_5PweXk%)CmCc zP^=O$1ISlz-ol8mM=oDq{X{q=Atd4mj7jz0KglJG14$yWqGAieI=68f#5;VdG5`*>unWFW1!;9jgFCpqgM08hvI9K8_lv0qOb~s8u@<2L z;=v|MM?A_EE<46=VKQ{z+r3;OSpV=sy4qVWN#;E*Q?R@wSrL~cuRBb~gd%onW^+ke zfIPg=6uhQY$S)FFhMdT%m_YjqB1+&PB10q?Vm_oW$pnjA7IZyud_9J#usDO5K~`Lg zc}ghsXe*R&1+_HlTbWuasT*6s{(HY|@XC@J%Q8&GR9wrs%o>e5Y&z?we)_;SoWT2) zkOtw)V+70*ToA~dkYXgL1L3C`Y|IRNopHdpLlwieyv?}`%eef_|Erl(o1Cjbolgh= zyjdzjyv{s4t8m-HbUU|g5YMu=nMU9XyRZv?>uyi{hr1&Kw+xT7oXeE@1W$Xz*6F8) z2v_yi(B7gR_?Efl+k8d0O8>*SlVd&p?{ac$;Jt@y{Rg-r>xa#eODkOe{cGK$&bBvRth@}#|;47%}FOa{Jn9OFQ6@ z&wwDfPkc$cv%j%S*8c|lv^Pse3JKZ6#sJ{}%@Gj^UW}~TGRCINW7XIn4ogCYiBEz> zq19?|26#)V%T5mjK_Wvk?=#+6_CC(^$EWqjGa{E8m!d9WyJ}flKrr8gtUvpMyev{M zD;Ge-XwpEcBq>94xzuM;QZI(7y$$GdN~xIDE!8PB(aJ?U>X9_vNJ9f{#Z^qeDsRh;D_e&;5>F$z(Aqii@tE>M;7EFv`2ND7?(nuCUl5y;y&bd~&|%p>tVI zKyAqxs=9KlSoU&cPwDgnGGt8Zu#36q&Tdx-Wi%E}?FlghARqZ3FU#Ogrx%>FN1NAq zjYfO%w{KT^JtYHEHv&440&y^#e-5g5+BZyC%ts3V6`#PC5Bmh+19-y&5Wp!*>-IH?I!>Tr6+uJ4yf%Lg2th z149%%c(5Rof{z|Cboi)%!wQcoRD@QbLPlsCH+t{@EhID;Ry>%rQWAxgl~!007U|#4u~F2U=%5kqfDI=1>z@xA0SbqPK`=cD^@>R9cZ<> z6)e@M39d4QYE~^$wmpw30eTdH5}ZDB%Dib)Cd-u%UcR(o<-tjpRzx1|2rY2|X#bBm zTBJBJBE*A~`4qgI(BNh$Av$z^CvOt~(xpwG2JlCPG!=rru@=;(^*2GQXS0SaTZM{m z>qti;-H)`t-=yOJkCP&d3?twS5ScImf(%MVAV8Rq!pHH`zyZYJH@r9i@5H|w4}Ttj zZ~*4n#~BYGeR}Wp!>kKK#7OfxzUtK4r9W`M+3$(_cqnf;_~0{*JN3NlXPtFA>ExSl zT5CfZcyQB=wcU2}@Iw(l^e{x+q>%x|a%7-|MQLa`29RB-*`-EsWT;Jr40R(B#MRpP zhQf8&^G-eX%rg%>`Q8(cJOCIN4K*pJ1VDp#I>Yjv5IWmTGbS`sh@l}Slm7@ZjT~xh zBgZykEHRNxf+jEz{F;+66#QDLC7i7A2?d;X0?H>PZgNW~qWnw>uC~%*Ypbe`qADr} z&>BlpuEH`ZtgF(JYSXolQYxtg6rIb^pAc|hr=W)N6E6h#e5t0F{2DAU6i$M{0+1?z zGbE1~(tEo^K8p4H!+4vDQA%8wb!J{mfLN+eN7N>v+cyU zDbq8KhY^S%kU0Y`XrPt`Fff1zbFDRPKGM)lk3sL~!`I1tODi&9)cE;k1$dg<1)N;~ ztg+!Tz=5aY`|dN?v?Ak(LqZBI)G%9dMef$N)wtblM`+Cl)Sr3^Dk!#wnzX4#nUbm~skRba(!hcE%J8KI zM~f)JMNO-5$d8&^Z$tB%yDpn%@-wDa*=Fehze+mk?7%EIY;46EORNIMAcM^Hh#s+; zGK8iEv&*LWfc6~<65{#^-}&apKaU^ah~ut#e#D2rxb@|yzkGq=2mfwhB~(^n z)TI`O$F+FnD48nD9~~#Ep;#^{bFs@&@`96_&?P2(S_$3O=8`;x5hZiVl}8ja5{&>0 zSdHOYvCd>Qg)Hld0>O+yo)&_qX{l+Q*+dZyhOKXG$p3@G!(|AEC&L`JM?L&l#}i}# z4qwp17rwxr0S>SZbVVXO@97`(!V`z@k*8?nlTS2%6P`#&vzORpUwz<%O>&B}m*xRy zlImk5;{-=I4)Oth!tewluw!EOD1#C5*}yWCL1s1Lrvo7vL4r~!3^A-_1R*Gh29j__ z3KRr^>}dphumc_|h@p^p<{Jqau14W3;E^8Ta%R~{(a=~6;T!MJ25aKp<=Hn&F1;Z0CK8Hyqo z#g<7)PAy+qN>a$eD6qDrtX@T&S&?!#6DTDpi2pRzA{XhZxZwq=P4!D*>V!5c@M@Dr zRSekDgb}St#-~_Y7Au*>M1#<2V>>N)Br8h#cF{`MWTw4OCV6iSPkAMT5Ql7G?1#eX@ zlyghouo@`2{RF`Ng;gadX$2&75hb|_%>PD2qGG{b(J@)u+SPEk-rUugmCfo*D?t;> z;L#G7KmKtiZupxxJi!RH@C6|1U=Jen3}_|w$Nczrp8gTXfBrxYak_~dE`Mi-{U9kx zeR<^|eut#$1Y(-0X*6y^Z-;A+vU$3^W|AI>%~nQfoS%uqNUVbxB3MUs1+81%;+D6& z-7Rk|5r*F4mIj5mfe6qE(kFW~4(xg7khybd`@v5*Vs_G+H?8I8`Okkp#Il)5^V03k zKuewZOthe;N~$Hcr?Z<#MRX0B#SC?IBjMFi&t@1TH1$sWg-PckdB&a;vQKhps~gw) zMnOVu!e|N0S|B{QKsu_AUBPyPng3$PPbn&^NO`N}1dK+zKvFNVdTL(^W0GP2nv1=D zaYxQ1JJ}r;v9(^T?gZk>&am2Gl_g&BK1eR_aHk(n7|_G=iLv$2r+iaZ5_h<%>idl| zw*Hb2sdLB=@@@Q_&||5|yG+vgk*|MeE?;=Wm(pp9hdW``AEon`=9%|nnq97;z|QmO z;#ikFBemdq+8O0u3e4f&Jo85(gh7~R(`XlO52c;i(&EH#K`$365y4v}$I2SL1UcpG zDkH`B4lAhhWz%2lYvPg&+a(W>s#E*>r>WM3!=?I(TiM7KHhR@@d_4T)Dy0@p1#WPY z@}pT0&la={9>WGE$|B>^VgLW4aaNW5BE2bjl9Q-db#V{YizQPLx34#f57A6R&igDS zZpm3ZPMVK@{H;!8Hw+AGSd-5cu%8XTy8?5qYfC#Gp-D;k&fgafk3V+mS0B93Cq9+* zC3Nje$>6NjfV6lw(;GK2_Nc6kPsg-tVPPa#f}K0*&{lVqO!AR2!M{(=xT?6|MB1f- zqfiN}31hs$k&48rBe3|2v2Z-CP(TMvoWwf|zcIW;iMGs(Bmc`BzT-Q+fE&(fDla;T zwCSspu(!bKwKKt@UBeoP=&6Iq4D>^<^9qg0!WV3@tRO3&P7s8MIR+!Rm*?raE@K~! zv$84+IrPZ7Z;~@J?M|yGbr4;{TYrn`z9n5n5`2ZoNE%M+qy7}xhu3LCQL$( z5-AKqLo`%F8VV_&(K<@=B_7hc1mPhpWH}=7xH9y@I}9h88$$pfqT&l4@oE}rK}7Rw zh}Uz$h!7^6V<`55)%v<$SXWawq$!1&FKk5f~&cSBMZwTsOS{4V4MVWz^up$ z26O;80Jm6VMFyNjJp!DvXdJWD4795(7-1D7-p+yq`I9k}Jc zF?lat8y3QPM%4j{z9PY;atTblD|o{k4t%T1kv2uSK(gYLTQtS0h!n)B6vTmp1w0GL zd&LEmJXt(Iut3E@dWvz|D!#!mQ?aTJ{G3N3qrRxSIaw-QIjZ^+EU*bGE9$qJWJG0& z!LuX3fp~{a0G`}SI1!=-1|pC!$S!NyLjd9~)pAV7R1c7wzLs*#=Hoila!i60nmw#E zHcLayw=|d^f5>48SP4ys+ z?*cC*TB5Q;FDF93MZ_9MWIc&cllfwuHVKKo>Y^?x2@5bC!H}v-YL&d$KLG;@{wtKZ zc_RS?qzdDTKte?bgp{bb%Ci`YzG=L^K}AnVimN!lup*?mfFm{Hzg6)sx!Ob!OvX!; z6V$PQqXMi?A}lIu&MCS{8iPTZR3(ELFY>#RrosO`gNX!o5QK7w8EO!yKL~?D=%_E0 zxtco-9cq$>!@@DErYRhclbS52ErLjHF$gx>7h#5=H_Oi(` z={Jq|6)k#`VCx7ANED|z)+!!47)r=;t4^-cBP;1 zkU5S+Id>h&O%o!c^PfGWRxCT$hJ+t=rJs3qxt97?AQHkTBiDuP!e14_3xbldBhKsO*Ig3YGumq$}q^P5!;3}lWSqv1#qs$ATkQ=z!6IpRtm%tS{84RRSv5&yFG$|}9 z${I4cn)73<^WvRDtf>t(7!Q?!8JPb85nz(jC{5L35G2J+?kY{nRIMl7K7!F()pQWb zL?_kcuIu7Wxt-GPa?H6UT->z7+T6k>**<+zzd;30BE>f6mVXed;}{{3go@rElFM&Fss7}BtFW;uWS@dbqccJUdC$+$pJth zU=_FUzy7P7KB3wE60tm?73|zA667LYsY};+46kiH+qvCZi&bpIu~)0X9%F|vAO1VmWQGO>h^eS}OP*&~hw zM2G|$$bi?O0UHQ5mq<_=h+-l}1Wm925IkN@Acjm3fg70K0-%8|vMLj(fGb7-HICvN zpaD&&0HSzfVn75h)&wgc%dVWG`s6kT1h)u_RQznuv7(f*(%Gfu)C>&9KV2hEe5B7| zDwhSLFp|5!g3i=yJ1Y{~*Sp41M$V0uwb~1TSZYlv`GeFvvn_Kbk&MD$y~tFH!&8IU zeY zXkLQ`&BpuxDs$tXg9x^OV>2vE9c2*P?I=42t`9RXg-50@alDl2p73Sc? zo#4W4VF*s#>zc#424N!QQrT2&^_XDF)oaKV(jDF|@lxG^C}@L#h8xH!hA09{aAI5= z0%BNVhah9G%>>qY1R0BIDU3VooIsB}Qb@ye+Hx2x<5$m&h-Z$%gRlv+%>!@XA)L2zI*Pge}7+ zNDuc{%ViK;&AlAsk_%-lCLjk*0PqmFfqYov|8|TUK;wyUf*=p7DM*ajPVG#<;`#H7 zCiWU$;V=9ff*>Dh4}*py2n;w%fC7N>2PkeE$SPhM!J+5sdEgUS62{QKlKN1^@*ME z_zBk~Y)tWZ_Ao0A&ekr^*4RTdKTWuSdyvV3umK?m0UJ01pVEXQh-innfg>ma$VhE} z7Xphof{w7H1U-UGXmfktPN#wfcrSRGC;;Z(RGCoj2MBXEj#*8p=`d&bHV*+rhCHt5 zS(AUyS7b#vC<^fQgZG?8J0EJV7~k>LPozDt@#H^N;lR!bv8Mt-wfUk0MOiwf^cK5_ z)q|ah`0oLhy|dF;$GQ^J#g_#C(Uvl`zs5pxDoq(>xm71a7d68*gVMmpdL2@^c6R^5 z3NBoh3bimKGOU+T4+i!JiNkgxdpXl4mU~eyL=G&>`+S|u-Q+r^qdBurr{B;fa`H@D zj(axq7s2n$=u0Uxqk1uQ$yjriSK5rHDTo%B0wG7Gnl6YNut_F30vlKad$$20&-cd2 zgd-3FOE`kpe}p5z?c8>WN3aAofQChI-aX9|3wVTkxB(k5-rEn1ya|c|zd^QiOi~aM?mUyI= zFxA2Ei(pgG)``x?0Eh|&9#wc$VBn*KOcD-xwD3^~J`h8Mm>7{F#t`o=Lec+7VH1Fm zB1e)0paDRnI3-sC;1|**0F^8G$%F}$Wk{JKZ{nJE`74(InwCSmpO6T44O2i zQ=n0A5@i_)>PVeQVQNLmG-^w!BCjglNp=)Suq-t|+2}R|6h0Z}Qha0sn2m~$fK?2^ zCU3&MO!5I^5-1@sgO7$asUWE$G-!|R*{EQ_f)yAKBqgp8*@_7(C`5xcVH(<98&)dZ zTl63S3IqsDu(p9>?;{fk55~-z=H-=f{P&$H%l1f8{g=L#jmMNu?XyQl~ zje)`lr9VVsDW;fs>M3PPiCP(wJSeI~k_H>aHDU)Dfk>BOY%l=@8^8qN8!(9}r0S{n zB*cb-kFX(0LJ1ZGj3k~}K%iu^E*Kzyppj<60~Ppot0ef%WqQIVV>xH+TbgnFn2U%N>WVa_VvWZUVcVcV2w;y0Ar#m{8U_{-hn|Yq!KNg;h1R7f z^+=;iU&h1_OY#V8EW;=JJ$$6KRG6?X4XCbS+m$>6Po4II@`=O&}dI>WYKv(d1lgQM?JUI zX@luB&M(b;XIMotVCkhIWeNq!A#}>Ph@U1@R}eu|ge(6>*A~QtB(8?QnGLT>ak*rX zJt$dg7b|GRUXfMc0f7mRw)$$mp}q)a!$Ol7ZIr>V+C9Jw0YnAEKw|+4%Ch&abLcUT z-gD}OD;>M$k{dnr=T_%Dx5?pKulGtMz^r}s0=%q!0EaePf5MJtpn)jlPGG|pNbGup zo)J{KVihX(@rIaCmyCpLE*o*&Mc&bt6Q%4YNcl?QBFK*^#BbcqwJd4vTV^O-Us2QH4OB)FA{NJmqqj;!XAX~q+1&(zX7-)T3x`Rtua(vy#N z=B0Oz<)8NK+cfpWBeWS!nJ@vSKd%(DdHVn8PCW8Tk0=^9nS5l1ZGnqi4w#WzR>THu z5P}gCVuR2+HIVE&>-V5T zFZXbZeBq-{B*$m4`dqSoq1j@99F`f(cmSu7@qiN_G%*Mb#6tc1p8$dQp;?BAE^mno z6h5*-r~Kh(R#K*rCg{Pd5JMBRNG8{YGNhcrsi81y5^Jw?g9TXdYRKG?JTvIQkd*d= z6s)Z?`^L;+9+OLnlBn2RgpwWQ6PW)`b7()AWTi0~l$logtku9&Hi>?zyZt1~lcv-p z+j>R23pHpQ`jJmAP1j6e6K{KqR3>?fH%-XB3d&Nb0l73zQzNSExv6Ig8>@pHq#yw*NCk!vp$Zs?KcX>#VgHJP1R-`cN-zO}U^AcqF$-NF zh6W4>1Oq*WhmT`*ULXev2j=W}JUd=%b=G=g@{sE|e1unW4Ef09h;KKRG+(`BGoRQL z%)=gj-vfSU1tbh7b_`mODQ~J+2tOFZis={-J2bfu6_6qwiAYD>vP-b2tSKaUs5~0c zi4vaBnRk{-S2kOcDa^xyY9aqdp4U;58x)!)S|NuB=UJ8(0y=^+k;&Jj!j+d$`YFvU z%Ac_!mab6R&XV@DovTt3q6qpXrXI=RW{864q|1=mF(j^oY@A&`=hltHHLbIQuU;Fu z*1ZmPt&QESUa!kM&L*}4n0@SYnJ3!qTGz3oovvteyW8IWHn_tr?r?8=+}$p>wbQL_ zZd3bS?S8hgyIt*bPaE6sYPYRx{p@Bdd3*Fi7qgSSE+FUwaY5;2ppIs=p%H@t3g{a~ zBN5JGE}#ucnr$08n2QB;A`TjF#5ceOfFtNx;}v(A1}*3ka(JPb8#J2H8vbyZgiW`# zO}R*jv4~>Uf*7fw#h>|z(eh%-0B=U4Nk*ePCw<;G;V{n$;eP4NrCk)f{B$jM38%BD zi!I`w^<|)p?%Ag$9p>nTNsV$glp3*}QU*_)%3LV-xzoMwcE3B`^R9On=9kX3|LQ~;U+fj05q^68w4QZ=;>koL$ivK)MW2!1q_N@lug& zA=s6K#uXk(=++3u9suToG>8PDjS%XMMV{^1>opwbg+xCH0p_(t*c714RYFL-9s)L6 z3euiT5SQgWpiYEfrWiL}J_VgL-KV4;ta8 z|5;*11&${=9U~^3D6(K9b`<+vp)0;3EXJZNhJ^h^g$B$B%>2k|Ws{F^ATiNiq=b!V zjnD^vNy@oQHL0OBfgs2s;06to%ekDMbr){=;sWwR2ciVdHJs^*1UelPq(x&fVV-tL z%AjE4GkITlB^}b;O-21kI}u6DObJZ@A9f*AO03qQEQzDcSEL|GJJCtY_~Vaw7uHZs z_XP<+1x`XHN;c(5`Q->aV%O0CK;J>(EM}xeZX`#}-4i;6$~2-*V44gf+5(IK2Sp<} z31Fk`VM{vRJm?_+WP%xv1RFGhqTPTkSP-NoUL$6O3|gK%cpl|B@ki-Nlv0vSfVoV84ot%YhguLYFbdDA`F@$S7u^RLR{fI zA^_AP3H?Dw)}>wEC0?@P{ly?gwO|e2g9xTz#lg(u9h2j2P)KBBVs79XS|BiHBR2|~ zpshp*j=%>VW^FYAAch2_eGoT(+E&`x5^9YlJ_TQbVi=ZUUz%klN+nV7rBu=&(m-Wd z{2=)WVOZeJPudw-h$d@(WCTSaUJfU57N-;f=TB$=b159603TGOpq|0uOO(Jos1tP> zS|q%lN`#X#a-K^JQw6?Z8+IMdgx8DkRvR*!%Bg2a5Z(y3gb>(5RLEs;8YhaTsEXp9W@+ITUM1cPlMIkW2eqC&a2!7n11^k~&4ooa zx&#G%kOD3sN(|*U2%rQ40Hi5E10I1->I8eHq;DnZWkMPOMnVaS5N9RvK?VI^`l(25Q! zp%!XX1S(6=rENY?c6!q|Hs1a*0L68}A`s(C@?jquChC=7F4Q4R{~B7Px*P-!nxl4V z<3(wdDk(8}P{YZj1B&WMYK>7y8fff&dK#QV~a2hJKM(c{|r7fZ6SBA5YBFJhccjHKtc&jZH9#NQBLFIi!+E zrr>-Rld$W#4k1(;*PzTRn_y+&(W{&kNhi*UzP8<0rYo9&&6>msmmm|J_-ppbSD{ej ze_Dxj)mJrQN!SVBn2-gcriip|EXNw>MS^4wj$PN0#U1v;KDppqo|@Z)1WiiAqYU94 znrY9V>23C9K#^up{*3==7t(Z}oL(B1gkRF&jnC@L&5ljb|Mo1;%8Z5z4bIFAnwm}2 zCT;KaAjSF(Kap$OP?YxBq151F-fT|3s|E$!b}Zf6 zUB;FKUA7+#;e@yb#ooHm-_l*+ej2FFgx_9J-A!iUCXV9P-Q9vL+X4X!6oXDoK@zA0 zF>JuvlF;DF-P}gS=hm(0rqIV8T-j9@g?^|#L0{8&#mzn_fhwS(mFLPNXhr@~FdbA_ zu+x^LR?>l%pZM9fRute+EJWpFfBFoB_8!fYmqAS^fKDvyVqL^tD|@+s0^vx(P)IeF}+X?EWL;@UOZu{<`+3ug({{lcD)Ibf~K^%}nJ{SWdU;zEv zFaC-ICj3Ghq-_llFmH*%0gqt))_?*405FUKBb)*o)W9k1Spx@fNC1QVUhx0kZyW?d zBgn5XbTFijE()u~i8Ss?Xu#S<3B-m;bFtGtabnS2E7DQoPS9}E^(+qWr}GY!_ePg^ zDc3EOaj9Q|I@E8(60RS~csjAMc+e6tF0CvNMHqNPKP-D8LjvuqearHrsDEkFrd* zvjfX-0F$yQ-!n@*?nuyOL)i@0KFZNSsL!4*(qdE0PF<5+BH1n6*C}oEu_NK69o70X zK!0n~8O@6hj-PFDyKY@YVjb2*6WOIBHkql}{ccW}DL%?6Ju>G%pACA!i5Q=B)&z9I z>2oS4jtIzc0+<2_+_B>ga^`*mDeLch|JpNeZ9vFDa1FRE2g|_c20|imawF>@CQt%W zmvcNbav(2&N@O)Yhc)`9Omnerz$z`8gz@ewUwAReDAI1tw5~jENs=&)jX)m^8*fQ3 z*Yu%Hp+Ik3r`=kowZcKg`Qi2P&9$Gj_0cqJi{Q0=u9m@eFQawLm_3;=^N z{P8H$!XyKLY>&iMZ?IPz_nu+GZ&xxSi?vwebVvxNXs(buQH8kzt*?S6vF=GO>)=_w zs8UePTatuTo?^0^E7QIj61tO5*lahQ_Mli?ZBwZ1ET?yCP9=+!#V*UH;nrq&v!GFI z7AmXnr4U29_(A0g^#)A92kW6xi$nv*Eip)fBD*t%YxpSJ?+9~pBn*R9>tThH#1!PQ z1r3A!j(A8613II)bjSFCuSMC7>@7QD!tHk|ZsGq`EYvKaVBg`?xtqs1oX@$O*EyZvxt-@Zp6|Jy_c@(sz@`6CHvp&zY-L|}wNvsTF*VjB z(+tf!I;2C2X%h=yK4x#z=;DPw2`)lKgVy7DZdYtA6U4Sm(;g`Iy*1OBqg`XMN{GM$ zD1b7+x~#`Ktzjsu*3QS&_JXBjzcbqO9*-kqq&O4 z!2q;5wX=D(PrJ2eJGO88wRgL=dpoy(ySRrtxr4j8k9(WPz@?0~>8>RcdL>Cj!2nk#@8`3usC zFU7$EBm&1bJgiTA;XiyL5I*78f-(eyOk_gCZ@l6|{Nz`>GAy+SBz`S8{Nxip#YaA@ zW4;U^g5Wp&=hwpN7e1_?Apn>I`7k;cWzQZqo2=L%dD50~LL}>%PT}u138@&_= zKk*O1@Ed>eOTo13z#b;Q@DIQ~DF3vZ0Ji_j#1R}n_CJ60Px}B+|C(EWA-DnZkH7M7 z|MV|EN{D~?OMmxIJN83A0epQ>2)YZyO!(UFn6v~j&;lTwAwc-!7bg-X8Hxb#GstgX zBme{f_yZ70puad1`8`Z1(PBh?kuDCzC{kcVi;?(sba?Thlui%@QjB;plFN_|E5_vb zFk_sI9ZyO`8Sx>`p9F;-O;{9why}HjDX66&(bTF^sYbP0t7;-;jZ~Pc6)aL4003SD zi*tjkGOh|-WSvS&Y$tODDA7<$Ebi5*aiPvNr;OIw7vBINQhQ@@SGNj+0f@2J-MSy^ zUW@<$LTVxfRBJ5|G1DZ$lo=hKWw8J0Y-`uAVYmJhn|5v6w{hpzy_B4jDU)Kb$hH7(CdO(YG$qhZaQIeDf~_l#xL!x@gfM z7(|poOd|kL@ocIS^rU2j7ciYch9!alfljWVQbsfl&*U&eiR7X1x3e_Z)z@Ev4OZA; zTjPfS_Xc1PKKYRQF1%&KJFXBnP^iugM0U6@5;u%{5ZV6_af1L;ZU8|9LPQuK+-}+Z z51DC^m^R#LmAJ39ZQnx%!2y&I!3}e^HAg=;zV&v1E_2J3w_eL+sn#xF^fH`%nbh@J_}-{!*n`n4JBg8p9Lt5(=D$WxvHx;y@C}on#fQg2D1wz zh74Gv%F4}kVsNXCOK4D_FaXw$>IAG5*c+-&BI!egNMry(hDbO`8-wdkfaxq|8Sd`$z#xc9tkqA`+r7 zOB94e3?=~SNoW5t+Wu+~K?e@7ViVbjNhU&*g!E(}?n{YKMEDU85+n}($cab#(G!&T zU;%rhRGUVXwWzS^GlaTfE&2d9O1UM7pW$IG8V460LM3Ze38H7PvbU-{hKWoJqB0(X zMN0i}iG{+-4yzcIDTYP_DJe<|IkFOv06<~C8lAAFP_v0_@Ha3+9qKT#vfSh`SaE0& zd>-_k<#b1U#3>Fk{GI$}nMc<@uKyjVsSqB9HnPnNFnS+9U`2YX#8m${4s%xq+qjRAlh^vD^e_#VhE%N<8HWHafA>GyD`AK?52nSxID-BuogG0I(Wh&Biyx z0D=RGA;2Dq;UdJ?fLZPs(%=5fp59cYNF^#wh04+h2z9DZ_32H8a8sSW)TJxsDFJGg zn+b{1HlrgeZOZqWKp07wZ2eyiav_Qu$Z>zobdoi6G$jkp!bBO{pUFyehXMvR4s~sf zla&9oKU>UV0U!It6Xe>6utLo>pJQcgp0*o@KQ}z}Lt@+S*8x3fbAN>dkM=nwl_N`Ej)Xb1=9PApQyyi>@ zo9t^4mSGUThQaVVS_mhC6Q7`Dji{W6`$)6d7{gd4PFo{CXh;VL(7^ya=JAdVV1WM| z2-yG-F!GRdpa3D~fXPh8fRl58fhSLy$_t1xm9I=?Enhjx3z%}0!TjYfH<`%>uriW` z41pY|*~mQZ@tb{2hXoWu!X^aDnI!5)-`v0lPH=z@KtP}X<&~{2J4?y9YuoA~GZ4Nw zEN&aER!5)3moW3C&hlvJj|V>7*|j!ytjYJ` z+OQTkf9OfoRs!yac#|nG2@{si9kn=UG~67PVKqgfQH^RuBx_`4i$l1QcdP%q-6|Bx zH9c5wnuLUNLuoN;2>wunN6jg8@G+c+?Bj@+xyiL4Gnk>=rh%*6cRB7jx7*Ml(;&l#|~Jte_a6|v-*i@ zfOW4g=|nFRMQ~faEB3O0?}p&}-~Ik~76d-}5g@{<>Q<~cuj(No^?h8TbdPU{+>@8*pn4XL(WAN$)}P3Qk_?lHw}PIDnE zfDTV)N0VJ1dySNZXM?|X_f`OHM#zK|at z{+(ZVYO&$AZ(6UL8z_PWe=b2GGC~fgU#A&S*CR3Wp_#eEh8Xpyv|htRyr?8aG)4go zErBqB7V?hLW(KenaAh`zyYz1XRb*xI?ql%o{&wZn5|0Etu<<19edIK#&FYK?p+-2ysvc zZEyf!k2dnGlvoKORH%hgBHU0TOx_KgHtWJF%#0#IjUo&qHf#TVOrzb(tqjZUR_-Ng z!Y~ax2b?NG3>)kx>@Xs_5XDfeBwzv!%P_~r;SPd~$8sR|aBj(#j1Cll%rq; z3t5OXV&b9Tu*GPS-)15uv}q-lf++EjG*%K88?FiFff43_5vo8KjD!-5p$4oh_kd3s zeoq)qK*%-@%7#z+x(wtP;TI_3;0KB0F5&;pB zOyYEo$7V$)Kq4`P5;dZ*wJPeOilIxIuA}@-8 zA}U?L8{EMgD4_`w!5cUMD^KA9bZ^KOF$bF91enjseoy5>aT7bPKFciJJs|(4{`sGQ5Qg2LBYtrCo;!HplBUE)!OSLFDwVR?c5t_k75@8$`z*hhA z4vb*?n9SmGKo}aq$xu!%!;IuGfaONP8eBjVIZ+cw?kpuS%CPbdW>m~x4&$us_lzM( z6Y=*Rt`Ol&G&qMRSCu8^6aAz#UDZ{jREGrQDhY-Y6+~eZ4uMN|Bpe!V1tWk1l(Pj6 z;ROydPUAFStY-efKAJj}JOlk$)rZAfZ6nFzPOE8s{e0NGar)4*! z4Y3J#M=W^JMEtzZ`;Ky`ORzNB*= zH9}_ic_SpVNOeP&=6LV3hdE@GX84-;K@k?>^!?m&r?xQU(kiJ>@(rFe>wcpi{= ziK)1Wml%t$IE!6?X_O|jQe$+ixQ^*~2UNF7 zSvL>c2PsH4Av%f{06`j9C?yQSClo>k9&9GpNG7T9C|&3bPn9Qv)+1yB3_l1aKH`Pg z$7&$ik5R%U_zfv3f*(YAC`2N{d}30qNhw*3hKe{26d?|1nU)pdmVH1Ga@hxXxtEoJ zmk)rK3n7>ffS8NpTW_URcdYPAJIhSvF zmS?$^<6r@3fQ7(gsfP(`B=((QDrJh0Hp6@xILBJ3)fCTiJp7(j5 z@j0JkU;y~JpcPu689JZ$A)yyKqU%`-AljZATB2d?31I_dyUm9Q^id;$2tvdWj`6Kd zgaD(&MPLL-Vx&o80Y`L%M+WUj>Z-7a#7K}NgDzr5GNek1P>c#AiNx8zf6CY*6um%DkZ3qhC_;F^c|n5Q|J#~PUzAeou@0GN5L z)w-?Ix|q-UnVWg6ulWG~;+mMZdaHFAs};c??qD?Tv#N=LqkW@r8=SZDxXKTN_zh1a^Ctm}zH(MiPp~e@^V)V1sxugob2U zmUnrtySb~eJD7c-4|sr@@!GqMxtY(Jt=syT-@2I7I;|U_yyqIchuNBynVYX$ud5rJ zr<)ZMv?n{~f1MPu{o8O=N3#{01vmh*1stC<`@rit!4;gr6&$R1V?q{Yv)+wq|5hfq zM1JU}AqoqBR@kKf+s=P5sF{d~fON!wA_0NEt`dStW43F8M*Pv*AQE(j946=*0U!z} z!Dog#NHXMt0O&d#C=w*7Vj3BcJJn}-awtkd1Zt)fbP1Q4k*kFnn0?@@4}b<{VZG(r znH%A)*;)s}T&>f)t?#58PY9V&^1z`Asx~|U;qp~5L`ghBO9Sh zU>LZv&@(-vOMtU=V-)0}zXh8iki1hVD?(l=wfUizis>b4Nu!i$9dJpP&VrZjAeYtw zn3A!^jcJ(wj@P4vX}gxG(u7+K?xU78!f0ygnesuJjOmm@TWK~+OO)bFoFWc}p$=wY z4xnHH*q{n#p$h0>1gbokyZQi>p}W_L5~ew<WA{AdO(zlvpae=_9lhZN4#6I} zR1(CY0yMznW!~gTfCD0+1WE)ISYYOPp63lA)k`1~1~LgszzK}r=!<^lf8OMO-m(p0 z7*e4gX5I;kp6Zd_>Vuxs4Z#US!3%nx=doVqA-uEo__;5{vP4_sVPmb5%dPe&u67GF zkE;g%@T#x&%I^Q_e+28q3CpmSWbdb>?={m&=&FK*JgOCou^ej!B1>wxT}i2F3a=&( zfZ+sGtrt|F7i6H^f1t|a{mQ3V9&|tx=-`<39huAgtW%&D?qC80zP!hr-<(#4D}X)1@7`H_0e&8K(rUHtRthTyXx&z^J6F;_x;&6O~KP_()KcAEx9 zWrPz;8j&O+NElsYp->8G)KXGXDP_}!KbZ` z)P|_t*i%bVNeJXhBCZ&T4-3RG3nf0p0h(ucD6p0fY)#o#EpGXc0%edHwxwcsHB*B! zTqZ`QVT$pi6P#_XGjDbM35hTn`)Y#d!`yB-T(*T$6R{?#h2c5-W`M> zdaVu=9e(23x@)eHu9u#znWTs5sw@n9&;T~kCXb=CA*!2#4((){w2of?+Z498`Ln=i zq~QrJXLPpNR$Od$d6;2;>17yU?zTH7m+P)cZHyxkS8>Fw<{ICw-tBW< zfhiZr>9G*UOhADLqL&}U-c5{Mdxa5gjPWS?n3%9(m%FUyi!tf>+Ks zouS@4n*}#{j|;ApG#fA20kq0}#(V@=_#!Jn;iOpM3Mh zOD{b2*gHRc_SYkC{PN$6@BIMETMxbPD7Zl|Y`NP8?T={tQ{qr9O|A7sw3h@F(^W~u z49`K!*#Mp%=eM!xXMCg)BV(AsrS#gN^i!ffyVV01S4h z-^p=~bY#&0B7ny{>T!>J+`&F}z{fxe@{WQm=3C#&5KV&?rwCn@mn5a0Z}5D{JUN7|w8uU)-TGc38wB3bBZn z;AJj>2+Rfa@&XvR05Oeek78cH9>_H21=vwUVfqr7z3k;LfvL+b_V9~aY^4^p2+I_D za{-Zr&9dGX$2zKWoe2xxA{8k}KLS#Z@H8Ym8=1#?>T{3!BxF7F`AB{yl8^t);{dG2 ztVza3175q|{VsU75Xw)495f(Bc?3ZYvW;v5q)7q)cl5!OXq1g1a+r)X+CLD6uz&^Z zsKXu_K{ke@C4gIiD{tD$Zhq5?TioFc6|l`9V!$5T#HKxZnaoSD;{r&$L^6rVOl1~R zs?Ibf2AaB5r4o}Jz2vG7F#t_3UUi#b4Tw1;s2L zhi03I%=IOI*r3|5;uKLT&~6w??VmRI6u)t#M5py%B#6Y4w>9l)_fxIjs0KF+u_h&I zLk-_JM7z3q1aBw$n~F2`3oG3B>x-qJ|Zi$@Ho(jd_U$ z9P_AEEhaOodQ9{p(W>aBCJ>=nO|LFNn>?hYf4|vHoRZUQ#jPJuik7I|;dQ|bo((?; z5P@rm!V7{tL_K=pg@5iK2#UN16v7c zz#-@o<9NK71UilYkNK!9Nj6B7C?T>^khaMpCpjoaW^zM_l4SiUIfD(^36$L!N+z4~ z$XBN6kv|zq0XC#YO13hQuN*i!u)`a-V23bja0+|8IT6B0gf}Wt%N*P=2aGtuSG~GR zr8*Uu#1!TQyzz@l#FxHMZ7(yWd4VSX+;XTz^lC4QipwryfDyl-1TA@5Mzp#zrvt{M zL+tiOh0?XbtZubK{Bg&7gdhY(2+l9U5gac}7{hr4tRFLQ4L8`J9)8_pu@?(jL>_{| zCl0Yd^?1i?93mB(=(S)~T+eIZ^BS>04je2S*?15@l@vkeY~o-Ers!ybMBX4q(596c zy)=YhHfg-=-H$B0dqd6D%7*^EWO=K*w;Y9QMgeZ`l=|C#9QCM)N<#-@)ZiBvXa*&` zk%%TJz`Az+E?IK`R19!8m(~>YREPP@^rH99%Y?6^m04(Jj^Y;|NGcGCsni`N^M^Uu zuNRv@37_h8mH`&^9Y9h)j4Ijx+_^!wtDoNB6WwvyqNs-`!hsA;R9)I$FoPF(3~tTN z6B!`xwTkmNV;^hwulJAyK4>gs8cTK`ik!v7K^%{;bCv{m)bTwmfX5ui7~3>HsF2}z zKm&$^C0hfOO9{9U#?Pd;ENz-hq6Wc@oG5=Once0Uzcu43g}C|a2;D$j2TQkqWl92~`(B0T|W`^Ds}vW>^tMb`jQDKW1W@Wm&;-3Plij0|i(-1__5` zS;4jl#s&w0Cs^P{NaQh3Xy5JPU|N(@XB0`Mc4Sn+bh)8m`6q~U z1St`=V`flxc$9XK6=T=1VerIbG?sP{h;}bF0FcmQJ~ntUrgw*=M`#^EzD#mSNeIUn!PZ=>jIXlNm)5u{dP^=$5<_Jj$ay#Uq!{ zGnaJ0PjWC!PrN49XENff=9aGum|_69XTNN}eKjGg&|G)NPH!w-5A8hgSdo*^!8;TC~5xn(or zWjuIhQTB^h_KJPjnN@a-{}|L2(-|(e$rj{t09Mi_kbxM7F`URboOGZAC-kFc6r?}8 zqs#d&M#>j#vKTZUYA5F%-R-if8y@?h~9p!(^h<4FR5#Gqd)pa7~V zzrmp7sis`IpC&_~37V!{nlt&?rFE*F1h65sVWqRNI~k;Uk+(py1wyJpsLV(^^TT?r z^%J`H5rFzp0t6vn1E@q(-DiOdx_Vmn<`u@wKN-X6^8nHMRFvhF`F?; zC2ldJK430eLMFzEoMz;sw|c8V8U{d02NMvS#u+bw(It)WoUeK(q7fQP;w^Dt8M7m) z60{K7c^j6{Nm**G|F{8b3p$?*s-~L4F%iJ6a2lrtVlri_pKJQ2C6F@$N~a16pXJ)E z3c9WOIRNA~5t2C(4E1g`sXsIoj1E;c{T8YmB1-$CBQn*mSf(Q@ayyaABB`0M#5J(} z6DXXCQYcZeqN)^9)?6aBgMkwVm|z*h@C!2VFHsUDcTospBCB|zqs3`cKf0?yimSLf zq{m65#2GKl=@xg;o8)q={PLvI$tOM8Z*bLH`1&l@%Cx-kV1_UZUT_3rV5Z|5o*M%M zB;W)`00kOArspc4bBYPVv8{Hho*(qga3m`YbBxQ0uiLdX!X*#h360>&T)KEMXTF$-0I7SGux%CMWU zKnXb7F2(7qI#8?4&}qARt25xMwo0=;%A;U%0u!K|JS!P}asaXL3mC93(J30FK^n0+ zU`Do~(W+`j)3nEnt@U{bvJeQr04A~k4dNgPFCeZZ@U7kv1RB7t^SYqr3bmY2wREed z<$7aDfS_e7p8YwV^~oF)7Ov>ape?u{#Y+)?kQF>>6}Cf@rWIU9%cyVzKvNN1eZ!2; z2tu_5LVIIUQ-i63iohbVzhom4N;9b(`Zcz58qGx#APWK-U=4pD2AyyNv(N~@kOV)# z8LjFA|4?!O!0@^3GA1bivxG4LHb4m{Gy}G3MmbCeIZUK6y9IXu0mYf5!a5m^;1(&+ z0vJFicfv2pswXVbC--)gLb(u13xmk3#ph-+qVNc*U<1N14+Rhiso(|g3#M*B0^{ih zUR$PbTp%E@u1;V9>WjwQiUQ-QG0>2n?7F>jtjA8E34WZQ+ZtrHfyE6$nelhP@J5tq zLtOsqFpM0@pJ!20!;%C$l`%z8w4;lR3_u5@KPJI9E2)-~95)lCZj6i?p`36fv;h2o z2}V#4Z14;45DRej1kmseZ}F;kp$zvT3JQ>I?Tg5jH^6K2ZE8D z|AoOOmT>@>p&6TzC&;R*q)}=X#3N1DUW0a9abiUS+W)RPaFwh`y&xUZ%0)3$5A;FwFTD;-5(rQtF66SpNesH}BEz(r ztF8OYIBcsv9J63D7({H%li?*kASb<$yx`g4nKl%eZd_t|%!?xYStXr$ZDZ@Mq8N{js(CIIE(j=|vvoFFAy)@;)z3XaNZ{7feb&_t0$~~f)cw%ZE!Op^*V8T5b zl6eX~d6nJZYr|aQOkG&HI$l{i8UB^7^EsPSmLLA%9bP(#qdKfJIfyel|C!?gBca^K zB@|Ts5+e=WR}Cq~BR$X4Jkpcnd70zPg#HKSfafnT1BAZla{lLv zZt0Ug=krhqs#)e4Va_8tZz{ktIq1CP6MqD>#;8Dv##p<;3tR- z*zm0tKXOvK$KvCBgYqU)&2=N1xlzTgmZnV3Iyl&Bb2a~Zz%+%O|I_7+AF@A2K@}&t zQv5IjG#~MT?)skZ z`EKs+9`ES>?ei`I@UHIQPVn*W?FX*`QrcRac_UT6YN3wRA~30%2U0B2HBn>Otg%L2 zb2kJo*oPWG5+orIl5c=Q%2$(m1Ww?0qj@pXl-IsM`F45!Af;m75EB0q7SZ2V!FjAP zQS-Mzu6)7L^&_yS+|fm_3iK380}_~r$-hoNGgV}(HCwm`BD9r1a#QuDYCw^F^Q%cf zOY#wC->8@BdT7t~Y`^xa@e%#7_K}zNq}ujp@6wU5_GiBi{~h5Et|#|Dkr8rFs&Y?1 zdmogpXBEIDHb3F^{;&>-YBp7$rx@|+v~lGW-?Tcf`M5#gw{iInG15gixFo9PwupmH z#%`%!gH*PI6+Dv-&;Ahd0<|5JFSZA{0PUqFlygZNs59k>)cv z{1}U&r@#CgOJ;hT=AUn7tH}^BKAD}*{oT(y+J7|DzWUIfT37aO1+4tHn3|c{nU$%F z?QbHk&zkK2nXYx2^WUNf2Y;v^?5htDkpKYjH?SbVf&2z81Q5rdL4^VVNNhMz;=zjx zB{~Gq@8Lv-2`zp+co5{tk|O~q9LVt?gH0i2&J3x67v@czId$&j+0*Awph1NWC0f+z z(S@U8|Ms-GQed1&P~-UX$1f^Eeg&sCj2hJ{*NXfcdeutxYgMrX#rlg{mFh%?{KP7R zDpnxcyG|RrT|4pVQ@IYOW^LQI;M}=V%YqebHx6N`U%f_J>o{fFgJT`C-Fo$K#K&gI z3VgaUZr9M1??&W0wJqhUAP;LM_&Td;$&MjwrE41Q?y98I%3C`04^rgGl`m)B-1+n6 z#C;w|cyi^(jMufF%r23oc9$PHf+wl+JIj>SHzwqm9ivS5AGJ&DezW`7g)Hl<)&9M` z!MNaSNu}%<3a`5F7CJCJmi)smz>xGSZ#$L_6bPoGnu2aa4mUdMDpFb1bv(i%+5`C!4s$lD&tmQyF0!xulY&eOFu=R2+SrFJd!$BX6cLs}s2Agtv?Ex*mb% z8OtSKKAK!0&HS0B5}huw+@if?Y1*NxE%|G(!!DWYoh&JoHC};5h_YGtl9erl`eAJ= z&fbcIGS(c0mQ&$CqFZfRb$n`XxV0LI(6=9@Y_o^bej8^bp?w^o#Tx5V4E4oG8|m-bpgPoZwf*r3fRBapT5R5X_Z`IC|8;sHN5<&7 zidhtiuef1yWxox1GG&+E*C3~N*m^5zT^?uCjV~TdU#*84!0WZoEPV56L!MUIvo9a= z;{|`e)MhT%#5+orF8YOr@fgl52_(B-YWQ906j>a6;tB8EXDPPfB zr)1Q(s{~Ov&YM^d5yv)^oX&?q%v=yr6-3zu>^H{(31}vwmDRunh_pcq4s&?L`{{){ zRwPUP(gl`3Id3EEyUU{*)fF(}$tq^d9~PG=rimf$b7wOTX`aXt|FQ+e5*3VLAq}a( z5lxULO?jRh57is>EoLrx6bz#D0yQ$~s(El}UBmE3NlBfCH3Pbw{3Z!Szs#z0zS+uc zMAx25)+UU-ft1^L2q?Ejv3}yARczM9EVf~UHn$|+R&;5)*mQ=B$!m+-P^m+KI4~#( zJY+Sk$vbK0gqmA25X``Z!65Afg&rIsH@m4bqvgbdiVUYXC78l;rf?@$BVme~V#KcN=zG6&MmSvgz(V;IZWy{soE17I`7(z$q zypl|`l^NBG_~fUWUw!c^vpP*Ku}G;jZJL)hD$Yq|7DD(lVAI4N*7B)^NSlT zsYGVzlNJh8sZ0IPQ5TsK*e!G*9ySq3pnRP;>s;)p6=(km-`%iHT*rAM?ej;lU2+*qlY*T*!{Sd3fi+eAe< z!PbtkE9nP8r^8gtX4XTNr3rPSM5fGm^CV6CAednEBA>12MnBR>(E{Y1e#PvxOT*fB zN@H8rUJSK4b_Yb2jJjY>h&EpT<~H`(rNv?3v{(~3r>fp8XOnx$@aqf?v*rs`AS zOixK5WU=m!GDiGq(Rbn_w1u>2O2nfV!Jw%U?+#2|^Wv$~kl>qIh-p`7`*-Nl1$a`8>!V}I(Hfb0biPnWJ6${kz8ac6-dS-EG!P#F1 z;~KhwMzI?9N{Mp`8#_G|#8nwoXnZp|J;KH}a~U1n;vhF2?O384uFDWj3^&ZR>&RRY0Sq+UNI{`{tfOP43uqBSj}smiF9Ss6xgn) zM?j*8YJuc01 z0R_pZBaXQCV!}zXKuADNLI>L zn_^-`40WkHGOMPc;S>+2DDEe|PmX~5)LBGz#EW`T%yu)CT;?q-XIb*xoB}47^Ww@z zd1R}%(qsM7;%!^G(p0YclOt&yp;TyR$62|pUQ*Eyy&s+vEXYGk ziOO#hYLsUkpxTzn{~)VWB-U2coKJeMr2XtN7cFQ6*9*pIBGZ)t7adujsqv^0x zIX?Od^nBBo-!`YekyLJRu502AGe0arNp5<;{L~&%&o&K{u9QgAvE{Z*meyFV#XT() zSW7izwMAxjdOVx+(6%|ZnYk!weth*0Y2mAnYfK8KUW=f|y=1PM_t>!?T$$Cj(xZNR zmsBFh($&(6?XO!`ZpQZx61Pslsow88yro{Tb=f`gn@8=qOKv^zr|>_|KO6R=ei zpQ@`irm#K=|FkBn1ArRxCZ;K^yF;P7OPUk{!JLS&`~r${LKo38CwJl}PUAoo3<<*9 zrw$Z95PBzcGP)aVGYOoo3hcoc;yP1fk|o*ApK&6L3D`T;Xv1&Ld+%hg?zB>{W5EB(#DI$u{!i%dy!iqO7 z0*jHOG3JuPMsXNNaYLKBz-{wELUf@EKoBKs7l0WiwAdw(fTML` zo<$2PB~p)xT0b6Y7w0=1M+ui56R;e53`<<7UHT=4*)ERhA~9McX9_d!fGLilJ&&@b z1Un0h{{t$GY8_D;D?xm-LOjL<0z!tsx({Nfbc!c%+K>}8!38>@IDtkMq?wyoyrF13 zWc)_3Q3_`ai45eaL|myR(H{0`EAx@1M`RmCz!M(u0X&hUp?RpYfsHSc9@#?_m=YZ? zYmF;YoqF^EgA6~$kQ^&R9!r8KvH~&VA&iH#9%FJO)xZ@+Fi3X8$MRc8ca$r=2#(J9 zvECpmxGJK0`LOm;Mj9F!s}O-000A06gc}e65qOK=vB?;i$rz}~n?$v+dC8cZNuR{Y zLc+d93KcLaHzca1UirtdIwn$izc|nVI=IRlz{;zngF?W=B?P4~dZtOq2r0BEi|`(@ z|L_5;+{&!Xfvn`pKYE|MI4IG%j;E9*QVBVSDYsr}2(_GmwS3FBJOG6{i!AiK8aXWd zyRx@Y$`<>>#@rLiD#jqh7Jm={M92h4fP@w(f)*fw7T8SALjakQ4p%*@vGOwbg~79h<+Iz$efHW^$tav~44)B(3FPCCeeC7^@kG|sLp!6k7< z;+mOq0!oHZ%j0az;#|(_%*w88uHQ^H>a3Cy%qQzS&g)!G?Q~17%$nLlylj*^;M72* za}lKE!D~T;(9BOE2u(}qOi1WY&m2vXi3CL0&j@IN&OCz7|BE4L{99?0Uhvx_Q@$BbiYv= zQT-C1Tsw@vyw2p^8i>0?usHA}9h& zfCO>aOwaVpKHbbDmCXpX1T~#dH+54u_0JZVQwF*~4ZysF^o!0xrMlU&OQgKwJ24;7 zN*7%MDn-sw71iz30TJLwO7h4|1-2dwpi8WbIOqhdjM7jIRUtJ_9~dKl|Kt^a3(4#8 z!ny*!sEUeDRZjD~)l!|(7L8HZIU+p?z~YmXDax`=m8%gWD<4Ct7TeH8f|IGp1pnMm zHdRz|ZBTQC1UwB-Hc3r9-OO|K%m@(8bA8h|MFcv9j&L1UMQzh~UDP*S*9G!c>WH%) zQLPX|E=1mHCsXrTagjR z3G6Shb2XIwGpR!n;`~?_6J_xv!8#f6;)ZiRY5mW*|@R56FPX-1%Jsy#?JC zJ%A$HQc794akHPqctxv14H=1p6unjXb=>=g3=I(xFk&BOUMFti+{IlWhEx#Y;oYrWAO_+g&SE28S|tAe z9o`%-C2h6XUs zHU{MR?b`-+(KsS{55`?a-X*JIXbQrhAYBzyMOE-$1rx_`L*sfM5Hq-)`R9Q8ihqIj`>^G`TgC zs^nbcj9+dJVQ$`L__c>`=G#mbQgRj)GTD(k=DGHXifWEok)`K&rsr^u=SqhE-x40@ zn_ag4k{U9J8mj9x#oNK1fL-T^1QCdU4Cv)!_UNMpX^$2Hn}QCiD1whBW|3BDmi}l+ zSSjexXpSD~mJaEfj^&aDn?o!Wj&vLu>l|EJmS{-~fL7x-rsPYw080+%Zf@#r24p~X zQ62EHCgW00vPiMwvEXwf5l8`CXIqIHCY~$dC|;gBIxMqul`` zzHFQR=nOd8&Hm`i76QvAf#^++ILHJe?rhBV?95K>&*p5c72Y(NY$LY+?A5MqA?R$> zUTx480@3E3W(Jd3^F;lkL-IPyIB;J-{^q^Dga#1nq;_tn&SVhIffNusW&@zr1@832 zl$tGMZ-!rXxPY;q=jQHaZT@EIK4B<{v%0Jv{IR3fn9}=o?(lAE@qX^G-sbdX(dve@ zq01cb8WI#bFB)zbe92(|7+Ma=gpS^U4Cv?w&j1GpZ4RJt&~9)De{ctna0!R-{p64s z-~f)!a1Ph-3g3YfPjL%J@e6Sn3qWXvhTqT4fre)PSyA3CF;0ke;N$t$ z=5D5PdvJ0nzW^$K^71xoH~w20#la(At#fLvIN)PZbz?J+=P74%KzH&efAWG(XmQTx z8~Hf{y2l_h8Y2<37X$$C)d`GdjyQmX2)}L1cJYoDaUt+@4&d}m_i#~v@FEy(q*&Te z=kOP|>-UnakDZf5g8pYkf__HHi$z$`!0^l)z697tq7A}(l|3K>mR$_YAI zN!7+BXtQ>6D(Ch!Z-6LQ^DAd+Oy=_2JNLRu2`7?BJ?s<(HtVEj|MN7rcQ(KGg=h0^ zc6fqrTykHc>!8KYnYe}E!ozwa&C$IyiY|*b5fI6Q3eSL5Uv-mz@Csjf3rG2tFYyxR z07MAe%hXAm6oGgm`4=yF4q$Pf|8$^Vd7uAu7B_iV2l@w3Vj1Uom5=a~5BipO`cH>> z4wrdgh7(Ecmn`z1?Rutr$twV8*gePVdhhl$M+I(=aD%=L=Q#f?1? z`#}!mC%5u@|MRt<^3XSXERSjki2Hma9#x@1q|r3M}^G(ZK?V@Q%!N;VjI;R44?7?xld zC^1qTA2tv8z}YZop_?{+@Z&deU5*@=FlMwzlBCF!9#2*Q8CB%R1{*gTjhRB|#I9bs zN(Ae5qF4Y7HjPbd@Q>QIZX;#lz(I&yx^g*Wz&rPD|AxGJ>)zcf*e+cfX(3vofk-ip zOcB$Hkek=;y})$o=FJRv@ZQOi1;;3eP=tsWq)nGTtva;`e`4Wow)@$$WWRm|$Iflo zE$`mE&-T{9&ozKJk%}KTPSN;qiU5QvZ|=_@fa%qd*Ics19)^r7L83C*po&veP*Gk8 zuQcVx?l5(TI6hoxB>Dv-iBNQ4e<4M!`5jl^a@Emf(RSTk!je_vEoI(QB{{`ldR8Ts z5k@-rfZTH;@Z&>64uSY#Av%ay2t)wJL0yVIV1(cW8>RH1cqfH--cu8@RH1elQfD2C z6xmlDb&(`TTy!e-sA6*ca0Q)wMG9#UaK0s^{{fX(8We{mcgdDPWrEQrSY@(drWav% z6>;2HB3Ob5A|SYF$zxvm6IWoL;dWK`K zd;n_bkGRzZ>1-rZaw=-4y!rE|o`D7N|M8tdge$u=*obJKP8ys^|?oh7JRmKdbwtIj=_kk(m? z#+90a(nQBmFs=mQc^`yS1>5Akoh`2ZMk^2xT_+?q03zgsE_@jx#8s<8nw`T&Af-1U zgXf{b_6Kh73zg#b2}^|8v6L+GBnAG!^Jt_Z7EuVXe+E7>aEcx*SmI^=OLm6EhE zgEs+j|dqAL08DpgZ$-P(dT@#_Hs?X zefBh1o%cH8Ad*S>naFwA_1trB|JTmicYnS6+cOiGvYIc!3F^kOwI!L?OWC!jpX9g>IW7jX)AD zm~3T0H&l*t)WoFV32=A2vlA>_=XtA4TMUk8ZDz+6+4pYR|CJM1Efe)5wP4aYU-tXsbp zM+Z9OAPzdnK@8mXIEz+co~(OYNt9AW_@KynaoFPK&NYJr%z$(1N|Dwo!ULov$RiVg zs4sI+2n@vG1uKjr+@8onjz)-Hm)PeAos+OV>d`p}m6*GP)zVf;j6hOtn3O7rB`aBT zB9M|o1GyT%#gG6J|1>CpE?b#NO4 z3<8fOY2qRzq_J;plLp*c(ha(d~Fo!H}>}0Q+ zSPEFp+6*iq4ojFB&1y#TAJ%+k8lWr^EogF+xhiETNZ|*>nB|mdkYg*0fCkSrN1&g1 zvmc8%f*&3WTP`P*9^oyu&v8^Bi^>((M1r;%iIJ}2C<753xD%#0AsyJ*I0&rqzx+B0 zy(Vx!-7Um(1WhTepWDUGiB3@W^-e=;1UX7{!W@)nfDU+IjwET#~|p;)FjEftdV_Xlq4FB1#VfC=mb6(@{A1LoQ6 zB`}3TmzV(H3YkH!IhtZZOq#+d93TyKm_El#UZ=*KXoD1?&MC%olYcM;6G$NlDDc5G z^b84e5M#?XfJ6}x;pK^^xXDFGEC9+^WJ{oL$TBxa%n{MEEpb)F6t_Xn@ob7C1i=J_ zID!;(a04lrVhTAX0SQ`cVx8yQvQmJASZH90Hvb{(e=vsD#nEQ2U;Pgd%u>X4PG_VO zodY1}s}JtshjloC1Q`g&$RkjQYlMRakPxev%`SzNKU``Q3=Y8}2Gv$kwN(C0oxvqoGy+6?0Q5P~0V0Z9-Ui2KaC?Lot74ll zhRp|a{Llwkj8PR}Ki$Wo^+t##TF2no0}{XkN+jr_yZ~g*KP&d z2P9%A{D2JbgNcZMcs)pZTml`?0CBiRYwSnsaboPr-s`1Q7eR!u_ycW?M7A7Qe=Wgo zeSi$wc}Tk;TqLZ6rY(g}t-}w* zQGdOFJ20Xmn!^W706*ZwEUG{x@PH54B7@}O1YDvYdXQ@=M~4;F*vOV2|2`PP=^sKU zAa6KaqVYpGYybglfCb2v8)LLqy`EK1w7%ZU7RP95QSG3W$Iq9Kj42f)@@Q0U(18 zIKe(jWIo~}65wM5^wRZ3A$|xY_C;Y)_7V<8qy^mLKO(~qnBWF**#IEH0Sp5Q#K9pT z0}>PhLpG#BGGq}%KoD$zME>IjSmYdH$!W>s9#$KLam_j&($_#3MCiau$jwE?Q3G@W z{Oy)3@*XOXL9od{Bxr{-3YWI5#01b6@DS0gxgH&`!|S~OC(=Pm|KS922!;27$2vh# z)l#^;7umhWm80v+khq~ z^w)rOLNtQrHZH+MSRP^KfV$b=1(ceK^p2z@1Qu=BzywZF!6n&%5RjOKRb2@KikLqX z0TPI$Qu<>*N&*6`!#yAa0dUzq{J;%(pa>j-#UTMQSVDUefO-DoKk}m-W=+e?AV+TG z3#ysTA%rE|qXo3*f-dDgI;DP!-~a$Y2@b#ylmI~%!Z7e7f12ce-sAEdL<}I=V+k2! z#Xv$7!H1S4KI*_Vv}b&_rw)YSI=F!pY=FfLzy??X0q7`?3=V*PmZUkb99sHDJpW3B zmM}|fG0DUPh?B$?b!^aaxW;g#fZ}}D<8T5ev>$&I!V2hhnA85b}WStJYKxDE59sB{E(xwK$5<(&4m5xM699SHUKpez?A;uAlaMvnQ z!WI?6CG1u`@d|vTh(Rnw7tO#6ECFqHsy+Ncr?SHg{6I=IRehw$mEMZuqyVBe&II&B z3{V0@5X3Bg0Dr*Wqk;~lhQz)t1jG?2-p}-S}Q;P9R_KDJTQO_tSbX#*%4?YyZBFNVa z6auGm>H)+T4UDb0ahPW2%kJ$KCm1a%xWjJQ0~v5BC!7G=L~Y%I*Mm^b0aPim#HJ^1 z$0l?tDtIa=US{J_#LtdLZ^mCyxa|eJL=|XL5@tXdnm`dm+(i0k z@e+U~^b8Gbf-!`HF>Hc72tmxDnK*1hILHI@irvi_tnGGaNh*OG+#?b^0G@3C2ec$Lk2;{iX`&N?3Ey?L|6$Bby$T7QrNiGTTYmT`9m0V1RPE6mWJkTCGD1OY0{>! z3Y)NjIZkWxEp$M~^!XH@T6pq_*h`<40z~bywM*p4g2c$3yt8fdiEqIBS zQ(QtAEQEZthNk`iJ8Z%Wpu#3>F)9%5sCJR)3=e(?v8}uf42R|kGw}zwfC(op5}WX( zh8KnKE&f=T@!-vb%Q(I_fF&n{DGjP z2x|md47Nbt!4gqciFu-DzLupF_~!;lfl6AdMCvCpP%F7cq;MQW3(BwjN-X^%XqNP7 zi|#KfpD#b2?zFbpTycuar@>P|(hA7pBA7jrSFc4}qv?Xuu(7}WE%fY%bk@jfeY62~zsazYEW z(+osJv8bbyCP{T{4If2G9}(cFD2Z_}OjT_Rc$QWq%m9w^Z~HRnDIe@8Bl3gpqYcb} z*NE=kgagbOX!VRL9^bVlnlHnSoNv6CfE zN9qk+7U_T&bMXr-#2&70iqHTZ(8z(AFgFKwH~(k$mcDHquMmS6wuX=fO3`LJXYm|t zF&Ag?WRl3}6vy>dGmThO8viq3YxZqtb7zNUy;+L^RNtc^HfBP};~|m|LFsD=9Hlvl zYZ3Qxi~_?EvXP2_CYY-#Lv@QnGA^?+A|rz)%n4bDz?n&JIDB`K#x6~gWX2LNR3n22 zd~!+Ju1J1p2CM@HG3-X-_eR3mXiztLTPsh?_b*fA{>C>id$;Yh^;oE-TZl^36rdgF zG0HTFbUvO4u%GM1(b~GhUt=_GD=}?LVw)0o)BukNXfYR~!VHAVAqDbt_`rql6h3Qn zH`6%XwlQw6FnFyHDpVpwD-0sUX`KE+IRE@X^=jRbU)?1($#7VBN5JsfZnKT|b2s1k zZP#txy6|ojZJS!>!T$UsYHlCILxv*l=n>ZXjzLSBs+48da}#vrziixm#1sHGJqy9z`RB}rAzvx12rLu zLt0Oyos%V0_hX{FZ$D0Qg7?OnAA|-RoKi_zvi6bhTxvh{;SdS2c+qwXYjzvEzzOI& zC+xb1A2ClAEl59U!YBt3&45C`fDceIluU;|)Vg@ZF*oNr3-7v((=Cm!@v}hyu@6oq zD+ajHKq1goAso%hU>mh5$!kZuwEvs13&1hFSGl|=?Tu%1hNtm(U;wfI4pM1NG+&2+ z^kG!-5taI}u}_S3JZr-lX(SW^G{m{_I&~s%x3wYzH0<}9WLd*n0(q;24>0vpBXaGI zJTAAWe%b)iWQ~Pyo1e}=CTN?Vx;)HhTX{nS#IHA;2Y5fWw}6|qD671wtHtv!;O?wD zDv30Un>4vSo`5jNt7vUK&$b(9ySDQ>8`JoW+xte(Q3DvjCEj(0p^^v)`JOs5OQuk*T%Q#l)}aj-v;0fa%YqKNfPhxD<^^rc7~xJwo-Ue*i;4b*c*N4YlZ zdfe}Nm0$hV=jA*#KxGch%m4Htz`@IXcsW%SOCQA+BH72X3Y>f(2daBTo4fe|PxZ)0 zb^E&hf|j8TkT{<+Z}Z}Qpi6{53_6^nwRXF&s5@v{YeMZ4iE{KqBqaaKFu(E>Nd_y7 z?8dpMb2=mM^m-Ej1B{!{s|D%*0tQgb!%Ierc&+uW-Hl`s4HZwO>1p zfAem~p9VZO@wjEuh(I9#M2tc-L_~@M03m>b2qPu*G2;@d4<9&jqIiPS35+f{x!8EZ zql*tNM0&)Ck>bQE7|e5MOQ3LH0+ROj-N0c6*t&6I(4a98QNg z#F`>+b`3X%UekL^AGTe1@!t)qPygj$N$qRl!|RT6`}zd{u*(mE^(RwjbLq+##$2v2 zlD`@3C>^zU@+nh}A;WJ(YSH2ac9HotY%Z2(PJjOT^+Rh=Im4X|iE=l3F(Z%yBrhZa zGZN_}i$18LffvGf4uF^PQw}=lz5=SBo+zA9A??^{;HVG4GpWGv3Jg%GijKNuy-50L z$e-!ln-D*KUjLFTKbx;45Xqz&$-VFQe zkE}Ms524`fYElZvKs)ToF-5Blu)}PyB*P^)TSo}dX7kH}D(y_O%GttM$IU*6D^fTO z7J4a;8*B2%JuZQKslE0h#4aY~h`OW!6*F3DDUwVi(4zn|qNssOW{82%4HNxQs6u6W zNy3JLU_!5kZ3sDh05q zOl>VuK#ooj5!4HQW%ND$lyi?!SEVEL&}Eym&?iFO?eWHiC^&9O4g4IgpS-Tzm*2#6 zyV3?4aR0pbt!Fg>Ot3r=UT@LI}2t22I2?6E}ye9PKnsXb5WJkjIk8$k#M* z6;-l?x-h12tGjT*oM?FAg6~G$^wyA2yfnQRTncyPpvnd6K}Ns;gJ=MQKUjfMD;0%Y$9}N~k^Kpm$@&HYKp*eZr$q`>< z04uM|ytmHxid@3U4F~kKB;V~(M`y`uXhs^1-jAUfUZ5nYkJN4(S5B4Mw!s+?)k=3R zBmc!czrZ*Adf703=ea3PhmX2elrH&0dD<%!i_0z@4VIq_hwL$qetZWWyi5s%T5940 z{2+OkR6dJB_lzB1NCE7}s)BMI_@JyT%LxkX>gBq+@IwT~U|i<%^tdVoMjj#nnFAFf z0!u*Sbed}n5~lPoz97K{&=7}~IG7L-griP=A)y5k_ORLPCWBsTVV~v|sH0KuAQB=J zjDWbTVx1~caUjYPF5(pW(XV(@(-uY=upSZEM<=Y35p^QLEDh;shyhd}w3bjQw@EFE zX|&ZyKxGf*)reU(3L^P<0zGxXC{m8n$r78Gvox+PYM$am6@O*K=lFy<`I!$|(Es(Q zoX9akL97W9xfrADc&%7P3Y~BYx5KgUqYy$+TnG(g0o5Ibgaj}p0c;Qs&3IB$e~=Bo zP-8+75Z;*U<`1SMYZt?5bcivOm{a53pwh_DAm<`+e9{*ikVDW^+l@+k5B zC{oo7=*pb4mS=7AQrg4k)IPP(vkYla3>oM_7|9i}oX>zh0h!Qq_hN%AiL^^1NSqW-xi81v#sbDDgbr~^oc~b_ZZq~O zD2E2NR0(;7e-mnzHtjJWD1x&OF374@qv#Y)paK<{d1|;g8Z)2_OhV{1YlMihiHoR> zBwNkuJpl=l1?|(HX?;uJ!Zp>utxSkRB1%)b(y}{Thb0z)I$Ihhl@^Gc4>q~OXNeZJe?bBb z{~}u<&=$0P>TF&9uoFfdGCI$RSM-!?ka*c{I){uE4J_eSwawMAB%!Md-0^`qXn+Rx zkuDLFb*e`q3Vp-k39=sfNZjQl5@D$BfpE1|#MYOqnmPd`Hlcy=LH~%NxO46RyQt1! z<>bK4GS{n|D=F%RgTC2CEM4uZ5&rr&UUO4bu*@aCWd#YqGbvZ0l#40|B@t2V9U1`S zK`$lQE4T@<1OpyHQ_?mD8Vt~YOM^QD+{$n-#x#>+kg*7P%pk^Lv4lKoJj@&aWf3;m zagyEC79UELd1Qg?S|_B=E{{zFG|<2wD6riLCj!lBcEKkS;WSkIL9AXXs{uEP*{S+- zZ~j~r4QB8MFI+XvYA&8TPVnZ;5YeAV>nLD-B$=pgSuzU=^O(yVSFQ$H(A+I_IKuEs zwRm~UAhTOuF`E`UGijh@h3s%SNo6MeA<9C2@?IV>iY(Q(s2th}$K_^S%0+Bq2E=f6 zLPj^sUej70J5KGe?ZW@+xXh(!t&6I$o*K5WSTxaNDU_IBun8{&TB}LugShX@2?`hk zyz}w$*rHu(Y!_|4V8@RjG=Uz7+5U7qK8x#K_W~!9K!zl6 z!V9R_ge5cp-gWU9Vb|O&s4&j@A+OU3Ru>Iyr2AKx-5>n0agUA_*HjLgo~( z1TorVbcXnY2BToW&y6n$DOezdl1M%c;;?KgKg$x*M?N%c0HsAhBl#L229KTZn%%zz z#!ubKWUu+q-IXOsYvq#SZ6pE_gaHx4U;MNa95etCW&i|5AOUqG{~*oUVq(kE%2?Ws)E4h+{>J}^A`=F%>oi~n zLr?^l%l`k?O9BZhqDs(5`l(nl&MWxF;u@ld+(hJFu8ZW$82;c7!T}2V?GM7s`-ZJK zL?9EMa0;XF2{iz3+7B+`fV%#`7^H9t#i0t9M+}LBWLj;`;^J=xM$`mOvf`rh=EEhz zY!BBDLh@`3jj++O4BHG&D_kaQWJ2nGkEAT)_qqsy>QD&f?2~?C{wnd{F6%9_sXj=G zq<-a!QtaX`5iYO|*A^`fF%g~W%n}#k{qCaoj84Je%aYo#E}R7ty9m#05iV3OJDi1@ zc=1n=>MqPdugFF6=BC;dPZ?pv^(+L$oU6nr1i=tx9duAx5J|*@B|=~XWn2XrmGMT( zB8dN3rMaR993N$o#1X;32vXE-c@T_U%#jhC?UF8W>J8z6W)x$|9yvnp$(HS-TGUS()>F*IFL7tsf0rh~&2Ggz`SJ=4p4vU6?#R6`^r zFvsvBsnbJ0lrTZgWFF`iH__VekZ**8s5U7tJx**KE6X;66amphmE*s?hkyczK~ZJ@jB6VmDULLx;;utg#K>1riz$C>fXTheUNVNAuvA1v2O8RFrW6WA$kGQ8$0WR`XLp zdv#Z9H5@(l>HI-R-y%94Ra&PNmXeg<2r()X@h22b&w_Al9J5l35L^FUFcX)G6+;Js z%9UmEX4K%#+ORFu-c?&O(O9&s)bNj9wM|~LO=T_-PRG@N-Y#?F>>D`pmxLd;^VQ%RzgVUHGRk0eQXGK&)Be73O~ zW3x%4D_xlMDS0O!(=Jr8*0`QFY2?&EHKaX7jJ=qXWF?gC^0OuyMNSLFc2@8Oo$FBG zMLnJCy<{&v(M!6@^H>(Lz#0@v>9k47G&eUaUc$B-)iYGz<-GsYj$98mED|#3-(bUHzAC+a+6nitu+N<23~U(NU;phMy+`vuy$4QhZqeA z@$7o(b}S0YPT9#tt5;-ic3({~Z-y6pFXVae<901pDl?Ik|r978Cmit-_BR5kzE>Z zZPBqNg@yK3Z-ZwKSr(LCW^aKJFZQDAfZ48HBx#Wz#Y`v*@`Brg9trYHTi8=?LaN|S z8(FnCXDF)>`S8qwKVGpSN4Db$3(r2<^9MPPYyvHmdHI zU)K#}$0~nER&!NNbnUf_Q`9I&wrC{w&h)nh?N1X^w_dUM0s-#Sniv2iH;M;&S{>Fk z>?IX-_cg&)i!IKMv3QN=RjvGWeR)=Q1GZhES9i%cV6pX@E>M0=R*}~?j90OZEvjVu zRf_}m65Z93N4b+P5s;slkZajUlT@$Vh4O~vgX?i3A#XpBm>wI&E9j0Jz39X&lpn(q zZ7FXYYgHlZvGtB9J6-rZr-+ zA<0!TB$^XXK6sUU<{2Kn##33-XmUibVQ*1TGm8|HdJNlT8BH8n4`%C;g@IX9I~eO) zwepI2vV3)c`zLJHd9UsNIqQfMJLy`BAn6Z@R#Dd)wyX1UiA%Kc!zsy?JI5u2_b;XY z^SCAxDbp#kU{a$aWjcsEEVWTPi&Lf}D?h;$lT=zj;d!8&E>FKSvNY_StoT8bn?iv5 zxD^w+mJ22gOjl{AW$-k-&l96bv!YLBmSbDK4bza5ia2-_6A7kA3ns?)yAA!DH~<{9 z0GXfX+rW`@w&@~C3h^=_5iNcKX9ty(<2b<}3Q#%BQMNR*9WY1sF(Ltqr4hOW$0sF0 zjAb!uZq=o0;}*R!Ydy8OIN4J>V^)NbC2ao`i2eyZb@R7T^1_31O0hX*>ibCk;0g~M z$(e0KC8shUFFwlu0y42NI*`>W0VpLA&ze#NMw~o%Xzy!^ID|E z%r69tR{O+cvK({#Zyvag(%j2o1%{2Y#C4Eetdh^iRFP;0A=6R9D|0%SIKf9W$rs%g zr#MEV+79QnMp@CR$5rF#veNOjjWK;P>V1%vkj6Esfv62&VGFYuaa(7Oa+w^ zdpq+>*?3|Dl>X8x9W9WdW7fSxd^YJgXaR_3)jQlfTS!P1e0k(dM;jsH+t%Zq*+le^ zhgjFc^H=r%RDs`PZ~^j~TyM*5Z*fh`Zjt+4;88k`C5AUu?LsUZlS_hA<=zWE;SV<+ zlc=&7Y;K=?An~1@m(p){^MdcRA9+>GNq$(w=bRayqKf60m2rS{a1#>!kmcRxsSMX^ zeiv0ybXl=xBR$V9uwE_B%Sh3bX*Z31)Jtqvm0g!Ej-D0yn~Hf|bx}6yL7COFIFDvm z)K?mK{g`yOdeQ8L0%(3SBPOvrGd z!-fzaN{mQxqQ#0BFKQIHsiVhDf5QC%K(eIClPFWFT*G z7=*|y2#JuXN>pSPC?P{BGRciXxMik}@9%!^@3p#n{j2|*wR88)8FKcyXYYOXw~yqV zgauLe_44t8$jHb*ewKb95;o+CCno+p1mf=xv4B7zJ0OZO1`s(ZCnKe6GKT-+Gh_}x zWdHg5Hff2@AV)u zSH3_XvY-Cf{X|s!#ngiVo+p2}Vt3Htpu_hXIS(L^HiBdh;_-d#|E=qLC;zPuzBiV< zfN1Q1#6db`W%fe0X~@WG$Vg}qsC1-q|Izn%xxQaA+hn)P$t&zoR8p2!=u(GllaZC( zwp~_EZo70sWNt{yA=@?NcI~k}Dz6zBrLZ?y>+sE6wL47Q+Xl6RMuB~H=PqX`D(UFz z=^N}fH9KH#VejDRQ_c0&e;FBStVd1ADqJN1w9~&2sPDxF>l8(80Ei)@S zCpRy@;P#!;vhs@G?p8jmdsP3J*wEP2-qG3B-Se!sZ-`2xGnl{s@p5c@VsdKw-OMbT z!~N^S$Hh-e%e*gNH#YfO;NRcA%OwMm{nwQJALY`J%C&9#cG>L;-{q3omi}FEjqP%K zY~^T#~L+w?~X*Swmol#Jsx-uu4!cI?DIYU}+@)yGY=LF|52{2|tq><513 zB>3yH(`m}})dw6BtkI{dbUt11TSElpaw2Oq|6J-hjT?_mwGL(Vcenqvu7!7rGRUR? zHJossS+Njm^jC$hT_osqVzhGExo~K9ZS66E^Fz<&AC5hUUxitd{CCVM`)EG$>HPf< z;d%vTAxx8T%6sRzOIH(}KZ1SE=!^GPMCb0e>E}4fCElpx46?|WpvEke$i0azbELLyXL)*M77HYBRA1c>wI0!)GWi`m#<;4xks>|-QtTb@@cTDtbSh`dkmob5!%D+}X+ zvlRp^v|i{t+UX`3aDS-`Ekww}4+&*?k5b|*kg=DyC@NxCP?tSI^LHHciH;p#--Ieh zyjz~Cx9M!YH*9Y5EaAjGV!*?qmZ0L}-j@C+vz4yq*jR-$Q8`54RvWnpdkf#UEyg}a z$*Fl|4{I%kAuuk zBWW$=Kg75l@0z%{S?IDZbZJ0dZ^jQfHGQhwKJ{g3w&imzI(1@d6LY@ni_ZK~nuY^4 zKUENeh{SYoE{L_pHvO-0-MeetN4s>|Ce~}tIDQSMiaJztDvRj_OHNL^W({ZVTwAIO z>?^RjyS8PYU^<`+HY+R^tjE=@r$? zIo_V@#K-xVd_8=kK}C4)AD7g!CSbn9m`nu*7MaI^!Q-tW{VT$T-&^%vCI#!~G`iPc zh*g0(+NlKfOkXOsO|=b=A8iRZQCn~-$0&^Op3_nExz*$J!Sb^iIr5K!Xw&ui_mg*T z?Dy(R=Iencv+DlvO=}3yHlM0D4<`9y&>i&$HMsht#Q#3L24LDtd&7ZMaxB{d)6dyvg7=rak<$_e9Ba8eSUG@qgZH^h1&Z;IVOBVd7#8|`-j z);Wt=_9J;X1Q^2OQV)Y9*4a#9FhDNm3?r4m4yvmJlGm^C0Mo`6kMM*NNONb{Ccz4U z`BSqoNNdTWe>}u|tiJfg$G~heeXm3KS^e{83qyJ%O{>oAckt?R4JHMUXyc^NBDU*c zet<^lFSm>8PW3vy4mlY-@Zh~}0IU=pR9Y8N=JhAxcf=0-pp6;8xXYHgu<$e~`!SF{ zgq&SxqlMPs5ea1bSA2F&du&nen!g01r1@$JXCi)ME1sw}OVXh}^agx3BoL!GE+@1c zZvKgE(m8Gz1O$PXMp|!l2%uOQ9$|GFI6ucGmXIwG^!Hb>r#KSGF8qb?CEO8UD??~g zk10G=z4a4#6`&5`HN`eUEN>(eXNa-%5ttI#c*O*$t}s6K0o{mB$X=jUs}rbV6<~29 zHMFVar^=uO#ocODUGeblH0(?JvZ-(xJ9a&aS`Y-DhC+{%ap8f>na7L;##fQ zOSE&fp?dkfrbOq7;`sT}4;B`YZ;~GqeM=t%dTQT2>Zx@?=08*LX$hni3F?Y7CRP5W zzbE9&{-!(V2p#%uX;(U?p@06F37Vj7tB7dA0myXvT7|-;>Cq1*zeKQ-<}v7KO)}c z)L|OgXxG&Gu;mS&#{G|_A>O&fAp2PVH@1y`I8G8AMSbFfxKV_h*Z>pFK*`wGs2zPY z19pF2Ox&!?wYyoASuhhI};YxijIVJi>ky1LNuts3+7PqLq3neB=>xyaS~rWvHWFX_Xbf!V+7Lvh`qYQ4R0s6Vk7U<$3r5tSzP|82!58 zw0I61FRDVsj?DVGkHM@3o>)cDiT9NXhfdw0T~o`2+Y1i?Ncs`wpLjd3q(@v%nDx5F ztx`KXzVSZZUa&H!HEFfRCZBd2ZVq(L;GDcc1(Mjx2@(iU?leToS>x1z$2ZpVq|di& zWHCRlNSUV_1X;w8$c$MtXXYm!l|Zsa{J{8qHEQEP)fTCH>FwKLw9<}ZkMep7YquQytUQloRSExxqm)6dy1oT>9W z0BVOSIhg#uXwYk#Uh&3S;4Dfq${~4M)Ak3v!G|_RrrCxh^o=$9I$wYrlo;6C+Py;D zPfX`?z=bHD89!09*p&1LT;QR8btE4Z% zrby_|MdUdys3%!Xdv*c*79L5e@f08o5#|Vdu)Tba+Vj>U zIhNbv$C=JSu=D^Bx{&qwVONV;d2oqC*%_dOd+ z{bTd4P0Z7-xc)vUXr?RFe7P`qjY-8IeqMOTP|L;b;lXcl6Y(!jh=(cLO@PQ=EjOGQ_kgGZdvk9{(lxT&>%3MDPYuNKS4QkTqrW2$&-HN@zJpTi+Vy%IrgrX{!ruw{}(Zb2z4c1u?uUIVEa@=`DVB;$$o z&KkAdKN;^~=qZX~50@K+$9c?5R4eJ<{#I>tUa87AkbZ(5LTxIYGTEDr-G_c1RIR3* z+i1nvRZy%|U(!^cODwL7sJ5u`VYS%}g=N{ME{U&z&3v|0h2&3x3qw+$(nXpH<|2zy zi%s~-;GKHR7K=$u%3n|wYOoh_C6F%s+UbYlk$F2{x)`R+u^}LIyL`HgphE!I%#c8K z;wLbuw zqNx1>`VeuyQ#w>~hwk&I1L-W_cnUE{55tnO^h?lRw#ypsvOHJwBcLqB~V`_kLx>9?Yza~hEm4vjG` z@UW7XKu5Da(y8U{B=aLQgm&F0Wa!@gLwBm7JY_02Zuvc*)U@!mZwIPhTGcY53-ft;xUY(#QR z29*n<%lH?R4V?!n76%^wsw5@bPg3aN?-b5rK1t}rLg|C#@rbFlO@u0%bmWoxN@W$f z>gq*oO4I{*)%DnM}oSm-$?Get9y=x7fG+18Jv&fm3~e9gb0UN`NlAfA!GBz~jA-mPYGcn46c$ zmw=u%vpSH=>7gUD$f{rx&yr?997Gh(>w`ym9<)pNpM|`L;+q zYe~B{oiXjj>&X`Cr;>LA^KIN?{mD(+k@CZ=Icq=06}%aKFa#%?fH%e|W8|4qOV&Zm zr=U?f7&XojW(jN$P>>`qeu>Z`%dgiqF>=;_6ia@(+Rc5=H$p&HzlIUPB0B2o|1sZ@^=4 zejjiNAmoaTz+kbW`Bi}(<{pi#^Olr0cLXoi7*P>os$eR$;Q1BLE?(l)UF}wiTJGtg zVbc!i*1YlM(yxjq>kl5^Zw0%wLDKWnk0i%aH>!Lu-+NrIq-PZwzt-sG<9wnqBK-d0 zTJv$?Xz=5@K;K7N#M`k~v&{vsJ#@?2%_AzmqLmWQ@iw*fSf#Z=Ar>bihZP9?v^c~R zWtT7&sK~~_u%@EwG!-{miWE13{wjq=ya5I=HvX{>`?`@DtC|Rqe0d?Q1J~iCq~?g_ zzHBCaT?LWL8sG2_8e29rO71dT+rRe2WJ2_iQclRF07&R;i>_B27%e#PS{mdfkKtK0 z&>qC<7B80Hd5?=4YF;A4#qSn$SH*I(7&AWM2A+*4VB>k2wAVaknz1r3saSz&Q-D(g zBoJn?UV#0AHt6PkLzAk$9PVl+)GU-vqNsFJP3aT#DPk>!L(qSR4F^zkBNILvTmim{ zcX)H5Gto4>)<#WcBph&H=HvDVKHc z!*wQ~v|w$TJ)@qKM&(=%3TY0c4n6tcA8?3{)TG~K1P5rDPiDJrOd0MUVtw`TYSBAa zpVQ*oZKHUz#I(xCd_322m;GO)Jo@=?^sW1i#H*>SiKhFjDR5^ae>aE@F+4-H(WEiK|vU6+Gk$Z%KSK>(Q_j zspG@yu7bG`=l4xj8oW+SvRL}ZZ2k}VgT>b>`!={<1L(j;gSPt6dgsaP`xXq%fiXKY{W9BxkoTxiBUS$?h=Gt0z?2UtY-#?1pyD%O_Iloc)^3pELv=SXy z*ypJgc*-FAKf_c13T^)%(9~ajAGU_pHRl!67Ua)h`nW$$tXr`t&p=NON&9F_$##*Tlk+J!;=@~AbTRk|Hx4@3vw`LVtF+emoNIAq=#A(oj~N)79)-$sZ^Bs%Ik-BmU^?TpCT=uhd3lTD=T<9sk$5 za;2}O)zu<9-R!0>=!6wpDr_6mafxYLI``yhGQo{XJk{BWuPqIGh3MQ`L$YgTE>qe2 zDi^4vLWDN#D38f`-!rI|Gp`7`Jiw$#-9i^nIS9PLQ|6f7icXh66k`kfHQ6F%uZdI% zB`t7r*G3Q5-2l;9ED%uP;BZw?v=(T*z-?;w2~^;byD87*u0iaR8I8) zu!@M`Qgw9GQK}cQQBBKY)lp$^shMK0XMpnUwA!HH`|(4SL+l2wZ5jGx16K)yRn^qU zp`F*e`_dUJw>xsz?*(9kfyzDBHN@E&B+BQ;9C9usxdi^{S7k7vNj-y`Fa(Gf}c zsqd91@o{RPmG0`O;2_om^acvK)48x{fXN}!2=W*=j&32`7#!xru4c3GT3BtMrUZKy z&uUTKqEAJdh#FFV6CYfz3x6v-{w+5P|BE4EHkNV45pGoZ5v3MOgDVo~u0vJ6w};%- zYaHFQo`wg+J+lBuqJsv`Sj9N#J@MLAX5K$kRM}WQTwV=#M&HSbsS0g?VbL!ST|H}t zIuzg|3dkroR&R-X-4IASNk2i%Yy_g4{Kp4h_AgBoA;J!jUY&IkE9J7zrZd|?sJo~V zkG{8J?ZLHK(-k;?nw%qyOu)?xOyk+`{~@|(4Yyo|?+5MJ%IoS_>=?{Xp2R(3$yzM5 z5gTLH8OC}*#b9wzN&>q^U5EsFimhRu>=uPZyb69WrjwL|2Lje-n)xizQ?VT8Ir}$o znEl*vL_H!NwF?oAmyJ*Pla%oTuYROZ>RHn{BWtx%IFK>Fo99)d)051y$rh_l_TLa3 zLkGr%@uhn=MeFrn#x;Wr5_%;-jocv;{ z_BV%3rRH7TRZ4H0gH@MKmhUaQ5TnRmat~>4>b*`6rq}!4zW>1hQ>5y)ohWx8?V+f+%ufCxHi&s3aZisdhl6W^kR*jZ#UIK#CUB@v%rb@r2Vi1?m-0k&7>(D5L0C zA|1fwx}%SUK@&KarCm$nJs_T^Fyx9a!6pKJLwKcrPfm?I+8`_!cD>mscJM2v%(2eB zWN-bF`+#0p5t?yw*CwyQE`4dvA>JI~@PeN-uy`r8TWi{X zj|(iM#)E8#n=(ECMzPn_Sh;J4fE2h~0X)u#9>BL_nB1@&vVNTOWe>7!6qa$aqp)ja z-ONFRPCuUWTI~!FK;oGVm2b_a(~!!Ty-=;Co&}&B>omZlWE2_iuU?>yfacI4wQScB zCPf)j!KN_&7RCtdK|_uNLLVutRv*KK8|x3OiSY#Fsa{isp~}# z1<7Hy%!|6`nNXv>Jet%PIiG*D90?6ac( zVe{#;XWRpSSiHlqcx4vj#a5=KshvdkF7&#JZ|QPa_!CF9nel+cX@=Lmp@wJkcEr52 z2KQo2k2HDVWsrsLdsm>|_)XUn=L_BuE3L3>l)|yz6AqMj0zRvQz&4{o)x>WX)Du7V z%K&~z3b43JQ<@&0|#k`6=)O*35Z=rvWmN`f*;{N`IkgnjN3 zbS9T;Q%p7!-VhD+Taqx92z3mUt-wTORcnJj@v3(p&d?u#ZuEtAo7KO0!9g8`C&umP zti8_=f_N1rLO)XdR^G+Uv+i<}URCjF^0#7$OZ*B0hqJyLRW9z~7felb!)861<<4iQ zHZNC3<6F}r_5P$Tf6c1X8>g}C&KRAd8daRT^mJ%f5m%p)oLuER`Dn8XeVLfsqCZyF zi}qxll@=Wd;Cr3kYvHHw1o5r;B$To*h^BA z8g+1?IW9u#&#dw1pxSZQ7ILx4JR}Wn0`TjipiDJGbRYlDB8c`^^=m%)7G{gRIDb9y zyzV+rjMb0f8wR$=7+f$qX2Vi&*GdgN1;c27_9s;I)DHo?Bmu=7!U zbC2UnFLo_*Y6?cWks3%A%v{7_#q$dtOgdr~8X_vZAl3zQ8S`=oWeFtVIjR8eC=J0E zL&0PsW}2Oz)q*%Lfy}xMI?g-1y@0cbtF{L4`K>?mdP-nM4~N;selMyK?UUANjS@&V zc26VbipqJvi_L7rsxEMcZBqc>1#*Vzh+V>HE+TtYZO!hn)Qa=E8(D&338XM`uc#H9 z# zmkSoN_Us7F$lAZQ%(VzfDY#dfva?66lzWJOJNX;gOfH*<)bJ~Rm($qq(e(74Lrzmy zQ)pvWqq%dxj%tZ&*3W-NUw}KgFve)F&wf3(G<@XMfgn=a>Y=Wtpjrc@W^uXY*NzuZ z0Qvef+k5Cn63d&4n#1!40OnvD`yO5vYYSe#QHP_W)Ke)p$=f=oYM*yX(S|g9!9p98 z01M+Rs6>DfE^vd>5yERcHOBP@nCzvg_OBFC9oYF0T$R>`I{1mKE}--yv36C-yzLGY+CUT&89X3?xoH7@&*7l&V3Pttj zFBIT+Gnsoh>uL$|&>b&g!5c&ZL3~)6DoFQjb4|~;k~%J|ov5Dk`t<5GB7fvn4+S`e z%+W3YV=?}+Z(k|Ev2E!1qFe{TAN(79)n70zi((DG zOrU1akHi0-=xtvOjrz3=xLXb{F?$$(|EFfZUCSeLFPljgjk6a!UbX%GvhmfEziaP( z#Jn22BY{-76fH%^Up{x~nQtfJi14U1NBI|s;#jA1-b-_l+G6K$Oc*z;h;km8A9)x| zBrXWejMbr<_!#S0R(UNTVD@>{2WE5j@~gx%zPJEC2%Zp1Q^PGR zgf<2@{L@&fHQL`xyiRp(U4vV@L752P_(&FBeVuHVK;8#-34R=r`r%n+Hi=%7f!D>x zL-WN@AC8TlP!p^LI3w&gWm3IcTi9un8i(BjBwo;DBIF~-y)$VzeUR`(c$62~O9CIF zitzetxIN;Mz>uJnX4f(cpOmzO?biXtr!72u<|meIV0@KTqUpmICy+|p{} zfry|_C6*eB>?Ze4Hf%rs342jt*dnbI*wpH+i*+z~cibA|URUOP?$Cs-dI8C|>X;D4 z)8y+)524tJb*K4TdE~vbcfu2lDTBE2U-oX$bFagl^WyCDG5lG;t0Z6HB(3S!o_^eH&*0Mnb6QvF6 zGK>#q(!%=u-50O zdHm<8cmq5+Fk}s#GTr#*Z=OBTtG{ouJ{THoe}Dh{;a3(Dbjr8uj{LWazHjUNv3l3g zWqKRL0B5Ua>l1|AFaEk3ppPGaA}7~(=a#2d=+D~!K7DdxLYnnjxg(a7Kpu2K;sZUk 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 zcmV-GBfs27Nk%w1VY>mx0B`^RA^8LW008v>EC2ui0J{Ol0Ehqo|Nj2|{r&y?{QUa* z`tGSjR z+1c6Q;o;HI(e3T+($do0+}z#W-RkP<>+9>&)6>`2*XZcz)YR1E6|u3g6ciMFeSM^)qG=UzwSi zm6erCOG~x2wVj=v=H}*vgoJo_c)7W`W@ctUKtL827KVm~G&D3E930Qj&vtfpJUl#C zS69l)%DlY1VPRoXQc`DUXNZW1prD|GgM%?KF{7iSC@3gBJv}5OB$$|(mzS45K0e0A z#z#j-;^N|OZ*QfgrG9>X85tR6Wo2k+XcH3?FfcH4b8~cbbVx`@f`Wp1d3nUd#Gam> zH#awIY;0?5Yr?|97#J8LA|f6h9)Ev-SXfxNxVTeOQ)y{wZEbBTDk__so0gWAA0HpV z!NDORA)lY0(9qB&B_+DLy2!}LtgNiFv$LqEs5Lb;si~CbfGBU2Nu7!n# zL_|bnWMqejhrhqS8X6ilHa12^Mmae-V`F0}DJg1dYIk>cE-o%VKR*!>5dZ)H00000 z000000000000000000000000000000000R8009UbNU)&6g9sBUT*$DY!-o(fN}Ncs zqQ#3CGiuz(v7^V2AVZ2ANwTELlPFWFT*`+qZDz z$~_BFZCkc#=jz?d*DchkfUN=^C|K&#j0&vkp&+dCN=h0a>WXWb*!4SncTLWiJ{-gTzqwiAd8nHfn1=LRq)x_E ziIf0d^rLSL{YRKfiZXhrPvqtQ>D)`%&|^qKeOxgkfOaP2A*$Gcirt z;tAiN#C9|)n^CzaP#?F@sX!mqaKLVuSzs8?n#i(fr#Wm|`;eLAvbtzN@xYf2r{=^n zS|#R;*>603#N#Rl5O;XXEyr#|B69=m;zcj zD|OTWbnLS^^u(PWi#2=y8ko3=p;)#>9Kfrt7Ay-Cj~4840JUKtH$Li}TZ%mu#YYd0 zk+IATOeO%og2=9eS5Z9>dX{>6pS&r+Xsz$U}R}=LRw?tfb&)^v^74oIQZjrGuS8B+-)YlwOl6_ECxVs)n z$e?L5r?hQBSjKF6vyLvT;Sl_%@AEBeOI-Uhqmca^%6p5!Ti*(DGsSSKAiV-zr#OYc zR}l~)1`HKUz=x2~T?uFOtA>bpv%V6!ZdN(ESj~#MVHL)ApQeUyEyPULx9jA z*#O|_1Zc&+eT^iAtJgqAr64&$ksuK?M>Ps!wF*`wgWXG_^@2z@MImQk0~rGIq!<(T zz|UfzBZ!U&qJ?UBY#@DN7FEhO#yzeCk6C$1u6S6uco>FVH47cPtQSL=9Fb^~y21;2 z1*blpkYPTvQtHBFG~7@TQ7KW>hYFJgN4CjUF~eJ+-1A6RK4y5-dXO1o(x+s0>uO_U z*=Vv+4Tcp?ng?>89VdeS$;`bZ3n1eZ;|h|E#dQpv;^dLmrp2LqEo?^%RLT1+s1k6h zNec&AKGwM@Ca!M{Kb*eHH4=%9^5*!lbqg=&EH;)!p-%zny zW&Mak(@IsaW|FNRIjdXY8j)_!m97sND}Ahbm$mfeuUsi9xR_(o!k#BThozlj7pqt< z$(65I0jy-nVp78Y8WypP&8%jd<5d(URV!MVtY|w|+0tHirkYJH?V3~7y(WY}J&LW5 zWJ_Bg**3Pg#qDfo%fH_G_P4+du5Wpp+uri_w#MZja(A0t<1XZ^&2dj{WqaG|PItJ< zrEPJA8(iXYH@nycZ+5M#UF7zbwUJVnil%E@>$+FG&1LR(ze`{G%2&7Jy)Jo`i(Y&w zgk0&t4|-Hf;Kf>&um~<~f=SEZaOG6AN4up|j|pIM4YJhv0xFdS~?2n1_*dc4Avu`!B z+1xr|B}b(H$WFG1kE1MQVF{Va+kq~Y?^xn3Q>3+5K1hZIoFDv{`NAiz@QK$P;5PHe z&2NsgoaZd({qSc$c3#h&_pE0<7f2xz7EWSSOXf458O;M;vzpudQ?Jqa(U5+$ohR+* zKI3^koLwesR$S&pt60E?Ry3O%-RMZ0y3Tv1^rcr_>HcaEgY~VicbQ9T{MNd?u*Efj zcD?H!<=WTO<+ZSfP3&DG^)Xt$(Qm!W-TUTNzVD5;ud7RJV7J%W*DkiUi*4nBV6w>| ziZyVZP2A&x_r10KwXm&CU3OD@+S`tIx4XsU=cMItjj>F=SEX;ktO~6c3>yJ)e6&-7 zJF<5F={Mj6{dFU5a+j-OnK~@dbuu51?kBl zGUb)$wd4nMIYfp~E}2g(ss!gMlD%nj>?FJA3u!sfUkmdbUVJQqZLo_Id|FOBU9pN* zv(zn|W}qsvID$qxh?5TE4r3OzPhTvk5p7{lR~^x7cJ;rLO4$c1z3VRide~QdXsV+) z)Sgy55??Fs=K6iU=g#kb@!NOd-WS^C&9AQ=dq`#5_wkT7x8MU$`0kE-+2KXJt!0~O zqo1hoh8OqY39ot3XFk4(Cw**LTW>CXed&Uo@r*${TD;&pFSmcVz8zk0!8K>5afdy& z?Pp(muk=;p9=DwCMGo?V{Mq7hdhumre9{jW->(S=oc3>@@s0~T=tWog&=-_)&yN2f zJHPA7gS?=eW0mGHKfm+4EdTk}rTzedGX778^Zk>v^*#3-r=)&47BdX-eCD@h^}&7s z@_UYUY7hu%s%B{vNNJU}YIqiJ8n}VLR&p+7fUFULBFJYIc!8;Af+m=O12P~R*n-uz zYwChz;C3ISHi9C^Y9)w+tcHOZ=z<*hf_neQa|n?v)HZDJ)@!-uUPb7G+{SAwXn_{k zXE~UHQs^~;c0^k>F1qG|*cNO@$b=gBgqKEvl~#rmh=X&+S^xB3?bd=_sBTLLh8y^V zWJrc*ScY$wXB9Vu;g^6;)qNZXS3egg9JhRMm3~C?ae#bg@ClK)GdH%N^f4F~* zD2e+wPha(j-WF8^=w)Emew+x2J2r|t=YCUli6F>!dck$n=V5Tyb#ph16~=fgly$8* zSg{9-ycmmvMvDYCcJqcTYj|{S;fin9i^>>_g$0aImtr?nKz*2G29Ye7XL_;5Y}m+N zm8Xr{I9{yRQwwr>-&l@-XL;!6Z0G;@U9%R0n)Z36w~gLtj@ejw@(5pNRS-MJS4@&w z!M9;BMq@E{eP3}G-M4(rmw$~HeJu8Rz_*KTCt@--TA_82`F3yA2u6_-T@49#%Sd|! zITi+~aG-^e0yvG}Hhu<&ic3X_ufvkxp^AQ3e;+uL^@oU~D3ck9e~~DDmbj6lh%D0x za5Oo9L5Y)`sFQ@kBxGiGiw0me2!VPSXL)vqR;hw=Xl%_fhyZeSb~kDd7?om)YE+1U zV#tD7>5iYFE`j5fqDF&oHkNcYl@dsmCuo)gf|hcqE;>n+rxSXJr-VuPhVM3*>z0II z$bx4{mU;+<`xrAuc_Ygec+&rNn1&f`g_&(z*n)nBl~U-Kc^I1IhknHfkI$xfw|0cn z=5Fa0Y`pe`OsJT7nU{7+f_Auv=!cT_wsx4|7|Zc*Fj*5lX_L&?n-ce%5vLt4$(w|j zoF4aw$>}o2nG*;ogpa6ylh}WzsGFmxW8#>d%MqN_(U;;`9mBbk@+Wlur<81YT7&kB zv)GiKW_MqCcb)c@aVeMKxQYKIeedav!3d2~muB_JXa*{m!-$*F^^ca-i~yQhQHOVL zIiQP%ptxC$L&;iyXI_&jUh{a3m#2CnYHpSJnptU!t0-ocr+D2+kL0Lb_L!QO>4qj6 zgVr;H_!wUH=%T1cd4c~qd4g%8G@6eDp_B^>l6w(a+J_h0r*Re;hz)l^il~Tw`G1bs zfL$SxZ=s}1x^cKSRF^@eQEGtCc^Orzk9*W)ZU+}!ihUS|a3h&}-Uk`a>6-y(hz((+ z-6>&5shynom|?b_zGsS~`H5Rron*y{?oo5wS&8@us0(7KO7WY3D5e1iMuU17(Ybb( z>V0!6aeTOz<%uW2*_#jNsb;E?_a~Wid6&1jgBOUESy^n@wuEh{ncP@iToRda5^0VJ znpSz1v-*QbSgg2enCxYvj!GDGS)0JhXTfT0!%C|!D5Qj0nX9J|klKLSYMIk2o1WRM zwONOuX`yolm*_JZjjvUTadNBE+JkgBhT{5}wpo?t`e^Bzprt8h-ukZ6x`F`Pto916 zqB*W(36};cRMP(_As;oWOW~dT`KNxGs4KUvSL%P~nUX+vaxFvk>Z(^jV(; z`haTavQ@E*?isX9N3;cocQ|WkJ1b|M_Yg4{df&)w>DaZ+24AxVq(Dj_`^lV#B5R;W zZkxA`VB4XR2e)46BkGl=f)=7WdXHbrqvXi8x$2ssNR0kvj1Q)zA=#vP;iRVuauGMC zhZJ2Qi=|1&V28`3af*;nimD)(klos`D+G~iTDeVnk)(^crV6T5s;%6albK4g;hB>y zo1&Q*x%>aOoK@7Qm0_|`ma#{C0xyh>KQXDSdD z`<*LwuLMi5uo|sAsF%|Uo7PGo&(*qJd4rPXs%2@0DaeCz=)H*9ukEF*o_kE>>#OB@ zzVaHYV(71jnQlf1TYMS2#EC4o`i9r4zr==?Cz!x@NUw4kzSIku?dz^_=&#(1z|XqC z*Q=kZ`@mY*zkr*W6fA7QN`e>cs`CngS(`_tA#(l*YQ6QF#uwPUgQBfrdySH( zdYbp6n908V>%OzPtL!?Ch3B;_Dx-;qt(&QBU$~mXy0j6i$f5_LqeotjJjg;S$=f!` zE@;W6@v}R1%9m@A(0jUey17tVEn`X&D`{0=(H0dsy3G5j%j>wO8>Ti45=1P!SgL$t zvv9k2%!Sy>#@Tqyx5^U&yd!s=$Sblps8&3E9}n3Owh;YSGSUk z&=rVKKL5FN^e>~6=(jek3Mn+(6+d?>RitQ}pV z?Tc$|IMSz?nr*9FCY>t(<%H6z#UzZ!Cv2_=YsOPIp9SW?@!KsuXqL9gnDuJMkoMDO zH=#Kj)rfV|Yq_i7ih^_YtLSUTKee+IiefeUjQ-fUucpn@Y{ce#lmDxW#PqDzuluK? zNwH?V#OHS)bUl99%)`uN3@4+ zwNgFD`Dw?KR@3CXX@xDdVJ&v^ImZZl*_eH2daS}j=yzk=qV;%PBI?JvI>8>DZQcuh zd_5J6+@WCWqo}!}o&2tpENpdK#A#b@BJHBu7`GPv(qLGtwJO|XT^Y2Tq?qfaQ(CIL z$DI1yV~N~;+EdWgoyv@h-SXki%X<+c>)ov5r3PK5xvbB~nYka4*PES`CFZcb;n(PS zelomwY<<^&?Yp%*l)CF=+x&?79nLZr*!<`e`JCO?t+-1Xz5ld(6cO&JnyY(=`zZq6 z6c3Ki@m!K$N@DJF)3^Dm>1)8(3b?9C(U3fOz(%BH5_thR8HNtDUL9D5%v{ zc;ye6<#JqRDXiB3;^nhh!uC7nWS*~atY&F`96=1=K$qb7eH;BP*gtvOc-`S@y{bvs z-9tQ@3hr`!-r)W>&M4)7c74g&sV5;g=VMITWL||jn8tY7=AKS$LHH?_KE;_{mmJO0 zU!K#dK5WBX)NMKHbS!6#ZLU#B<@UORM{VT9*6OH@e*csS(@DO*$lB7wdcJsQuR(X# z#f^GPuHwTU$zeEb#y*B7sM*o=$iObjggo1DSnSe1W>#!%rH^N1;&B zmErCD;B^YU>RuFj9=z_I%jfON%Dm?pvFHsgsDM6nk^a|!P2eocwBuLr+#J`gRp@x$ zbNXH2O2**-g(`Gfst9QrZkl~1DdK%0jRB7sARgY}9pc%y@ilfLh(0v!-roCsdleMEzy;)K z>R37dy>nZb6|MBTrS(w{qeCBSn!ONgS?gDB=16Y_>t%Pdv^cW>8R~+z)LdQWbg$(C z`q^`LV2ZV1RPE|_Ozjqm_M>i}Qkz)+_~;l4&ipPL2M+0l8k7TX)36)z5O24msNer` z4e&*s@GT?pMn>^$cN;9P-M>8JX&o8zzRVzw@npa9nvwdeSmGG2^0I#-w0^y~e$_eN z<8ljI>=xq;U!-Of_w%dM91XAf3vZ&VYpu!qw8iVCe>qXvn7EI>O}NrU`1`#-U1MMI z%BGox9OWr}C%}5Ya(SDRq9lm19d{BnpOX+)}cF7 zZUq~5YS)=x#hyj`6X(^mZQaHk%J%JCx*(m>G+S41TB|6r?gdPhY)GSl4Ra-0_Akh< zjRAa28Cmk=#*iOBhD=%WX3mm1O#Ynmb7%#jO_xSJIyDE@ty#nD8#3?7%9$}!#+=)+ zW!{~A|0b~**-L@y+{+%7P=i|hYcSp{;wD^~IXBJ+` zVMw<1?b{1n&tCp~_w0wHAVC%3n{dDSF7&TO4>zQ-!vX&d3^BwR(L1TR zn4VLhql<u1d{d<8d~fh~%$(nHZtsNeJ(Cb!BVMNUxSquT4Ae0wlhE#TWlzSw&k{4Z@Ybuz6UW( zP+W3lZ1LRwT$HiDAr{QFL6^Rzw_XY36Zb_7^W}Hl7yV@y;1&Pfi?>Hjb7M(?dKb2L zTYLpRcie#?tPov)^&NN!PDeTzreq%iSs{o-#;9bIE8+;DE?1V*PCQ?34NFsL8@XnK zL|&+&lXo_mBaMDmx#c61gc;9d57rW;h;n`i=bL$kdLo~t4jO1Khb|iC=Rk#P)l~~k z+UrRb6?@cHUD~+pM#1h??Y(?l&h1N;ElX}pOI_CPM#B z!+(Ud+Q?3$GSBc<%UVo2ulAC)mbWfAY+W7q&bTQhFLONQDsPg`%QF|c&Ab5z9rDwH z3w`z|l`|c6*H+iO_o3xXd()0x@_f@8kM}Ug|1z90;~1}LRGz~OF@$$!oe`-3`pwt4ylkF&vo$@{ zsW;X6m1U&0KnHa$SyGbH|Dr^h02UBg!HUjqfR(^#!9;y%gJ1+nM;g&_$AShtUQGRG^I>2V<`o+TF)M!qoDl=FmX;{-ZAdGk z6Qlov#2%$3NXl7A6n~NhEds?OuM3NK;53lnQAJ@~bjt_Dayx@`ktbQWj~jc!L*}G~ z1C`K1HO$e6KE%Tu)ffU=`f!W=xdn)89D*ULaf^8L0gu%%L>ZY9k6YY=9@Qu$TGS|( zJ}9ypjl?4(<@h5?TGAYn97`adm6j~f!yF~yfH|(v2ToRl9+_mN1KnbXTZW_$t{mk{ zDzQg6RuY$C86p^wsRepeN&%I)f);}5l0IkwCzYUwA=*MkWg_zy<`~H(rwO=tRAP|F zJj)@`!b@B-Q5LSeFzO*>}Wn2 z6E~E+COtNFkVW~T%eGV$mwmWGJP5Nf^3VpSNtDe?>q*32$}}X{H0h>@O4FL65+vqK zqe^>dP=tmg3%97oM-rJwj$X8p@h}7zOY+RKMs;3BN(~cM=8&u%Ra!i)@KUXhrH4>C07!+=gQE(lMpWmi1#_4*wML1DKob@Z_PWxl zOyTC|+@i-URCBLHIVeZJT1fK3@)mu_h+$iU&&AA>rC^aO;?RQ4J_z=Yo&|s+O9EYx z7&s&W^$2v4G=wW0mZYaNXh?f{%S8SWumB)$NWu$}LFQ_&9{D7afO=q~aM-wKiSLQH z8dki{{%@Md&T51gGIMuVK7UwV9nzC@{}A%ZKW{kX_F+lVo%(>(-p#@%)2*(L;$5~OpZ@tJ5hggKgQ z7e&+NaVwX1KmC`HPoWV2yr(kk^B7&meDS7gy}c%9RF%;hB#(wnNKK|Gb-ps89Jtl?(V~s(stnUESHl8*2~o?#k{m_w%_8K%LRGt@&hoDXxE7=U@c$Cwj1j6b7&W{XHhhsDRGJTI9_?Wsi;mpc>PBpIAr8t$iyKF8ghq>d6=U(n6oSTYbjE0G zqSc$maonJH47hN-!hF=nedNb}^v8b$Jjj3)$blrtf;7m3M973x$c1FchIGh>gvf}L m$cd!LinPd!#K?@)$c^O4j`YZn1j&#T$&n< Date: Mon, 23 Oct 2023 08:36:42 -0700 Subject: [PATCH 109/275] 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 110/275] 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: - // - // - // - // - // - //