31 comments

[ 3.6 ms ] story [ 50.8 ms ] thread
All spreadsheets used to run in your terminal, in the old days. You can still download one here and I wouldn't be surprised if it still works: https://winworldpc.com/product/quattro-pro/4x
Yes! My first encounter with spreadsheets was SuperCalc for CP/M, and I suppose you would call it a "TUI" nowadays.
See also, one of the older / more-robust entrants in this space [0], and one of the more innovative (still from a hot-second ago now…) [1].

All the best,

0. https://github.com/andmarti1424/sc-im

1. https://www.syntax-k.de/projekte/teapot/

Oh man, I played with teapot once a long while ago, but couldn't figure out how to parse values from XDR files in $LANG, or export some given sheet into CSV or other format- which sadly put a stop to my experimentation. Super interesting otherwise, and wish it had more eyes.
pretty cool, most of the time I don't want to spin emacs org-table nor google sheets for a quick table
Visidata is a fast popular data tool in python https://www.visidata.org/ if you just want data entry.

If I may be permitted a small plug ...

Oleo is a GNU spreadsheet going back absolutely donkey years. I cloned the repo here: https://github.com/blippy/oleo and made minimalist fixes to get the thing to compile.

I also based my own terminal-based spreadsheet based off of it call neoleo: https://github.com/blippy/neoleo

I wouldn't say that my project is particularly good, but it does have a number of features that I find useful. The next release will include Tcl bindings, so you can customise some of the workings of the app. There's also a module available where you can go to town programmatically.

It opens up a world of possibilities, including stuff like pivot tables.

  package require oleo
  load-oleo mysheet.oleo
  set ws [toMat]
  set subset [subRows $ws [mand [mstreq 2 foo] [mstreq 3 bar]]
It has what I think is a nice little query language, too. In the last line I select the rows from the spreadsheet sheet column 2 is equal to foo and column 3 is equal to bar.

I'm kinda dog-fooding it at the moment to put in place features that I need. It doesn't have the full equivalence of SQL-equivalent though.

> Oleo is a GNU spreadsheet going back absolutely donkey years.

Third line of README:

> As of this writing (February 1999)

Whoah, you weren't kidding!

> Visidata is a fast popular data tool in python https://www.visidata.org/ if you just want data entry.

Visidata does vastly more than data entry. It's one of the most powerful applications I've used in years, and basically functions as a cross between a spreadsheet and a relational database with an extremely configurable TUI interface. It's one of the best tools available for doing ad-hoc data analysis, transformations, and joining data from multiple sources in different formats.

There are few comparable tools that allow you to open a Postgres table, a local CSV, and JSON being returned from a REST API in real time, do a complex join, filter and normalize the results, all in a single terminal session.

Semi-related: I always wished there was something like the unholy combination of a spreadsheet and notebook rolled into one. I picture it notebook-like at the top level, then each cell is a widget that the host language can reference parts of in other cells (probably with a variable (eg: something like mathematicas `Out[_]`) or a built in construct (like the `$ABC123` forms in spreadsheet formulas)). A notebook interface would also be good (I think) as a straight up terminal as well, as you (I) typically want to run commands in an order like in a notebook
I think that combination exists using Obsidian.md, via built-in "Bases", or dataview / datacore plugins.
If I’m remembering correctly, I had bought a Borland Turbo C++ compiler circa 1994 (for DOS) that came with a demo sheets application you could build and run.

Does anyone remember this, I can’t find it now.

Anybody ever bound a Google sheets to a CSV and provided a TUI for that? I expect it would be slow.

Two-Way synchronizing of a text file version of Google sheets is another way to think of it. Aside from that, there would also be the need to implement the spreadsheets user interface of highlighting and all that stuff, in the TUI side.

To really be useful (to me at least and a handful of others I've talked to) it has to have xlsx support or at least open document format. If you're not sharing it with anyone then csv-only is fine, but still very limited. This project is early days though so shouldn't be judged for a while, but I would heavily suggest not overlooking compatiblity support even though it's a nasty boondoggle.
this is probably the thing being replaced in that excel elevator demo commerical from microsoft in the 90s
The functionality I miss from a GUI spreadsheet is this "simple" case:

I have a spreadsheet with 186 rows and want to select a specific cell's value from rows 6 and 127 and immediately know the sum if it happens to be 2 digits. Most of the time it's from the same column but not always.

With a GUI, this is really easy. CTRL + left click each cell and get the answer in a second. Throw SHIFT into the mix if you want a range of cells.

To be clear, this is a TUI spreadsheet called "sheets" not a TUI interface to Google Sheets spreadsheets. Unless I completely missed something.
I was at first very confused by the name, because I thought it linked to Google Sheets.

Obviously this is just a proof of concept, but these tools need to be packaged into deb/rpm/winget compatible forms, with signatures, not random executables from a GitHub page. At least it isn't asking me to curl | sudo bash.