OfficeIMO
Fast and easy to use cross-platform .NET library that creates or modifies Microsoft Word (DocX) and later also Excel (XLSX) files without installing any software. Library is based on Open XML SDK
Install / Use
/learn @EvotecIT/OfficeIMOREADME
OfficeIMO — Open XML utilities for .NET
If you would like to contact me you can do so via Twitter or LinkedIn.
OfficeIMO is a family of lightweight .NET libraries for working with Office and document-related formats without Office automation or COM.
- Word: create and edit
.docxdocuments with a friendly object model - Excel: read/write worksheets, tables, ranges, styles, and reports
- CSV: schema-aware CSV model with typed mapping and streaming helpers
- PowerPoint: generate
.pptxslides programmatically - Visio: basic
.vsdxgeneration helpers - Markdown: builder, typed reader/AST, HTML rendering, and host-oriented rendering helpers
- Reader: read-only extraction facade for ingestion scenarios
Each package is shipped independently under the MIT license unless noted otherwise.
Project READMEs
- OfficeIMO.Word
- OfficeIMO.Excel
- OfficeIMO.GoogleWorkspace
- OfficeIMO.Excel.GoogleSheets
- OfficeIMO.Word.GoogleDocs
- OfficeIMO.CSV
- OfficeIMO.PowerPoint
- OfficeIMO.Visio
- OfficeIMO.Markdown
- OfficeIMO.Markdown.Html
- OfficeIMO.MarkdownRenderer
- OfficeIMO.MarkdownRenderer.Wpf
- OfficeIMO.MarkdownRenderer.IntelligenceX
- OfficeIMO.MarkdownRenderer.SamplePlugin
- Converters
OfficeIMO.Markdown.HtmlOfficeIMO.Word.HtmlOfficeIMO.Word.MarkdownOfficeIMO.Word.Pdf
- Reader
OfficeIMO.Reader
- Benchmarks
OfficeIMO.Markdown.Benchmarks
- Release prep
Website
- Public site content and GitHub Pages deployment live under
Website/ - Maintainer notes for the website pipeline and API ingestion live in Docs/officeimo.website.md
Package Families
Word family
OfficeIMO.Word: main Word document object modelOfficeIMO.Word.Html: HTML conversion helpersOfficeIMO.Word.Markdown: Markdown conversion helpersOfficeIMO.Word.Pdf: PDF export helpers
Google Workspace family
OfficeIMO.GoogleWorkspace: shared credential, session, Drive location, retry, and translation-report abstractionsOfficeIMO.Word.GoogleDocs: Word to Google Docs planning, batch compilation, and export helpersOfficeIMO.Excel.GoogleSheets: Excel to Google Sheets planning, batch compilation, and export helpers
Markdown family
OfficeIMO.Markdown: markdown builder, typed reader/AST, HTML renderer, front matter, TOC, callouts, and query helpersOfficeIMO.Markdown.Html: HTML-to-Markdown AST bridge targeting the OfficeIMO.Markdown document modelOfficeIMO.MarkdownRenderer: WebView/browser-friendly rendering shell and incremental update helpersOfficeIMO.MarkdownRenderer.Wpf: reusable WPF/WebView2MarkdownViewhost layered on top of the generic rendererOfficeIMO.MarkdownRenderer.IntelligenceX: first-party IntelligenceX plugin pack layered on top of the generic rendererOfficeIMO.MarkdownRenderer.SamplePlugin: sample third-party-style plugin pack showing shared visual host rendering plus HTML round-trip hintsOfficeIMO.Markdown.Benchmarks: representative parse/render benchmark harness
Other packages
OfficeIMO.Excel: workbook, worksheet, table, style, and reporting helpersOfficeIMO.CSV: typed CSV read/write and schema workflowsOfficeIMO.PowerPoint: programmatic slide generationOfficeIMO.Visio: basic diagram generationOfficeIMO.Reader: unified read-only extraction facade for ingestion workflows
Targets
- Word, PowerPoint, Visio: netstandard2.0, net472, net8.0, net10.0
- Excel, CSV: netstandard2.0, net472, net8.0, net10.0
- Markdown, MarkdownRenderer: netstandard2.0, net472, net8.0, net10.0
- MarkdownRenderer.Wpf: net472, net8.0-windows, net10.0-windows for the WPF/WebView2 surface, plus shared helper code on net8.0 and net10.0 for cross-platform validation/tests
AOT / Trimming
- Reflection-heavy convenience APIs remain available for dynamic and PowerShell scenarios.
- For trimming-sensitive workloads, prefer typed overloads and explicit selectors.
OfficeIMO.MarkdownandOfficeIMO.MarkdownRendererare designed to stay lightweight and predictable for embedded/document-host scenarios.
Dependencies at a glance
Arrows point from a package to what it depends on.
Word
flowchart TB
WCore["OfficeIMO.Word"]
subgraph Extensions
WHtml["OfficeIMO.Word.Html"]
WMd["OfficeIMO.Word.Markdown"]
WPdf["OfficeIMO.Word.Pdf"]
end
Angle["AngleSharp"]
AngleCss["AngleSharp.Css"]
Md["OfficeIMO.Markdown"]
MdHtml["OfficeIMO.Markdown.Html"]
Quest["QuestPDF"]
Skia["SkiaSharp"]
WHtml --> WCore
WMd --> WCore
WPdf --> WCore
WMd --> WHtml
WHtml --> Angle
WHtml --> AngleCss
MdHtml --> Md
WMd --> Md
WPdf --> Quest
WPdf --> Skia
Converters ship in-repo and continue to evolve before broader release packaging decisions.
Markdown
flowchart TB
Md["OfficeIMO.Markdown"]
MdHtml["OfficeIMO.Markdown.Html"]
MdRenderer["OfficeIMO.MarkdownRenderer"]
MdRendererWpf["OfficeIMO.MarkdownRenderer.Wpf"]
MdRendererIx["OfficeIMO.MarkdownRenderer.IntelligenceX"]
MdRendererSample["OfficeIMO.MarkdownRenderer.SamplePlugin"]
MdBench["OfficeIMO.Markdown.Benchmarks"]
WordMd["OfficeIMO.Word.Markdown"]
Json["System.Text.Json"]
WebView2["Microsoft.Web.WebView2"]
MdHtml --> Md
MdRenderer --> Md
MdRenderer --> MdHtml
MdRendererWpf --> MdRenderer
MdRendererWpf --> WebView2
MdRendererIx --> MdRenderer
MdRendererSample --> MdRenderer
MdRenderer --> Json
MdBench --> Md
WordMd --> Md
Excel
flowchart TD
Xl["OfficeIMO.Excel"]
OXml["DocumentFormat.OpenXml"]
ImgSharp["SixLabors.ImageSharp"]
Fonts["SixLabors.Fonts"]
Xl --> OXml
Xl --> ImgSharp
Xl --> Fonts
PowerPoint
flowchart TD
Ppt["OfficeIMO.PowerPoint"]
OXml["DocumentFormat.OpenXml"]
Ppt --> OXml
Visio
flowchart TD
Vsdx["OfficeIMO.Visio"]
ImgSharp["SixLabors.ImageSharp"]
Pkg["System.IO.Packaging"]
Vsdx --> ImgSharp
Vsdx --> Pkg
When do I need what?
- Creating or editing Word documents: add
OfficeIMO.Word - Word to HTML: add
OfficeIMO.Word+OfficeIMO.Word.Html - Word to Markdown or Markdown to Word: add
OfficeIMO.Word+OfficeIMO.Word.Markdown - Word to PDF: add
OfficeIMO.Word+OfficeIMO.Word.Pdf - Building or parsing Markdown directly: add
OfficeIMO.Markdown - Hosting Markdown in WebView2 or a browser shell: add
OfficeIMO.MarkdownRenderer - Hosting Markdown in a WPF desktop app with WebView2: add
OfficeIMO.MarkdownRenderer.Wpf - Hosting IntelligenceX transcript/chat surfaces on top of the generic renderer: add
OfficeIMO.MarkdownRenderer.IntelligenceX - Benchmarking markdown parse/render behavior before release: use
OfficeIMO.Markdown.Benchmarks - Excel read/write and reporting: add
OfficeIMO.Excel - Shared Google Workspace session/auth primitives: add
OfficeIMO.GoogleWorkspace - Word to Google Docs planning or export: add
OfficeIMO.Word+OfficeIMO.Word.GoogleDocs - Excel to Google Sheets planning or export: add
OfficeIMO.Excel+OfficeIMO.Excel.GoogleSheets - CSV schemas and typed CSV workflows: add
OfficeIMO.CSV - PowerPoint slides: add
OfficeIMO.PowerPoint - Visio diagrams: add
OfficeIMO.Visio
Markdown Release Prep
For the current markdown package line:
- package docs live in OfficeIMO.Markdown/README.md, OfficeIMO.MarkdownRenderer/README.md, and OfficeIMO.MarkdownRenderer.Wpf/README.md
- benchmark harness lives in
OfficeIMO.Markdown.Benchmarks - release steps live in Docs/officeimo.markdown.release-checklist.md
Dependency versions (high level)
- DocumentFormat.OpenXml: 3.3.x (conservative version ranges)
- SixLabors.ImageSharp / SixLabors.Fonts: Excel and image-centric packages
- AngleSharp / AngleSharp.Css: HTML conversion layers
- QuestPDF / SkiaSharp: PDF conversion layers
- System.Text.Json: markdown renderer host helpers
See each project .csproj for exact package ranges.
Licenses
OfficeIMO.Word,OfficeIMO.Excel,OfficeIMO.CSV,OfficeIMO.PowerPoint,OfficeIMO.Markdown,OfficeIMO.MarkdownRenderer,OfficeIMO.MarkdownRenderer.Wpf,OfficeIMO.Markdown.Html,OfficeIMO.Word.Html,OfficeIMO.Word.Markdown,OfficeIMO.Word.Pdf: MITOfficeIMO.Visio: license still being finalized
Third-party dependency licenses are gover
