Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package...

18
Transform Open XML Documents with Open XML SDK, Azure Functions and Microsoft Power Automate Tom Jebo Senior Escalation Engineer

Transcript of Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package...

Page 1: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Transform Open XML Documents with Open

XML SDK, Azure Functions and Microsoft

Power Automate

Tom Jebo

Senior Escalation Engineer

Page 2: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

What if…we could automate?

Goals• Allow presenters to upload their slide deck

• Automatically process the deck to change the theme

What do we need?• A repository for the decks

• An understanding of Open XML File Format

• A way to programmatically transform a deck

• A way to automate the process

*http://flow.microsoft.com

*

Page 3: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Agenda • Overview to Open XML File Format Markup

Languages

• Open XML SDK

• Demo: Transforming a Presentation

• Tools, Support and Resources

Page 4: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Brief History of Office Open XML

2000

First XML based

format used by

OfficeXP

2003

Microsoft Office

XML format

released in Office

2003

2005/6

Office Open XML

submitted to

ECMA Int’l

2007

Office 2007

makes OOXML

default file

format

2008

ISO/IEC

29500:2008

published

Page 5: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Support by Office Version

First to support OOXML, default format

ECMA-376 support

ISO/IEC 29500 “Transitional” r/w

ISO/IEC 29500 “Strict” read

ECMA-376 read

ISO/IEC 29500 “Strict” r/w

i.e. File | Save As… and choose “Strict Open XML Presentation (*.pptx)

Office 2016/2019

“Strict” r/w

Page 6: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Get the standardiso 29500 download

Page 7: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Parts of the ISO 29500 Standard

Parts

Reference

Part 1MarkupFundamentals

Packaging

Model

Part 2Open Packaging

MCE elements

and attributes

Part 3Compatibility/Extensibility

Namespaces

and elements in

transitional

markup

Part 4Transitional

Page 8: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

WordprocessingML, SpreadsheetML, PresentationML &

DrawingML

Parts and elements to get started:

WordprocessingML 11.3.10 (document.xml)

17.2 and 17.3 (body, paragraphs and runs)

SpreadsheetML 12.3.24 (sheet<x>.xml)

18.3 (Worksheet elements)

PresentationML 13.3.8 (slide<x>.xml)

19.3 (slide elements)

Schemas: Annex A – W3C XML1

Annex B – RELAX NG9

Primer Annex L – detailed intro to the ML’s. Use this!

<w:document<w:body><w:p w14:paraId="2673269E" w14:textId="522FD3EB" w:rsidR="00BD0355" w:rsidRDefault="00BD0355">

<w:r><w:t xml:space="preserve">This is a run of text. It is part of a paragraph.

</w:r></w:p>

<w:p w14:paraId="43453C87" w14:textId="3F744A5F" w:rsidR="00BD0355" w:rsidRDefault="00BD0355"><w:r>

<w:t>Here is another run of text in a new paragraph.</</w:r>

</w:p>

<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml<dimension ref="A1:B4"/><sheetData>

<row r="1" spans="1:2" x14ac:dyDescent="0.25"><c r="A1">

<v>1</v></c>

</row><row r="2" spans="1:2" x14ac:dyDescent="0.25">

<c r="A2"><v>2</v>

</c></row><row r="4" spans="1:2" x14ac:dyDescent="0.25">

<c r="B4" t="s"><v>1</v>

</c>

<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" <p:cSld>

<p:spTree><p:sp>

<p:nvSpPr><p:cNvPr id="2" name="Title 1"/><p:cNvSpPr>

<a:spLocks noGrp="1"/></p:cNvSpPr>

</p:nvSpPr><p:spPr/><p:txBody>

<a:p><a:r>

<a:rPr lang="en-US" dirty="0" smtClean<a:t>Fancy art from the internet</a:t

</a:r>

Page 9: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Supporting Open Specifications

[MS-OI29500]

Notes for Microsoft Office products implementing ISO/IEC 29500

[MS-ODRAWXML]

[MS-DOCX]

[MS-XLSX]

[MS-PPTX]

Extensions to the DrawingML, WordprocessingML, SpreadsheetML and

PresentationML standard elements defined in ISO/IEC 29500

See reference note for URL to MSDN page for these.10

Page 10: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Open XML SDK on Github

Page 11: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Open XML SDK on Github

Github

Fork, build, modify

Nuget package

Release and latest builds

Issues

Report bugs

Contribution

Enhancements, fixes

Page 12: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Common Scenarios for each Markup Language

Generation Extraction Transform

WordprocessingML

SpreadsheetML

PresentationML

Page 13: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Best Practices and Getting Started

XSL Transformation using Flat OPC

Use Templates (Office)

Use Reflected code and modify (Productivity Tool)

Use LINQ to find target elements and parts (.Net)

Real World Usage

• Microsoft Open Specifications!

• Microsoft internal/public

• Many major organizations

Page 14: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

High-performance extraction, modification and

generation of

Page 15: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Demo: Transform a Presentation using Azure Functions and

Flow

1

3

2

4

*

*http://flow.microsoft.com

Page 16: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Resources

Page 17: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Tools

Open XML Viewer for VS Code:

https://github.com/yuenm18/ooxml-viewer-vscode

Open XML Package Editor for Visual Studio:

https://github.com/OfficeDev/Open-XML-Package-Editor-Power-Tool-for-Visual-Studio

OOXML Tools Extension for Chrome

(search “ooxml tools chrome” and install in Chrome)

Open XML SDK Productivity Tool

(search “open xml sdk 2.5”, click download, OpenXMLSDKToolV25.msi)

Page 18: Transform Open XML Documents with Open XML SDK, Azure … · 2021. 1. 21. · Open XML Package Editor for Visual Studio: OOXML Tools Extension for Chrome (search “ooxml tools chrome”

Support & Resources

Code for Transforming Documents sample: https://github.com/InteropEvents/TransformingDocuments

SDKOpen XML SDK

https://github.com/OfficeDev/Open-Xml-Sdk

OpenXMLDeveloper

http://www.openxmldeveloper.org

libopc

http://libopc.codeplex.com (third-party open source OOXML library)

Transforming Open XML Documents using XSLThttps://blogs.msdn.microsoft.com/ericwhite/2008/09/29/transforming-open-xml-documents-using-xslt/

Azure Functions

https://docs.microsoft.com/en-us/azure/azure-functions/

Open Specifications

[email protected]

https://docs.microsoft.com/en-us/openspecs/

tag: openspecs-office-fileformats