@david_chisnall Regarding Excel, I've switched to grist: https://www.getgrist.com/
It's Excel but you use Python as the formatting language and it enforces a strict seperation between data and visualization. Also you can name your columns and all rows in a column have to use the same formula.
But the average excel user probably likes the flexibility of excel.