![]() |
|
![]() |
| I'm genuinely curious why python instead of something like PowerShell for Excel specifically. Seems a little out of the farm but I also get how it's a more adopted language. |
![]() |
| Hi,
Thanks for the post. Very insightful! I'm looking forward to trying out your pywasm module, or should it be ESP (Excel Subsystem for Python)? |
![]() |
| I tried that exactly with PySheets by implementing the sheet in Python itself, rethinking how Jupyter Notebook would look if it treated the data science problem as a dependency graph rather than a linear storytelling document. See https://pysheets.app
|
![]() |
| IMO the better paradigm is coming from enterprise applications like Anaplan. Cells are not the right abstraction to work with numbers. Most of the time you work with multi-dimensional quantities (eg revenue by product, geography, month).
We’re working on a more approachable implementation of that paradigm at https://causal.app |
![]() |
| Felix's upcoming work is intriguing and would enable a much nicer integration of Python into the Excel ecosystem. The use of PyOdide and WASM enables execution of the Python logic on-device. The same tactic is used by PySheets and taken a bit more to the extreme by implementing the cell functions, but also the entire sheet UI and logic in Python. Check it out if you are approaching the space from the perspective of a Python programmer, rather than an Excel user. See https://pysheets.app
|
![]() |
| One should note that this comes from xlwings, a Python-in-Excel plugin with a $1,490 professional lifetime license.
Excel's changes will end up eating their reason to exist. |
![]() |
| While that's fair, the author makes that disclaimer at the start of the article and he specifically addresses where to go with xlwings. But above all, his arguments are right on the money... |
![]() |
| visual basic has been included in excel for decades, its just called VBA not VB. if you thanos snapped VBA out of existence the world would probably stop functioning for several weeks. |
![]() |
| I've used Python libraries to generate reports in Excel, frequently enough that at my last job I wrote a custom library to wrap xlsxwriter to simplify for my use case. Tremendously useful. |
![]() |
| not sure if the average excel business user would benefit much from this. as a tech guy working with excel power users, sure i would enjoy not needing a special language. |
![]() |
| They need to rewrite Excel with native Python and C# (.net core) integration. However, this might dry up the Excel moat. 1985 wants it's data types back. |
![]() |
| Microsoft seems to be purposely doing a poor job of integrating Python into Excel. It is a "give the monkey a banana" approach. With a rotten banana.
They seem to be pouring money into LAMBDA. |
![]() |
| We built our spreadsheet (https://rowzero.io) from the ground up to integrate natively with Python. Bolting it on like Microsoft did, or as an add in like xlwings, just feels second class. To make it first class, we had to solve three hard problems:
1. Sandboxing and dependencies. Python is extremely unsafe to share, so you need to sandbox execution. There's also the environment/package management problem (does the user you're sharing your workbook with have the same version of pandas as you?). We run workbooks in the cloud to solve both of these. 2. The type system. You need a way to natively interop between Excel's type system and Python's much richer type system. The problem with Excel is there are only two types - numbers and strings. Even dates are just numbers in Excel. Python has rich types like pandas Dataframes, lists, and dictionaries, which Excel can't represent natively. We solved this in a similar way to how Typescript evolved Javascript. We support the Excel formula language and all of its types and also added support for lists, dictionaries, structs, and dataframes. 3. Performance. Our goal was to build a spreadsheet 1000x faster than Excel. Early on we used Python as our formula language but were constantly fighting the GIL and slow interpreter performance. Instead we implemented the spreadsheet engine in Rust as a columnar engine and seamlessly marshal Python types to the spreadsheet type system and back. It's the hardest systems problem our team's ever worked on. Previously we wrote the S3 file system, so it's not like this was our first rodeo. There's just a ton of details you need to get right to make it feel seamless. You can try it free here: https://rowzero.io/new?feature=code |
![]() |
| That workflow sounds so painful. Why not get a BI tool that can integrate directly into your data warehouse and do reporting through that? |
![]() |
| It's really not, I've used python in the past but prefer R for this.
As it stands excel is a better presentation layer than almost all BI tools once you're past the modelling and analysis stages. |
> Integrating the Jupyter notebook cells inside the Excel grid was a mistake. 100% agreed. this seems like the typical Microsoft behavior where the team A was pushing their product and won over team B, even though it's not really what users needed
> Python in Excel isn’t suitable for Python beginners nor for interactive data analysis. exactly. it is my humble opinion that Microsoft doesn't really understand how Excel is used IRL
also this bit is gold:
> What I find interesting though is the multiline editing experience of PY cells. Why not give the native Excel formula language an upgrade, so I don’t have to write LET expressions such as the following one (that I still find very hard to read):
> Instead, allow me to write it like so? and we haven't even talked about =LAMBDA()!> Also, why not turn Excel tables into a native Excel DataFrame? Give them attributes instead of sticking to the functional approach and you’d be looking at something like this:
> =MyTable[#All].GROUPBY(...)
> Lot’s of possibilities to integrate the pandas functionality in a way that feels more native to Excel!
Jackpot. I'm literally building this formula language in a new spreadsheet app (it's early days but I'm eager to share it on HN when the MVP is ready!) and am writing a paper on dataframes vs. spreadsheets, so reading this has warmed my heart on this rainy afternoon
also as a former Django lover (I still love it, i just don't use it as much), `=MyTable[#All].GROUPBY(...)` reminds me of its ORM...
"hmm emoji" indeed.....