Skip to content

[Repo Assist] Add Deedle.ExcelWriter; rename Deedle.Excel.Reader → Deedle.ExcelReader#717

Merged
dsyme merged 3 commits intomasterfrom
repo-assist/fix-713-714-excel-packages-c9b45bcefbde7c0e
Apr 20, 2026
Merged

[Repo Assist] Add Deedle.ExcelWriter; rename Deedle.Excel.Reader → Deedle.ExcelReader#717
dsyme merged 3 commits intomasterfrom
repo-assist/fix-713-714-excel-packages-c9b45bcefbde7c0e

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

🤖 This is an automated PR from Repo Assist.

Closes #714 — Add Deedle.ExcelWriter package
Closes #713 — Rename Deedle.Excel.ReaderDeedle.ExcelReader


What's changed

New: Deedle.ExcelWriter (closes #714)

A new cross-platform Excel writing package backed by MiniExcel — one of the fastest and most memory-efficient .xlsx writers available on NuGet.

F# API:

open Deedle
open Deedle.ExcelWriter

// Write to first sheet
Frame.writeExcel "output.xlsx" df

// Write to a named sheet
Frame.writeExcelSheet "output.xlsx" "Results" df

// Write multiple sheets
Frame.writeExcelSheets "output.xlsx" (seq {
    yield ("Q1", q1Frame)
    yield ("Q2", q2Frame)
})

// Write to a stream
Frame.writeExcelStream myStream df
Frame.writeExcelSheetStream myStream "Sheet1" df

C# API:

ExcelFrameWriter.WriteExcel(path, frame);
ExcelFrameWriter.WriteExcelSheet(path, "Sheet1", frame);
ExcelFrameWriter.WriteExcelStream(stream, frame);

Missing values are written as null (empty cells). Any existing file is overwritten.

Fix: Rename Deedle.Excel.ReaderDeedle.ExcelReader (closes #713)

The NuGet package name Deedle.Excel.Reader was inconsistent with its namespace Deedle.ExcelReader. This PR renames the package, project, and test project to Deedle.ExcelReader. The namespace, API, and all F#/C# types are unchanged.


Files changed

Change Description
src/Deedle.ExcelReader/ Renamed from src/Deedle.Excel.Reader/
src/Deedle.ExcelWriter/ New package — ExcelWriter.fs + project file
tests/Deedle.ExcelReader.Tests/ Renamed from tests/Deedle.Excel.Reader.Tests/
tests/Deedle.ExcelWriter.Tests/ 10 new tests for the writer
tests/Deedle.CSharp.Tests/ Updated project reference and file paths
docs/excel.fsx Combined ExcelReader + ExcelWriter docs
docs/csharp.md, docs/index.fsx Updated package name references
paket.dependencies Added MiniExcel
RELEASE_NOTES.md Added entries for both changes

Test Status

All tests pass (dotnet test Deedle.sln -c Release):

  • Deedle.ExcelReader.Tests: 20 passed
  • Deedle.ExcelWriter.Tests: 10 passed
  • Deedle.CSharp.Tests (Excel section): 8 passed
  • Full suite: 844 tests, 0 failures

Generated by 🌈 Repo Assist, see workflow run. Learn more.

To install this agentic workflow, run

gh aw add githubnext/agentics/workflows/repo-assist.md@96b9d4c39aa22359c0b38265927eadb31dcf4e2a

- Rename NuGet package Deedle.Excel.Reader to Deedle.ExcelReader, matching
  the existing namespace (closes #713)
- Add new Deedle.ExcelWriter package using MiniExcel for cross-platform
  .xlsx writing: Frame.writeExcel, Frame.writeExcelSheet, Frame.writeExcelSheets,
  stream overloads, and C# ExcelFrameWriter static API (closes #714)
- Add Deedle.ExcelWriter.Tests with 10 tests covering all write functions
- Update Deedle.ExcelReader.Tests and Deedle.CSharp.Tests for renamed paths
- Update docs/excel.fsx with combined ExcelReader + ExcelWriter documentation
- Update docs/csharp.md and docs/index.fsx for renamed package
- Add MiniExcel to paket.dependencies and paket.lock
- Update RELEASE_NOTES.md

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@dsyme dsyme marked this pull request as ready for review April 20, 2026 03:27
@dsyme dsyme merged commit cff0236 into master Apr 20, 2026
2 checks passed
@dsyme dsyme deleted the repo-assist/fix-713-714-excel-packages-c9b45bcefbde7c0e branch April 20, 2026 03:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support ExcelWriter in Deedle Namespace inconsistent with Package Name

1 participant