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 )