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.
- OfficeIMO.Word
- OfficeIMO.Excel
- 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
OfficeIMO.Word: main Word document object modelOfficeIMO.Word.Html: HTML conversion helpersOfficeIMO.Word.Markdown: Markdown conversion helpersOfficeIMO.Word.Pdf: PDF export helpers
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
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
- 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
- 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.
Arrows point from a package to what it depends on.
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.
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
flowchart TD
Xl["OfficeIMO.Excel"]
OXml["DocumentFormat.OpenXml"]
ImgSharp["SixLabors.ImageSharp"]
Fonts["SixLabors.Fonts"]
Xl --> OXml
Xl --> ImgSharp
Xl --> Fonts
flowchart TD
Ppt["OfficeIMO.PowerPoint"]
OXml["DocumentFormat.OpenXml"]
Ppt --> OXml
flowchart TD
Vsdx["OfficeIMO.Visio"]
ImgSharp["SixLabors.ImageSharp"]
Pkg["System.IO.Packaging"]
Vsdx --> ImgSharp
Vsdx --> Pkg
- 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 - CSV schemas and typed CSV workflows: add
OfficeIMO.CSV - PowerPoint slides: add
OfficeIMO.PowerPoint - Visio diagrams: add
OfficeIMO.Visio
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
- 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.
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 governed by their upstream projects.
If you find this project helpful, please consider supporting its development. Your sponsorship will help the maintainers dedicate more time to maintenance and new feature development for everyone.
It takes a lot of time and effort to create and maintain this project. By becoming a sponsor, you can help ensure that it stays free and accessible to everyone who needs it.
To become a sponsor, you can choose from the following options:
Your sponsorship is completely optional and not required for using this project. We want this project to remain open-source and available for anyone to use for free, regardless of whether they choose to sponsor it or not.
If you work for a company that uses our .NET libraries or PowerShell modules, please consider sponsoring. Thank you for considering support!
Please consider sharing a post about OfficeIMO and the value it provides. It really does help.