Create and edit .docx documents with a friendly object model
dotnet add package OfficeIMO.Word Create, read, and edit Word, Excel, PowerPoint, Markdown, and more from .NET and PowerShell. Zero COM dependencies, cross-platform, AOT-ready.
dotnet add package OfficeIMO.Word Install-Module PSWriteOffice Add the NuGet package for the document format you need, or install the PSWriteOffice PowerShell module. Targets .NET 8+, .NET Standard 2.0, and .NET Framework 4.7.2.
Use the intuitive, object-oriented API to create, read, or edit documents. Available in C# with fluent builders and PowerShell with DSL aliases.
Output standards-compliant Office documents that open flawlessly in Microsoft Office, LibreOffice, and Google Docs. No manual XML wrangling required.
Start with the document builder you need today, then layer in Reader for ingestion and PSWriteOffice for scripting and automation.
Generate Word, Excel, PowerPoint, Markdown, CSV, and Visio output directly from .NET.
Create and edit .docx documents with a friendly object model
dotnet add package OfficeIMO.Word Read and write .xlsx workbooks with tables, charts, and formatting
dotnet add package OfficeIMO.Excel Generate .pptx presentations with slides, charts, and shapes
dotnet add package OfficeIMO.PowerPoint Build, parse, and render Markdown with a typed AST and fluent API
dotnet add package OfficeIMO.Markdown Typed CSV workflows with schema validation and streaming
dotnet add package OfficeIMO.CSV Create .vsdx diagrams with shapes, connectors, and pages
dotnet add package OfficeIMO.Visio Use Reader for extraction and chunking, then PSWriteOffice when your workflow needs PowerShell-first automation.
Unified document extraction from Word, Excel, PowerPoint, and more
dotnet add package OfficeIMO.Reader PowerShell module for creating Office documents with DSL aliases
Install-Module PSWriteOffice The same site should support hand-written .NET code, higher-level builders, and PowerShell automation without looking like separate products.
using var doc = WordDocument.Create("report.docx");
var paragraph = doc.AddParagraph("Quarterly Sales Report");
paragraph.Style = WordParagraphStyle.Heading1;
doc.AddParagraph("Generated automatically with OfficeIMO.Word.");
var table = doc.AddTable(4, 3);
table.Rows[0].Cells[0].Paragraphs[0].Text = "Region";
table.Rows[0].Cells[1].Paragraphs[0].Text = "Revenue";
table.Rows[0].Cells[2].Paragraphs[0].Text = "Growth";
table.Rows[0].IsHeader = true;
table.Rows[1].Cells[0].Paragraphs[0].Text = "North America";
table.Rows[1].Cells[1].Paragraphs[0].Text = "$1,250,000";
table.Rows[1].Cells[2].Paragraphs[0].Text = "+12%";
doc.Save();using var doc = ExcelDocument.Load("sales-data.xlsx");
var sheet = doc.WorkSheets[0];
// Read typed data from rows
var rows = sheet.RowsAs(r => new SalesRecord {
Region = r.String("Region"),
Revenue = r.Decimal("Revenue"),
Growth = r.Double("Growth")
});
// Add a summary chart
var chart = sheet.AddChart(ExcelChartType.ColumnClustered);
chart.Title = "Revenue by Region";
chart.AddSeries("Revenue", rows.Select(r => r.Revenue));
doc.Save("sales-report.xlsx"); var doc = MarkdownDoc.Create()
.H1("Release Notes")
.P("Version 2.0 brings major improvements.")
.H2("New Features")
.BulletList(
"Parallel Excel operations",
"PowerPoint chart support",
"AOT-ready CSV module"
)
.H2("Performance")
.Table(t => t.FromSequence(benchmarks,
("Scenario", b => b.Name),
("Before", b => b.Before),
("After", b => b.After)
));
var html = doc.ToHtmlFragment();
File.WriteAllText("release-notes.md", doc.ToString());New-OfficeWord -FilePath 'Report.docx' {
WordSection {
WordParagraph -Text 'Monthly Report' -Style Heading1
WordParagraph -Text 'Generated with PSWriteOffice'
WordTable -DataTable $SalesData -Style LightGrid
}
}
New-OfficeExcel -FilePath 'Data.xlsx' {
ExcelSheet -Name 'Sales' {
ExcelTable -DataTable $Records -AutoFilter -AutoFit
}
ExcelSheet -Name 'Charts' {
ExcelChart -Type ColumnClustered -Title 'Revenue'
}
}Compare OfficeIMO against the typical trade-offs of commercial document suites without freezing the page around vendor snapshots that drift over time.
| Decision point | OfficeIMO | Typical commercial suite | What to validate |
|---|---|---|---|
| Licensing and source access | MIT license with source available | Paid license or subscription with closed-source implementation | Procurement rules, redistribution terms, and whether source inspection matters to your team |
| Primary workflow | .NET packages plus first-party PowerShell automation through PSWriteOffice | Usually strong .NET APIs, with PowerShell often handled through custom wrappers | Whether the team needs native scripting, CI automation, or admin-friendly document jobs |
| Format and workload focus | Strongest around Open XML packages, Markdown, CSV, and document-reader workflows in this repo | Often broader across rendering, conversion, and additional file-format families | The exact formats, conversions, and rendering scenarios your product must support |
| Deployment model | COM-free and friendly to server, container, and automation environments | Often server-safe as well, but packaging and runtime dependencies still vary | Target OS, hosting model, native dependencies, and whether your builds need to stay lightweight |
| AOT and trimming reality | Package-specific, with the cleanest story today in lighter packages such as Markdown and CSV | Varies by vendor, package, and feature set | Real publish profiles, linker settings, and the exact package mix you plan to ship |
| Support model | GitHub issues, source inspection, and community-driven troubleshooting | Vendor-maintained docs, support channels, and commercial escalation paths | Response expectations, SLA requirements, and who owns production support |
| Debugging and customization | You can inspect behavior directly, patch locally, and understand how documents are produced | You usually depend on vendor fixes, support guidance, and extension points | How often you need deep debugging, custom behavior, or internal platform ownership |
| Total cost profile | No license fee, but your team still owns evaluation, testing, and operational confidence | License cost in exchange for support, broader coverage, and procurement-friendly packaging | Whether engineering time or commercial support is the scarcer resource for your organization |
See real-world documents generated with OfficeIMO and PSWriteOffice.
Complete Word document with formatted tables, charts, headers, footers, and table of contents generated from database queries.
Excel workbook with multiple sheets, pivot tables, conditional formatting, sparklines, and interactive charts.
PowerPoint deck with branded slides, data-driven charts, shape layouts, and speaker notes auto-generated from templates.
Markdown documents built with the fluent API, parsed into typed ASTs, and rendered to HTML for blog posts and release notes.
No. OfficeIMO works entirely with Open XML standards and does not require Microsoft Office, COM automation, or any Office interop assemblies. It runs on any platform where .NET is available.
OfficeIMO targets .NET 8.0, .NET 10.0, .NET Standard 2.0, and .NET Framework 4.7.2. This means it works with .NET Core, .NET 5+, and legacy .NET Framework projects.
Yes. The OfficeIMO packages themselves are published under the MIT License. However, some optional package families build on third-party dependencies with their own upstream terms, so commercial teams should also review our Third-Party Dependencies page during OSS approval.
OfficeIMO is an open-source MIT-licensed option focused on COM-free Open XML workflows, while products like Aspose or GemBox are commercial suites with broader vendor support and different format coverage. Pricing, editions, and support terms change over time, so verify current details with each vendor directly. Our comparison page focuses on trade-offs rather than fixed price claims.
Yes. Because OfficeIMO is COM-free and runs on .NET, it fits well in Linux containers, GitHub Actions, Azure DevOps, and other CI/CD environments. For rendering-heavy scenarios such as PDF output, validate the fonts and native dependencies you plan to ship with your container image.
Free, open source, and MIT licensed. Install in seconds.
dotnet add package OfficeIMO.Word Install-Module PSWriteOffice