Through a hobby project I've ended up implementing a spreadsheet app with support for lots of file formats (csv, tsv, json, ndjson, sqlite). The formula engine uses JS (e.g. the formula `max($('A1:A9'))` equals to excel formula `MAX(A1:A9)`. I also have a CLI which is capable of executing those JS formulas on files without the GUI.<p>It has been fun to code but I don't know where to take this project (if anywhere). Turning it into a polished app requires a significant time investment still.<p>Therefore I was wondering if there's some specific painpoints in the spreadsheet world that I could fix and provide a solution to the world via this app, since I have a solid starting point with it.
<i>Turning it into a polished app requires a significant time investment still.</i><p>Excel is the standard for a "polished" spreadsheet. It has been in development for about 40 years (since it was released in 1985) and has had the resources the most valuable company in the world can put into a flagship cash cow application.<p>It's-not-Excel is the primary pain point for all spreadsheet applications.<p>Documentation, training, third-party how-to's, etc. are one of the important ways that It's-not-Excel spreadsheets cause pain.<p>OK, sure the price of Excel is also a pain point and proprietary licenses are also one. But there might be very reasonable reasons for not focusing on users who prioritize those. Or not.<p>And Google Sheets and the Apple office suite already cost zero dollars, so there's that too.<p>Good luck.
We recently build spreadsheet support in our app.<p>Our pain-points are almost entierly mundane:<p>* Macro-enabled Excel files, that can only be run on or by Windows.<p>* A endless log of Excel files that have errors. Most of these are files that are not compliant to the spec, but have been supported by various software over the years.<p>* User creating formats and overly complicated/brittle spreadsheet.
I’d like to be able to have custom functions that use cells as parameters.<p>It’s often difficult to understand the state of a cell (what is it’s formatting and other rules)<p>It’s difficult to reason about what the underlying value of a cell is and it’s representation (e.g, 12-nov-22 == 12/11/2022) and what will happen when you change the value type of a cell<p>At least for excel, scrolling doesn’t follow curser. Cells are deselected when focus leaves a window.<p>It’s not like any of these are going to revolutionize the spreadsheet.<p>I think old versions of access had a front-end builder. Now MS have power apps, but it’s not very nice and the backend data store is also not great.<p>A spreadsheet backed app builder would be nice.<p>I wish I could name cells, such that my
Spreadsheets I create often have some 'global' variables, some sheet-specific ones, and many column-level formulas. It would be great to see first-class support for these. In Excel, need to copy over formulas to all cells in a column, albeit there's a short cut for that. Global abd sheet-level variables need to be put on the sides of columnar data or in separate sheets.
Getting Excel to interact directly with MySQL is ugly. Querying freezes up Excel because it's single threaded? I don't know how to overcome that problem.<p>Also I wish there was a spreadsheet software that was more closely connected with something modern like Python. I want to be able to lean on Python to perform calculation while I have a particular spreadsheet open. Maybe even insert Python code into cells. That's difficult to do with Excel. I have experimented with LibreOffice Calc, and it may be possible there.<p>VBA is okay for writing simple functions & macros. But I don't like using VBA for anything more complicated than that. Maybe I haven't taken enough time to learn it. But at the same time I feel like I'm creating hacks for a language which should already have the features I want. Somewhat related: you'll see people online recommending that you set your objects to Nothing in order for the garbage collection to work. I have no way of knowing if I actually have to do that and I don't like doing things for no reason.
I would want a "zoned spreadsheet", where you can define a zone grid on each page; each row and column of the zone grid defines the number of rows and columns of data in that zone row/column as well as names for rows and columns, and each cell of the zone grid (which is named by the combination of the row zone name and column zone name) has properties such as formatting, protection, default values, etc. Formulas can go in zone cells and in data cells (although if a zone cell contains a formula, then the data cells in that zone will have the data automatically filled in and you cannot change it without removing the formula from the zone).<p>Another thing I wanted is to be able to write extensions in C, and to work with non-Unicode text.
My biggest pain point is inability (as in refusal, not failure) to open files with more than N rows even if plenty of memory is available. (I forget what the exact value of N is.) Especially annoyingly, this limitation didn’t seem to exist 20 years ago.
> Javascript<p>A quick note: your spreadsheet had better support arbitrary-precision currency math, if it doesn't already. That's table stakes for a spreadsheet.<p>To answer your real question, I'd suggest doubling down on the sqlite side and taking things in a relational direction. Spreadsheets are good at tracking 1:1 or 1:many relationships, but my spreadsheets inevitably grow in a many:many direction and I find myself wishing for queries and junction tables.
If you haven't already I'd recommend this blog post that was shared awhile ago by a devs experience building "Excel for Uber"[1]. Not sure if there's overlap here with their experience, but its an interesting read nonetheless.<p>[1]<a href="https://basta.substack.com/p/no-sacred-masterpieces" rel="nofollow">https://basta.substack.com/p/no-sacred-masterpieces</a>
When exporting an Excel doc, for example to CSV, the app makes the new file (CSV) the active document.<p>This has serious consequences if I continue to make changes in the new doc when I think I'm still in the native doc (xlsx).<p>I find myself exporting to CSV, and then closing this CSV file, and finally reopening the original Excel doc.
all I've wanted for years now is to subdivide a cell and still be able to reference and style the resultant subsheet without weird embed things, just using the standard formatting stuff. merging cells is a poor substitute and breaks tabular data naming in excel at least