Reusable xlwings and pandas helpers for Excel automation workflows.
Project description
mgtx-xlwings-utils
Package-first xlwings and pandas helpers for Excel automation workflows at MeiraGTx.
What's new
0.2.3 — Fixes dropdown validation on paste when the dropdown's option
source is a defined name (e.g. =valid_dropdown): the name is now resolved to
its actual options instead of being mistaken for the only allowed value, which
rejected every paste into that column.
0.2.2 — Pins xlwings to ==0.32.1 (was >=0.30) so a fresh install
matches the validated release environment instead of pulling the latest xlwings
(0.35.0). No API changes.
0.2.1 — The post-save prompt is now a public function,
offer_file_actions, with a new Copy file path button and an actions=
argument to choose which of Open file / Open folder / Copy file path appear
(save_dataframe(..., actions=...) forwards the same choice). Copying the path
leaves the dialog open so you can still open the file or its folder; those close
it. The copy now writes through the OS clipboard so it persists after the window
closes.
0.2.0 — A formatting + dropdowns release. apply_table_features /
apply_benchling_table_features apply column colours, prefill rows, and in-cell
dropdowns in one call (Benchling enum columns become dropdowns automatically);
paste_df_to_named_range is now format-preserving (borders="mesh");
paste_plate_data refreshes a plate without redrawing. Includes breaking
renames/removals — see the changelog.
Full history: CHANGELOG.md.
Install
pip install mgtx-xlwings-utils
# With Benchling integration:
pip install "mgtx-xlwings-utils[benchling]"
For local development (editable install with test + build tooling):
pip install -e ".[dev]"
Python requirement: >=3.10.11,<4.0
Documentation
🌐 Live docs site: https://mgtx-data-science.github.io/xlwings_package/ · source: docs/index.md · also mirrored on the GitHub Wiki.
Every guide is full-lifecycle — initialise → paste data in → read it back out → update → format → save — with inline Excel-grid diagrams showing exactly what to highlight and what each step does to the sheet.
Scenario guides
- Normal named-range tables — build a table by hand in Excel and drive it from Python (no Benchling).
- One Benchling table — pull a single result schema onto a sheet and write results back.
- Many Benchling tables (multi-sheet) — lay out several schemas across multiple sheets from a dict of ids.
- Plates — 6 / 12 / 24 / 48 / 96 / 384 / 1536-well and custom layouts with named-range round-trips.
Understand the engine
- Stacked tables & Benchling reinitialise — how managed tables stack (disjoint rows, danger zone, auto-heal), and how reinitialising with more columns auto-widens a table while protecting the neighbour below.
Reference & operational
- Full tools reference — every public function + exception, with verbatim signatures and examples.
- Credentials
— constructing the Benchling
ctx. - Common patterns — config cells, dropdowns, sheet management, plotting, file IO.
Quickstart
import xlwings as xw
from xlwings_package import initialize_workbook, initialise_table_benchling
wb = xw.Book.caller()
initialize_workbook(wb)
# Pull a Benchling schema and lay it out on a sheet.
results = initialise_table_benchling(
wb,
{"Assay Results": ["assaysch_abc123"]},
ctx=my_benchling_context, # see the Credentials guide
)
See the single-Benchling guide for the full seven-step pattern (init → headers → read → transform → write → colour → save).
Testing
# Unit tests (no Excel required) — pure-Python fake workbook harness.
pytest tests/unit/ -q
# Integration tests (require a live Excel installation on Windows).
pytest tests/integration/ -q
Integration tests write inspectable artifacts to
tests/integration/excel_table_tests/ — open any .xlsx to see what each
test produced.
Debugging
Best-effort operations (cell merges, sheet moves, bookmark auto-heal) swallow Excel COM errors so they don't interrupt your workflow. To surface those errors during debugging:
import logging
logging.basicConfig(level=logging.DEBUG)
Production code paths that detect data-corruption risks (occupancy conflicts, column overflow, missing schema metadata) always raise — debug logs are only relevant for cosmetic / non-load-bearing failures.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mgtx_xlwings_utils-0.2.3.tar.gz.
File metadata
- Download URL: mgtx_xlwings_utils-0.2.3.tar.gz
- Upload date:
- Size: 93.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fe5ff0758728376b2c3f2ac13d0e179a28e26996c07c842d088d3d30829f838
|
|
| MD5 |
c23b9f1bc9bf32d67f4655cd564a6c26
|
|
| BLAKE2b-256 |
2dbd7219c8bf504dadb1d24d1d69eac6205d37dac0a8d6150f698cd0f2844758
|
Provenance
The following attestation bundles were made for mgtx_xlwings_utils-0.2.3.tar.gz:
Publisher:
ci.yml on MGTX-Data-Science/xlwings_package
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mgtx_xlwings_utils-0.2.3.tar.gz -
Subject digest:
3fe5ff0758728376b2c3f2ac13d0e179a28e26996c07c842d088d3d30829f838 - Sigstore transparency entry: 2172607883
- Sigstore integration time:
-
Permalink:
MGTX-Data-Science/xlwings_package@83ca1224ed17f84a94a483462061e0dbf931cb10 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/MGTX-Data-Science
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@83ca1224ed17f84a94a483462061e0dbf931cb10 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mgtx_xlwings_utils-0.2.3-py3-none-any.whl.
File metadata
- Download URL: mgtx_xlwings_utils-0.2.3-py3-none-any.whl
- Upload date:
- Size: 98.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8743a83ddb9191072b95b0ab7d1895349d22d9aed8d0973d42df679f8bd2b449
|
|
| MD5 |
1559b619b130a48e9fa5778a5fddd1e4
|
|
| BLAKE2b-256 |
e086d40dcc62d458e37e4c8027ba1ac8db66eec00fb8e37cef37becdf1335bf9
|
Provenance
The following attestation bundles were made for mgtx_xlwings_utils-0.2.3-py3-none-any.whl:
Publisher:
ci.yml on MGTX-Data-Science/xlwings_package
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mgtx_xlwings_utils-0.2.3-py3-none-any.whl -
Subject digest:
8743a83ddb9191072b95b0ab7d1895349d22d9aed8d0973d42df679f8bd2b449 - Sigstore transparency entry: 2172607990
- Sigstore integration time:
-
Permalink:
MGTX-Data-Science/xlwings_package@83ca1224ed17f84a94a483462061e0dbf931cb10 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/MGTX-Data-Science
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
ci.yml@83ca1224ed17f84a94a483462061e0dbf931cb10 -
Trigger Event:
push
-
Statement type: