Re:Call Python functions from VBA in all Microsoft Office apps
by sonofgod on Monday October 08, 2018 @09:53AM
(#18167422)
A couple of years ago I played with xlwings, but found it too slow for our usecase (a few cells modified per second) plus we found the Windows requirement quite onerous.
I wound up reading/writing our spreadsheets in pure Python -- we used xlwt which doesn't support xlsx, so I'd probably consider using openpyxl these days.
(Specifically we were selecting parts of spreadsheets based on row/column headers inside the spreadsheet even if they weren't in the first row/column or there were multiple tables per tab; if this sounds useful to you check out https://github.com/sensiblecodeio/xypath )
Re:Call Python functions from VBA in all Microsoft Office apps
by montenegrohugo on Monday October 08, 2018 @10:20AM
(#18167660)
Why not just use Pandas? Whenever I want to do any slightly complex modification to an excel table I just load it into Pandas instead. It's a complete breeze and very fast.
Re:Call Python functions from VBA in all Microsoft Office apps
by pletnes on Monday October 08, 2018 @11:43AM
(#18168450)
Pandas uses the openpyxl module, which can both read and write. It’s quite nice and pure python, too. Pandas is more high level and gives less control but also less code.
Re:Call Python functions from VBA in all Microsoft Office apps
by montenegrohugo on Monday October 08, 2018 @08:27AM
(#18166783)
Does anyone have any current info on native Python support in Excel? I recall Microsoft announcing they would offer this at some point in the future. I would really really prefer it to VBA.
Re:Call Python functions from VBA in all Microsoft Office apps
by shakna on Monday October 08, 2018 @08:47AM
(#18166906)
In February this year, they said:
> Please know this survey is used to help influence various topics – both on Python as well as other related topics that the comments started to bleed into. Given the passion, I want to be clear this remains an area of exploration for us, without any specific timeline.
However, we haven't heard anything since, but that kind of timeline wouldn't be unexpected for a feature of this scale - they'd be unlikely to announce anything until the project is at least near-finished, if they're working on it.
Re:Call Python functions from VBA in all Microsoft Office apps
by auxym on Monday October 08, 2018 @10:16AM
(#18167618)
> t's getting to the point where simply opening a Microsoft Office document is roughly the same as opening a random .exe file.
This isn't exactly new. In fact it was much worse the late 90s / early 00s, the heyday of windows viruses. There was absolutely no security, opening an excel document automatically meant running arbitrary code that had full system access (via COM, etc). Many viruses spread over email by word and excel documents.
At least now, macros execution is disabled by default. Unless you explicitly enable automatic macro execution on all documents, I wouldn't be too worried about opening a documents. Of course, there's the occasional vuln (http://georgemauer.net/2017/10/07/csv-injection.html) but excel isn't exactly the only software with occasional findings of execution vulnerabilities.
Re:Call Python functions from VBA in all Microsoft Office apps
by nuclx on Monday October 08, 2018 @06:22PM
(#18171833)
The other direction is more interesting: Generating/templating Word or Excel documents using the COM interface using the comtypes/win32com python packages. That's what I currently use to generate release documentation as part of a delivery pipeline.
Re:Call Python functions from VBA in all Microsoft Office apps
by Bishonen88 on Monday October 08, 2018 @11:41AM
(#18168434)
cool, was wondering if it's still maintained (last big update from May).
Something I was wondering: If xlwings reads a big chunck of data in a dataframe, is there a way to keep it in memory without the need to re-load it every time one wants to do something with it?
I wound up reading/writing our spreadsheets in pure Python -- we used xlwt which doesn't support xlsx, so I'd probably consider using openpyxl these days.
(Specifically we were selecting parts of spreadsheets based on row/column headers inside the spreadsheet even if they weren't in the first row/column or there were multiple tables per tab; if this sounds useful to you check out https://github.com/sensiblecodeio/xypath )
No, the ran a consultation asking whether there is interest, got overwhelming support for it, but have not commented on it since.
> Please know this survey is used to help influence various topics – both on Python as well as other related topics that the comments started to bleed into. Given the passion, I want to be clear this remains an area of exploration for us, without any specific timeline.
However, we haven't heard anything since, but that kind of timeline wouldn't be unexpected for a feature of this scale - they'd be unlikely to announce anything until the project is at least near-finished, if they're working on it.
[0] https://excel.uservoice.com/forums/304921-excel-for-windows-...
Which if they also enable webassembly in the future is cool, because it means you will be able to run pretty much any language.
I think we should treat them with the same kind of paranoia.
This isn't exactly new. In fact it was much worse the late 90s / early 00s, the heyday of windows viruses. There was absolutely no security, opening an excel document automatically meant running arbitrary code that had full system access (via COM, etc). Many viruses spread over email by word and excel documents.
At least now, macros execution is disabled by default. Unless you explicitly enable automatic macro execution on all documents, I wouldn't be too worried about opening a documents. Of course, there's the occasional vuln (http://georgemauer.net/2017/10/07/csv-injection.html) but excel isn't exactly the only software with occasional findings of execution vulnerabilities.
Something I was wondering: If xlwings reads a big chunck of data in a dataframe, is there a way to keep it in memory without the need to re-load it every time one wants to do something with it?