Create and edit DOCX, work with supported DOC and template subsets, and inspect explicit compatibility diagnostics.
.NET libraries · One package per format
Build documents into your applications.
Create Word documents, Excel workbooks, presentations and PDFs from C#. Pick the focused package for generation, conversion, editing or extraction.
- No Office install
- NativeAOT tested
- MIT licensed
Scripting instead? PSWriteOffice brings the same engines to PowerShell.
using OfficeIMO.Word; using var doc = WordDocument.Create("report.docx"); var title = doc.AddParagraph("Quarterly Sales Report"); title.Style = WordParagraphStyle.Heading1; var table = doc.AddTable(4, 3); table.Rows[0].Cells[0].Paragraphs[0].Text = "Region"; table.Rows[0].IsHeader = true; doc.Save();
Document capabilities
Find the right library
Each library has its own guide and supported-format boundaries. Check format support →
Create and edit XLSX, work with supported XLS and XLSB subsets, and inspect conversion diagnostics without Excel.
Create and edit PPTX and work with supported PPT, PPS, and POT subsets through preservation-aware legacy handling.
Create, inspect, edit, merge, sign, validate, and render PDF files.
Work with native OneNote sections, notebooks, tables of contents, and packages offline.
Read and write email, Outlook items, mailbox stores, calendars, and contacts.
Create and edit ODT, ODS, and ODP without LibreOffice or Office.
Parse HTML and MHTML, apply resource policy, and render to document or image formats.
Read, create, preserve, and convert RTF with bounded parsing and fidelity reports.
Extract EPUB metadata, navigation, chapters, and bounded resources.
Build, parse, transform, and render Markdown with a typed AST.
Create VSDX diagrams with pages, shapes, connectors, and metadata.
Extract normalized text, tables, metadata, assets, and chunks across document families.
Translate Office content to and from Docs, Sheets, and Slides with explicit fidelity decisions.
Create, convert, and inspect documents from PowerShell scripts and automation jobs.
Working with CSV? Explore tabular workflows. Need a visual workspace or a command? Try Studio or the CLI.
Use the language that fits your workflow
Call focused .NET packages from applications and services, or use PSWriteOffice for script-first document automation.
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<SalesRecord>(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");PowerPointDesignBrief brief = PowerPointDesignBrief
.FromBrand("#008C95", "client-demo", "technical rollout proposal")
.WithIdentity("Client Theme", footerLeft: "CLIENT", footerRight: "Service deck")
.WithVariety(PowerPointDesignVariety.Exploratory);
var plan = new PowerPointDeckPlan()
.AddSection("Service proposal", "Generated from a semantic plan.")
.AddProcess("Implementation path", "The selected design handles layout.", new[] {
new PowerPointProcessStep("Discover", "Collect constraints."),
new PowerPointProcessStep("Design", "Choose the target model."),
new PowerPointProcessStep("Roll out", "Deliver in waves.")
});
var best = brief.DescribeDeckPlanAlternatives(plan, 3)
.OrderByDescending(alternative => alternative.ContentFitScore)
.First();
using var ppt = PowerPointDocument.Create("proposal.pptx");
ppt.SlideSize.SetPreset(PowerPointSlideSizePreset.Screen16x9);
ppt.UseDesigner(brief, best.Index).AddSlides(plan);
ppt.Save();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());$sales = @(
[pscustomobject]@{ Region = 'North'; Revenue = 12400 }
[pscustomobject]@{ Region = 'South'; Revenue = 8900 }
)
New-OfficeWord -Path 'Report.docx' {
WordHeading -Text 'Monthly Report'
WordParagraph 'Generated with PSWriteOffice'
WordTable -InputObject $sales
}
New-OfficeExcel -Path 'Data.xlsx' {
ExcelSheet -Name 'Sales' {
ExcelTable -InputObject $sales -Name 'SalesTable' -AutoFit
ExcelChart -Table 'SalesTable' -Category Region -Value Revenue -Address H2 -Type ColumnClustered -Title 'Revenue'
}
}