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
<PackageReference Include="DocWright.Formats.Xlsx" Version="1.1.4" />
<PackageVersion Include="DocWright.Formats.Xlsx" Version="1.1.4" />
<PackageReference Include="DocWright.Formats.Xlsx" />
paket add DocWright.Formats.Xlsx --version 1.1.4
#r "nuget: DocWright.Formats.Xlsx, 1.1.4"
#:package DocWright.Formats.Xlsx@1.1.4
#addin nuget:?package=DocWright.Formats.Xlsx&version=1.1.4
#tool nuget:?package=DocWright.Formats.Xlsx&version=1.1.4
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 | Versions 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. |
-
.NETFramework 4.8
- DocWright.Core (>= 1.1.4)
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
.NETStandard 2.0
- DocWright.Core (>= 1.1.4)
- Microsoft.Bcl.HashCode (>= 1.1.1)
- System.Buffers (>= 4.6.1)
- System.Memory (>= 4.6.3)
- System.Runtime.CompilerServices.Unsafe (>= 6.1.2)
-
net10.0
- DocWright.Core (>= 1.1.4)
-
net8.0
- DocWright.Core (>= 1.1.4)
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.
Guides, tutorials and API reference: https://docs.albahadly.com/docwright/