DocWright.Formats.Xlsx 1.1.4

dotnet add package DocWright.Formats.Xlsx --version 1.1.4
                    
NuGet\Install-Package DocWright.Formats.Xlsx -Version 1.1.4
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DocWright.Formats.Xlsx" Version="1.1.4" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DocWright.Formats.Xlsx" Version="1.1.4" />
                    
Directory.Packages.props
<PackageReference Include="DocWright.Formats.Xlsx" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DocWright.Formats.Xlsx --version 1.1.4
                    
#r "nuget: DocWright.Formats.Xlsx, 1.1.4"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DocWright.Formats.Xlsx@1.1.4
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DocWright.Formats.Xlsx&version=1.1.4
                    
Install as a Cake Addin
#tool nuget:?package=DocWright.Formats.Xlsx&version=1.1.4
                    
Install as a Cake Tool

DocWright.Formats.Xlsx

SpreadsheetML (.xlsx) writing for DocWright: a dependency-free, byte-deterministic Office Open XML workbook writer that Excel opens with no repair prompt.

Install

dotnet add package DocWright.Formats.Xlsx

To export a report to a spreadsheet, install DocWright.Reporting.Export instead — it maps a paginated report onto the model here and is what most callers want. This package is the writer underneath it, useful on its own when you are building a workbook from your own data.

Usage

using DocWright.Core.Primitives;
using DocWright.Formats.Xlsx;

var book = new XlsxWorkbook();
var sheet = new XlsxWorksheet("Sales");

sheet.Columns.Add(new XlsxColumn(1, 1, 28.8m));
sheet.Columns.Add(new XlsxColumn(2, 2, 16.45m));

XlsxCellStyle header = XlsxCellStyle.Default.With(bold: true);
XlsxCellStyle money = XlsxCellStyle.Default.With(numberFormat: "#,##0");

var heading = new XlsxRow(1);
heading.Cells.Add(new XlsxCell(1, XlsxCellValue.Text("Region"), header));
heading.Cells.Add(new XlsxCell(2, XlsxCellValue.Text("Total"), header));
sheet.Rows.Add(heading);

var first = new XlsxRow(2);
first.Cells.Add(new XlsxCell(1, XlsxCellValue.Text("Auckland")));
first.Cells.Add(new XlsxCell(2, XlsxCellValue.Number(612940m), money));
sheet.Rows.Add(first);

sheet.FrozenRows = 1;
book.Worksheets.Add(sheet);

using FileStream output = File.Create("sales.xlsx");
XlsxWriter.Write(book, output);

Values, not pictures of values

XlsxCellValue.Number(612940m) with a number format of #,##0 displays as 612,940 and still sums. The same cell holding the text "612,940" displays identically and sums to zero. That split is the reason to write a spreadsheet rather than a CSV, so the model makes you choose rather than guessing from a string.

Numbers are carried as decimal and a double is converted on the way in, which rounds it to 15 significant digits — the precision Excel itself displays, and the precision .NET Framework formats from. That conversion is what makes the bytes identical on net48 and net10; formatting a double directly would not be, because .NET Core 3.0 changed double.ToString to work from the exact binary value.

What it writes

Worksheets, typed cells (text, number, boolean, date, error), custom number formats, fonts, fills, cell borders, horizontal and vertical alignment, wrapped text, merged ranges, column widths, row heights, outline grouping, frozen panes, autofilter, print titles and anchored images.

Write only

There is no XLSX reader, and none is planned: this package exists to produce spreadsheets, not to import them.

Not supported

Formulas, pivot tables, charts, conditional formatting, data validation, comments, defined names beyond print titles, shared strings, and VBA. See COMPAT.md in the repository for the full list and the reasoning.

Deterministic output

Writing the same workbook twice produces a byte-identical package: no timestamps, no generated identifiers, no document-properties part, stable entry and record ordering.

Requirements

.NET Framework 4.8, .NET Standard 2.0, .NET 8.0 or .NET 10.0. No third-party dependencies.

Documentation

📖 DocWright documentation · Write Excel files · API reference: DocWright.Formats.Xlsx

Contact

Questions, support or licensing: salwan@albahadly.com · www.albahadly.com

License

MIT.

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 is compatible.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on DocWright.Formats.Xlsx:

Package Downloads
DocWright.Reporting.Export

File exports for DocWright reports, lowered from the paginated page model: DOCX (a fixed-layout positioning grid, one section per report page, or a flow document), CSV (the report's data with the scope rules SSRS applies, not a picture of the page) and plain text. The page model is the same one the PDF and image renderers draw, so every export paginates identically.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.4 97 9/28/2026
1.1.3 104 9/28/2026

Guides, tutorials and API reference: https://docs.albahadly.com/docwright/