Settings

Theme

Show HN: tuisheet, a terminal spreadsheet compatible with OpenXML (xlsx) files

github.com

2 points by krackout · 7 comments · 1 min read

Reader

Presenting tuisheet: A love letter to VisiCalc and Lotus 1-2-3.

The motive was to code a programme inspired by VisiCalc and Lotus 1-2-3 interface, running on terminal, but fully compatible with the current universal standard of OpenXML (xlsx files for spreadsheets). Coded in Go lang; apart from my being more familiar with this programming language, it helps making a single executable, low on resources. Also, I like Go's compiler ability to cross compile to many platforms and OSes (which I personally often meet through my daily job). By the way, tuisheet is much more thoroughly tested and used on Linux than on Windows (or Solaris, AIX, BSD).

1 thread
ukadakal

Very cool project! For those of us old enough to remember working this way, it’s really nice to see a modern take on it.

Curious how extensive the formula support is. How many Excel functions do you currently support, and how do you handle more complex formulas and dependencies between cells or dynamic array formulas, etc.?

  • krackoutOP

    Thank you! Perhaps I should add the supported functions in README.md. There is a list in programme's help (F1) with a small summary from each one. I copy from there:

    ABS, AND, AVERAGE, AVERAGEIF, COLUMN, COUNT, COUNTA, COUNTIF, COUNTIFS, DATE, DAY, DAYS, EXACT, EXP, FILTER, FIND, HLOOKUP, IF, IFERROR, IFNA, IFS, INDEX, INDIRECT, INT, IPMT, ISBLANK, ISERROR, ISNUMBER, ISTEXT, LEFT, LEN, LET, LN, LOWER, MATCH, MAX, MID, MOD, MONTH, NA, NOT, NOW, OFFSET, OR, PI, PMT, POWER, PPMT, PRODUCT, RIGHT, ROUND, ROUNDUP, ROW, ROWS, SQRT, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, TEXT, TEXTJOIN, TODAY, TRIM, TRUE/FALSE, UPPER, VALUE, VLOOKUP, WEEKDAY, XLOOKUP, YEAR,

    Regarding the 2nd part of your question, I quote from the LLM: Complex scalar formulas with deep, cross-sheet, and indirect dependencies are fully evaluated with cycle safety; range/array inputs compose inside aggregations, but dynamic-array spilling is not implemented — multi-cell results surface as #VALUE! instead of spilling.

    • ukadakal

      That’s actually quite impressive. Supporting functions like XLOOKUP, FILTER, INDIRECT, and LET is already a pretty capable calculation engine. Thanks for sharing the details!

      • krackoutOP

        I actually searched the web for popular functions to implement; I don't personally use all of them. If you have any other functions in mind, tell me to implement them also.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection