# FsSpreadsheet Spreadsheet creation and manipulation in FSharp
Latest Release | Downloads | Target |
---|---|---|
Python | ||
JavaScript | ||
.NET | ||
Fable JavaScript | ||
Fable Python |
#r "nuget: FsSpreadsheet"
open FsSpreadsheet.DSL
let dslTree =
workbook {
sheet "MySheet" {
row {
cell {1}
cell {2}
cell {3}
}
row {
4
5
6
}
}
}
let spreadsheet = dslTree.Value.Parse()
#r "nuget: FsSpreadsheet.Net"
open FsSpreadsheet.Net
spreadsheet.ToFile(excelFilePath)
------->
let tables = workbook.GetTables()
let worksheets = workbook.GetWorksheets()
// get worksheet and its table as tuple
let worksheetsAndTables =
tables
|> List.map (
fun t ->
let associatedWs =
worksheets
|> List.find (
fun ws ->
ws.Tables
|> List.exists (fun t2 -> t2.Name = t.Name)
)
associatedWs, t
)
node --version
(Tested with v18.16.1)npm --version
(Tested with v9.2.0)dotnet --version
(Tested with 7.0.306)py --version
(Tested with 3.12.2)Setup dotnet tools
dotnet tool restore
Install NPM dependencies
npm install
Setup python environment
py -m venv .venv
Install Poetry and dependencies
.\.venv\Scripts\python.exe -m pip install -U pip setuptools
.\.venv\Scripts\python.exe -m pip install poetry
.\.venv\Scripts\python.exe -m poetry install --no-root
Verify correct setup with ./build.cmd runtests
build.cmd <target>
where <target>
may be
<target>
is empty, it just runs dotnet build after cleaning everythingruntests
to run unit tests
runtestsjs
to only run JS unit testsruntestsdotnet
to only run .NET unit testsruntestpy
to only run Python unit testsreleasenotes semver:<version>
where <version>
may be major
, minor
, or patch
to update RELEASE_NOTES.mdpack
to create a NuGet release
packprelease
to create a NuGet prereleasebuilddocs
to create docs
builddocsprerelease
to create prerelease docswatchdocs
to create docs and run them locallywatchdocsprelease
to create prerelease docs and run them locallyrelease
to create a NuGet, NPM, PyPI and GitHub release