OfficeIMO is a family of COM-free .NET libraries for creating, reading, converting, and exporting Office and document-related formats. The main packages work directly with Open XML formats and are designed for server, desktop, CI, and PowerShell scenarios where Microsoft Office automation is not an option.
- Word: create, edit, inspect, and convert
.docxdocuments - Excel: create and modify
.xlsxworkbooks, worksheets, tables, ranges, styles, and reports - PowerPoint: generate
.pptxpresentations programmatically - Visio: create and validate basic
.vsdxdiagrams - Markdown: typed Markdown AST, builder APIs, HTML rendering, renderer shells, and host plug-ins
- Markup: Markdown-inspired authoring for Word, Excel, and PowerPoint exports
- Reader: read-only extraction facade plus modular adapters for ingestion pipelines
- PDF, ZIP, EPUB, CSV, and Drawing primitives used across the OfficeIMO family
- Google Workspace bridges for Google Docs and Google Sheets export planning
Most packages are MIT licensed. OfficeIMO.Visio is a special case: the project file currently declares MIT package metadata, while the project folder still carries a restrictive LICENSE.MD; treat Visio licensing as unresolved until that conflict is corrected.
- OfficeIMO.Word
- OfficeIMO.Excel
- OfficeIMO.PowerPoint
- OfficeIMO.Visio
- OfficeIMO.CSV
- OfficeIMO.Drawing
- OfficeIMO.Pdf
- OfficeIMO.Zip
- OfficeIMO.Epub
- OfficeIMO.Word.Html
- OfficeIMO.Word.Markdown
- OfficeIMO.Word.Pdf
- OfficeIMO.Excel.Pdf
- OfficeIMO.Markdown.Html
- OfficeIMO.Markdown
- OfficeIMO.MarkdownRenderer
- OfficeIMO.MarkdownRenderer.Wpf
- OfficeIMO.MarkdownRenderer.IntelligenceX
- OfficeIMO.MarkdownRenderer.SamplePlugin
- OfficeIMO.Markdown.Benchmarks
- OfficeIMO.Reader
- OfficeIMO.Reader.Csv
- OfficeIMO.Reader.Epub
- OfficeIMO.Reader.Html
- OfficeIMO.Reader.Json
- OfficeIMO.Reader.Text
- OfficeIMO.Reader.Xml
- OfficeIMO.Reader.Zip
- OfficeIMO.Markup
OfficeIMO.Markup.WordOfficeIMO.Markup.ExcelOfficeIMO.Markup.PowerPointOfficeIMO.Markup.Cli
- OfficeIMO.Examples
- OfficeIMO.Excel.Benchmarks
- Docs/officeimo.pdf.current-state.md
- Docs/officeimo.excel.release-checklist.md
- Docs/officeimo.markdown.release-checklist.md
- CHANGELOG.MD
- 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
OfficeIMO.Word: main Word document object modelOfficeIMO.Word.Html: Word to/from HTML conversion helpersOfficeIMO.Word.Markdown: Word to/from Markdown conversion helpersOfficeIMO.Word.Pdf: Word to PDF export through the first-partyOfficeIMO.Pdfengine
OfficeIMO.Excel: workbook, worksheet, table, range, style, and reporting helpersOfficeIMO.Excel.Pdf: Excel workbook to PDF export through the first-partyOfficeIMO.PdfengineOfficeIMO.Excel.GoogleSheets: Excel to Google Sheets planning, batch compilation, and export helpersOfficeIMO.Excel.Benchmarks: benchmark harness for Excel package behavior
OfficeIMO.GoogleWorkspace: shared credentials, 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
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/WebView2MarkdownViewhostOfficeIMO.MarkdownRenderer.IntelligenceX: first-party IntelligenceX renderer feature packOfficeIMO.MarkdownRenderer.SamplePlugin: sample renderer plug-in packageOfficeIMO.Markdown.Benchmarks: representative parse/render benchmark harness
OfficeIMO.Markup: Markdown-inspired semantic authoring layer for OfficeIMO documentsOfficeIMO.Markup.Word: Word exporter for markup documentsOfficeIMO.Markup.Excel: Excel exporter for markup workbooksOfficeIMO.Markup.PowerPoint: PowerPoint exporter for markup presentationsOfficeIMO.Markup.Cli: command-line parser, validator, emitter, and exporter
OfficeIMO.Reader: read-only facade for deterministic ingestionOfficeIMO.Reader.Csv: CSV adapterOfficeIMO.Reader.Epub: EPUB adapterOfficeIMO.Reader.Html: HTML adapter through the Markdown HTML bridgeOfficeIMO.Reader.Json: JSON adapterOfficeIMO.Reader.Text: structured text compatibility adapterOfficeIMO.Reader.Xml: XML adapterOfficeIMO.Reader.Zip: ZIP adapter
OfficeIMO.CSV: typed CSV read/write and schema workflowsOfficeIMO.Drawing: first-party color and image metadata primitivesOfficeIMO.Pdf: dependency-free PDF builder, reader, page inspector, page extractor, page editor, metadata editor, merger, and future first-party PDF engineOfficeIMO.PowerPoint: programmatic PowerPoint slide generationOfficeIMO.Visio: basic Visio diagram generation and validationOfficeIMO.Zip: safe ZIP traversal primitivesOfficeIMO.Epub: EPUB extraction primitives
Most shipping libraries target netstandard2.0, net8.0, and net10.0. Many projects also add net472 when building on Windows, which preserves .NET Framework support without making that target the cross-platform baseline.
Important exceptions:
OfficeIMO.CSVincludesnet472directly.OfficeIMO.MarkdownRenderer.Wpftargetsnet472,net8.0-windows, andnet10.0-windowsfor the WPF/WebView2 surface, plus non-Windowsnet8.0andnet10.0helper targets.- CLI, benchmark, example, and test projects generally target modern .NET only.
- Reflection-heavy convenience APIs remain available for dynamic and PowerShell scenarios.
- For trimming-sensitive workloads, prefer typed overloads and explicit selectors.
OfficeIMO.Markdown,OfficeIMO.CSV,OfficeIMO.Drawing,OfficeIMO.Pdf,OfficeIMO.Zip, andOfficeIMO.Epubare the lightest dependency shapes.- Open XML-heavy packages should be tested against the exact publish options and document features your application uses.
OfficeIMO.Word.PdfandOfficeIMO.Excel.Pdfshould be treated separately because PDF layout fidelity and host fonts still need scenario validation.
Arrows point from a package to what it depends on. Test, benchmark, and example-only dependencies are intentionally excluded unless called out.
flowchart TB
Word["OfficeIMO.Word"]
Drawing["OfficeIMO.Drawing"]
WordHtml["OfficeIMO.Word.Html"]
WordMarkdown["OfficeIMO.Word.Markdown"]
WordPdf["OfficeIMO.Word.Pdf"]
Markdown["OfficeIMO.Markdown"]
MarkdownHtml["OfficeIMO.Markdown.Html"]
OpenXml["DocumentFormat.OpenXml"]
Angle["AngleSharp"]
AngleCss["AngleSharp.Css"]
Pdf["OfficeIMO.Pdf"]
Word --> Drawing
Word --> OpenXml
WordHtml --> Word
WordHtml --> Drawing
WordHtml --> OpenXml
WordHtml --> Angle
WordHtml --> AngleCss
WordMarkdown --> Word
WordMarkdown --> WordHtml
WordMarkdown --> Markdown
WordMarkdown --> MarkdownHtml
WordMarkdown --> Drawing
WordPdf --> Word
WordPdf --> Pdf
flowchart TB
Excel["OfficeIMO.Excel"]
ExcelPdf["OfficeIMO.Excel.Pdf"]
PowerPoint["OfficeIMO.PowerPoint"]
Visio["OfficeIMO.Visio"]
Drawing["OfficeIMO.Drawing"]
OpenXml["DocumentFormat.OpenXml"]
Packaging["System.IO.Packaging"]
Csv["OfficeIMO.CSV"]
Pdf["OfficeIMO.Pdf"]
Zip["OfficeIMO.Zip"]
Epub["OfficeIMO.Epub"]
Excel --> Drawing
Excel --> OpenXml
ExcelPdf --> Excel
ExcelPdf --> Pdf
PowerPoint --> OpenXml
Visio --> Drawing
Visio --> Packaging
OfficeIMO.CSV, OfficeIMO.Drawing, OfficeIMO.Pdf, OfficeIMO.Zip, and OfficeIMO.Epub are dependency-light first-party packages. Color and image metadata live in OfficeIMO.Drawing, and Excel text measurement is handled by first-party code.
flowchart TB
Markdown["OfficeIMO.Markdown"]
MarkdownHtml["OfficeIMO.Markdown.Html"]
Renderer["OfficeIMO.MarkdownRenderer"]
RendererWpf["OfficeIMO.MarkdownRenderer.Wpf"]
RendererIx["OfficeIMO.MarkdownRenderer.IntelligenceX"]
RendererSample["OfficeIMO.MarkdownRenderer.SamplePlugin"]
Markup["OfficeIMO.Markup"]
MarkupWord["OfficeIMO.Markup.Word"]
MarkupExcel["OfficeIMO.Markup.Excel"]
MarkupPowerPoint["OfficeIMO.Markup.PowerPoint"]
MarkupCli["OfficeIMO.Markup.Cli"]
Word["OfficeIMO.Word"]
Excel["OfficeIMO.Excel"]
PowerPoint["OfficeIMO.PowerPoint"]
Angle["AngleSharp"]
Json["System.Text.Json"]
WebView2["Microsoft.Web.WebView2"]
MarkdownHtml --> Markdown
MarkdownHtml --> Angle
Renderer --> Markdown
Renderer --> MarkdownHtml
Renderer --> Json
RendererWpf --> Renderer
RendererWpf --> WebView2
RendererIx --> Renderer
RendererIx --> MarkdownHtml
RendererSample --> Renderer
RendererSample --> MarkdownHtml
RendererSample --> Json
Markup --> Markdown
MarkupWord --> Markup
MarkupWord --> Word
MarkupExcel --> Markup
MarkupExcel --> Excel
MarkupPowerPoint --> Markup
MarkupPowerPoint --> PowerPoint
MarkupCli --> Markup
MarkupCli --> MarkupWord
MarkupCli --> MarkupExcel
MarkupCli --> MarkupPowerPoint
flowchart TB
Reader["OfficeIMO.Reader"]
ReaderCsv["OfficeIMO.Reader.Csv"]
ReaderEpub["OfficeIMO.Reader.Epub"]
ReaderHtml["OfficeIMO.Reader.Html"]
ReaderJson["OfficeIMO.Reader.Json"]
ReaderText["OfficeIMO.Reader.Text"]
ReaderXml["OfficeIMO.Reader.Xml"]
ReaderZip["OfficeIMO.Reader.Zip"]
Word["OfficeIMO.Word"]
WordMarkdown["OfficeIMO.Word.Markdown"]
Excel["OfficeIMO.Excel"]
PowerPoint["OfficeIMO.PowerPoint"]
Markdown["OfficeIMO.Markdown"]
Pdf["OfficeIMO.Pdf"]
Csv["OfficeIMO.CSV"]
Epub["OfficeIMO.Epub"]
Zip["OfficeIMO.Zip"]
MarkdownHtml["OfficeIMO.Markdown.Html"]
Google["OfficeIMO.GoogleWorkspace"]
GoogleDocs["OfficeIMO.Word.GoogleDocs"]
GoogleSheets["OfficeIMO.Excel.GoogleSheets"]
Json["System.Text.Json"]
Reader --> Word
Reader --> WordMarkdown
Reader --> Excel
Reader --> PowerPoint
Reader --> Markdown
Reader --> Pdf
Reader --> Json
ReaderCsv --> Reader
ReaderCsv --> Csv
ReaderEpub --> Reader
ReaderEpub --> Epub
ReaderHtml --> Reader
ReaderHtml --> MarkdownHtml
ReaderJson --> Reader
ReaderJson --> Json
ReaderText --> Reader
ReaderText --> ReaderCsv
ReaderText --> ReaderJson
ReaderText --> ReaderXml
ReaderXml --> Reader
ReaderZip --> Reader
ReaderZip --> Zip
GoogleDocs --> Google
GoogleDocs --> Word
GoogleDocs --> Json
GoogleSheets --> Google
GoogleSheets --> Excel
GoogleSheets --> Json
- Creating or editing Word documents: add
OfficeIMO.Word - Word to HTML: add
OfficeIMO.WordandOfficeIMO.Word.Html - Word to Markdown or Markdown to Word: add
OfficeIMO.Word,OfficeIMO.Word.Markdown, and the Markdown packages it references - Word to PDF: add
OfficeIMO.WordandOfficeIMO.Word.Pdf - Creating Excel workbooks and reports: add
OfficeIMO.Excel - Excel to PDF: add
OfficeIMO.ExcelandOfficeIMO.Excel.Pdf - Creating PowerPoint decks: add
OfficeIMO.PowerPoint - Creating Visio diagrams: add
OfficeIMO.Visio - Working directly with Markdown: add
OfficeIMO.Markdown - Hosting Markdown in a browser/WebView shell: add
OfficeIMO.MarkdownRenderer - Hosting Markdown in a WPF app: add
OfficeIMO.MarkdownRenderer.Wpf - Adding IntelligenceX-oriented renderer behavior: add
OfficeIMO.MarkdownRenderer.IntelligenceX - Authoring Office files from
.omdmarkup: useOfficeIMO.Markupplus the Word, Excel, or PowerPoint exporter package - Ingesting documents for indexing, chat, or search: add
OfficeIMO.Readerand only the adapter packages your host needs - Shared Google Workspace session/auth primitives: add
OfficeIMO.GoogleWorkspace - Word to Google Docs planning/export: add
OfficeIMO.WordandOfficeIMO.Word.GoogleDocs - Excel to Google Sheets planning/export: add
OfficeIMO.ExcelandOfficeIMO.Excel.GoogleSheets - CSV schemas and typed CSV workflows: add
OfficeIMO.CSV - Dependency-light PDF generation without Word conversion: add
OfficeIMO.Pdf - Safe ZIP or EPUB traversal/extraction primitives: add
OfficeIMO.ZiporOfficeIMO.Epub
DocumentFormat.OpenXml:[3.5.1, 4.0.0)in the Open XML packages that reference itOfficeIMO.Drawing: first-party color and image metadata helpersAngleSharp/AngleSharp.Css: HTML parsing and CSS conversion layersOfficeIMO.Pdf: first-party Word/Excel-to-PDF conversion engine and dependency-light PDF primitivesSystem.Text.Json: reader, renderer, and Google Workspace helper surfaces on legacy target frameworksMicrosoft.Web.WebView2: WPF Markdown renderer hostSystem.IO.Packaging: Visio package handling
See each project .csproj for exact package ranges.
If you find this project helpful, please consider supporting its development. Sponsorship helps the maintainers spend more time on maintenance, documentation, tests, and new features.
Sponsorship is optional. OfficeIMO remains open source and available for anyone to use regardless of sponsorship.
Please consider sharing a post about OfficeIMO and the value it provides. It really does help.