Batch-export Neware .ndax files to complete, full-detail .xlsx — with GUI, cycle-mode display, parallel processing, and email notifications.
Developed as part of the NEWARE Developer Program.
Neware BTS 8.0 has a fundamental data quality gap between its two export modes:
| Mode | Sheets exported | Suitability |
|---|---|---|
| Single-file export (manual) | 8 full sheets — unit / test / cycle / step / record / log / idle / curve | ✅ Complete |
| Built-in batch export | Truncated — step and record layers missing | ❌ Incomplete |
The step and record sheets are the most important for machine learning and data-driven battery research — they contain the full time-series data at every recorded point. Without them, you cannot reconstruct charge/discharge curves, compute features, or build reliable ML models.
Yet the manual single-file export doesn't scale: clicking through hundreds of .ndax files one by one is not an option when you need to build a large dataset.
This creates a bottleneck that affects every lab running AI/ML battery research with Neware equipment. You either get volume or completeness — not both.
BTSDAExReport.exe (bundled with BTS 8.0) exposes an undocumented CLI:
BTSDAExReport.exe export custom "<input.ndax>" "<output.xlsx>"
The custom mode reads your saved BTSDAConfig.iconf and produces the identical 8-sheet output as a manual single-file export — including full step and record layers. We verified this by comparing row counts per sheet between manual and automated exports on real experimental data: they are identical.
This project wraps that CLI into a GUI tool with batch processing, parallel execution, and additional workflow features.
- ✅ Full 8-sheet export — identical to manual single-file export (step/record layers complete)
- ✅ Cycle mode display — shows the cycle-statistics mode currently configured in BTS (Step Default / Chg→Dchg / Dchg→Chg / Custom Step); read-only — this tool never modifies BTS configuration
- ✅ Parallel processing — configurable worker count (default: 3)
- ✅ EN / 中文 UI toggle — one-click language switch
- ✅ Flexible path input — paste single or multiple
r"..."Python-style paths;#-prefixed lines auto-skipped - ✅ Folder scan — browse directory, select
.ndaxfiles from a checklist - ✅ Custom output directory — same folder as source, or a single destination
- ✅ Skip existing — skip files where
.xlsxalready exists (default on) - ✅ Summary CSV — auto-generated after each batch (filename / cycles / size / elapsed time)
- ✅ Email report — optional post-export notification with summary table + CSV attachment
- ✅ History — last-used paths and settings restored on next launch
- ✅ BTSDA conflict check — warns if BTSDA.exe is running, which may interfere with the export
- Windows (BTSDA is Windows-only)
- Neware BTS 8.0 software installed
- Python ≥ 3.10
customtkinter
pip install customtkinter- Clone or download this repository
- Install dependencies:
pip install customtkinter - Configure paths (see Configuration)
- Double-click
neware-export.batto launch
python neware_export_gui.pyor double-click neware-export.bat.
Workflow:
- The header shows the cycle mode currently configured in BTS (read-only). If you need a different mode, set it in the BTS software first, then return here.
- Paste
.ndaxpaths — supports raw Python list format with inline comments:r"E:\data\experiment_01.ndax", r"E:\data\experiment_02.ndax", # r"E:\data\skip_this.ndax", r"E:\data\experiment_03.ndax",
- Or click Scan Folder to browse a directory and select files
- Set output directory
- Click Export
.\neware_batch_export.ps1 -InputDir "E:\path\to\ndax"
.\neware_batch_export.ps1 -InputDir "E:\data" -OutputDir "E:\xlsx" -Recurse -ForceOpen neware_export_gui.py and edit the constants near the top:
# ── Paths — adjust to match your BTS installation ──────────────────
BTSDA_EXE = r"E:\software\BTSClient80\BTSDAExReport.exe"
ICONF_PATH = r"C:\Users\<you>\Documents\NEWARE\BTSClient\BTSDAConfig.iconf"ICONF_PATH is only ever read — to display the cycle mode currently configured in BTS. This tool never writes to BTS configuration files.
Email is disabled by default. To enable it, check Email report on finish in the GUI, then configure the SMTP section in neware_export_gui.py:
SMTP_SERVER = "smtp.qq.com" # Change to your provider
SMTP_PORT = 465
SENDER_EMAIL = "[email protected]"
SENDER_PASSWORD = "your_smtp_auth_code" # App password / SMTP auth code
RECEIVER_EMAIL = "[email protected]"Common SMTP providers:
| Provider | Server | Port |
|---|---|---|
| QQ Mail | smtp.qq.com |
465 |
| 163 Mail | smtp.163.com |
465 |
| Gmail | smtp.gmail.com |
465 |
| Outlook | smtp.office365.com |
587 |
⚠️ Never commit real credentials. Store them in environment variables or a local config file not tracked by git.
Controls how BTS counts charge/discharge capacity per cycle. This is configured in the BTS software itself (BTSDAConfig.iconf) — the GUI displays the current value read-only and never changes it.
| Mode | Value | Description |
|---|---|---|
| Step Default | 0 | Default step assignment (recommended) |
| Chg→Dchg | 1 | Charge-first cycle counting |
| Dchg→Chg | 2 | Discharge-first cycle counting |
| Custom Step | 3 | User-defined starting step |
To use a different mode, change it in BTS before exporting.
| Sheet | Contents |
|---|---|
unit |
Unit settings |
test |
Channel / test metadata |
cycle |
Per-cycle statistics (capacity, CE, energy, DCIR…) |
step |
Per-step statistics |
record |
Full time-series — every recorded data point |
log |
Event log |
idle |
Rest segment data |
curve |
Computed curve data |
The record sheet is the primary source for ML feature extraction.
aurora-neware controls Neware cyclers during experiments (start/stop channels, monitor status). This project handles post-experiment data export. They are complementary:
Run experiment → [aurora-neware: monitor & control]
↓
Experiment complete
↓
[neware-batch-export: full .xlsx dataset]
↓
ML / data analysis
- BTS 8.0 (
BTSDAExReport.exeversion 2024.06.24) - Windows 10 / 11
- CT-series and BTS-series cyclers
MIT