Create and edit DOCX, work with supported DOC and template subsets, and inspect explicit compatibility diagnostics.
Libraries for .NET and PowerShell
Build reports.
Automate document work.
Create Word documents, Excel workbooks, presentations, and PDFs.
Choose a package for generation, conversion, editing, or extraction.
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 = PowerPointPresentation.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());New-OfficeWord -FilePath 'Report.docx' {
WordSection {
WordParagraph -Text 'Monthly Report' -Style Heading1
WordParagraph -Text 'Generated with PSWriteOffice'
WordTable -InputObject $SalesData -Style LightGrid
}
}
New-OfficeExcel -FilePath 'Data.xlsx' {
ExcelSheet -Name 'Sales' {
ExcelTable -InputObject $Records -TableName 'SalesTable' -AutoFit
ExcelChart -TableName 'SalesTable' -Row 2 -Column 8 -Type ColumnClustered -Title 'Revenue'
}
}