Data import and export tools for eLabFTW electronic lab notebooks
Releases · elAPI Framework · eLabFTW
elAPI Plugins is a desktop application for bulk importing and exporting resources and experiments in eLabFTW instances. It provides a browser-based GUI for researchers and lab managers who need to migrate, back up, or batch-update electronic lab notebook entries from CSV and Excel files.
The project is developed as part of the INF Project of CRC 1638 at the Heidelberg University Biochemistry Center (BZH) and is built on top of the elAPI framework.
- Export resources (by category) or experiments to
.xlsxfiles - Automatically extracts and flattens extra fields from eLabFTW metadata
- Strips HTML from body content for clean spreadsheet output
- Create new resources or experiments from CSV files
- Update existing entries by providing entity IDs in the CSV
- Supported fields per entry:
- Title, body, date, category, template
- Tags (via the eLabFTW
/tagssub-endpoint) - File attachments (single files or directories)
- Extra fields (matched to existing template fields with type coercion)
- Entity links (experiment-to-experiment, experiment-to-resource)
- Intelligent column matching: handles non-breaking spaces, tabs, and case variations
- Automatic delimiter detection for CSV files (comma, semicolon, tab, pipe)
- Download a pre-filled CSV template for any resource category or experiment template
- Templates include all standard columns plus the extra fields defined in the eLabFTW template, ready to fill in and re-import
- The application checks for new releases on GitHub at startup and displays a notification banner when an update is available
elAPI must be installed and configured with a valid eLabFTW API key before using these tools.
pip install elapi
elapi initFollow the elAPI installation guide for detailed instructions on setting up API credentials.
- Download the latest
.dmgfrom the Releases page:- Apple Silicon (M1 / M2 / M3 / M4):
elAPI_Plugins_arm64.dmg - Intel:
elAPI_Plugins_x86_64.dmg
- Apple Silicon (M1 / M2 / M3 / M4):
- Open the
.dmgand drag elAPI Plugins into your Applications folder. - Launch the application from Launchpad or Finder.
Note: On first launch, macOS may block the application because it is not distributed through the App Store. To resolve this, go to System Settings > Privacy & Security, scroll to the Security section, and click Open Anyway. Then relaunch the application.
- Download the latest
.exeinstaller from the Releases page. - Run the installer and follow the on-screen instructions.
- Launch elAPI Plugins from the Start Menu or desktop shortcut.
Linux users can run the application from source. Python 3.11 or later is required.
git clone https://github.com/dantypas3/elAPI_Plugins.git
cd elAPI_Plugins
./scripts/setup_env.sh
source .build/bin/activate
python gui/gui.py.build is the canonical project virtual environment for local development and notebooks. Packaging uses a separate temporary environment so it does not overwrite your working interpreter.
Create or refresh the shared project environment with:
./scripts/setup_env.sh
source .build/bin/activateIf you want Jupyter to use the same interpreter, register .build as the kernel:
.build/bin/python -m ipykernel install --user --name elapi-plugins --display-name "elAPI Plugins"After launching, the GUI opens automatically in your default browser at http://127.0.0.1:1991.
| Action | Description |
|---|---|
| Export resources | Select a category and download all matching resources as an .xlsx file. |
| Export experiments | Download all experiments as an .xlsx file. |
| Download resource template | Select a resource category and download a blank CSV with all standard and extra-field columns for that category. |
| Download experiment template | Select an experiment template and download a blank CSV with all standard and extra-field columns for that template. |
| Import from CSV | Upload a CSV file to create new entries or update existing ones. Select the target type, assign a category or template, and optionally enable update mode. |
The importer automatically detects delimiters and encoding. Column names are matched flexibly (case-insensitive, whitespace-tolerant). Recognized columns include:
| Column | Purpose |
|---|---|
title |
Entry title |
body |
Main text / body content |
tags |
Comma-, semicolon-, or pipe-separated tags |
category / category id |
Numeric category ID |
template |
Numeric template ID (used on creation) |
date |
Entry date (various formats supported) |
experiment id / resource id |
Existing entry ID (for update mode) |
attachments / files_path |
Path to a file or directory to attach |
experiments links |
Comma-separated experiment IDs to link |
resources links |
Comma-separated resource IDs to link |
Any additional columns are matched against the extra fields defined in the entry's template and updated accordingly.
When CSV import is used in update mode, you can place special marker values in individual cells:
| Marker | Effect |
|---|---|
$delete_V |
Replaces that cell value with an empty value before the row is processed. |
$delete_F |
Removes that column from the current row before the row is processed. |
These markers must match exactly. For example, delete_V or $delete_v are treated as normal text.
src/
factories/ Factory classes for instantiating importers and exporters
services/
importers/ CSV-to-eLabFTW import logic (resources, experiments)
exporters/ eLabFTW-to-Excel export logic
updater/ GitHub release checker and asset downloader
utils/ Shared utilities (CSV parsing, endpoints, logging)
gui/ Flask-based web GUI
config/ Runtime configuration files
tests/ Test suite
Copyright (c) 2025 Biochemistry Center(BZH), CRC 1638, Heidelberg University.
This project is licensed under the GNU Affero General Public License v3.0 or later.
Heidelberg University · Biochemistry Center (BZH) · SFB 1638 · INF Project
