Macro workbooks open and save inside Seafile.
Seafile speaks WOPI — the same protocol it uses for Office Online Server. SumOffice answers that protocol, so the editor is a setting on the Seafile side, not a patch to it. Below is the setup we ran on 22 September 2026 and the numbers we measured on the way.
What was measured
| Stand | Seafile 12.0.14 (Community), MariaDB, memcached; SumSheet and SumDoc behind one address. The WOPI app ships inside the open-source seahub, so the same setting path applies to Professional installations. |
|---|---|
| Opening | A macro workbook (110 KB, 65 parts, 83 formulas, a VBA project) opened from a Seafile library into SumSheet in 7.9 s on a laptop; a .docx into SumDoc in 1.9 s. |
| Saving back | Write-back through WOPI PutFile created a new revision in Seafile, and Seafile returned exactly the bytes the engine wrote — same SHA-256. |
| What came back | The workbook: 65 parts of 65, vbaProject.bin byte for byte, 83 formulas of 83, 9 defined names of 9. Microsoft Excel opened the file taken out of Seafile without a repair dialog. The document: 16 parts of 16, all five pictures identical. |
| Not counted | People, libraries, documents. Evaluation is free with no time limit; production is the per-application license. |
Step 1 — start the editors
Same compose as for any WOPI host: two editors behind one address, a small service that merges their discovery into one document.
mkdir sumoffice-seafile && cd sumoffice-seafile
git clone https://github.com/SumOfficeApp/sumoffice-docker && cd sumoffice-docker/nextcloud # the same compose serves Seafile
cp env.example .env # PUBLIC_URL=https://office.example.com — the address your people reach the editor at
docker compose up -d
curl -s $PUBLIC_URL/hosting/discovery | head -c 300 # the WOPI discovery Seafile will read
Step 2 — point Seafile at them
In seahub_settings.py:
ENABLE_OFFICE_WEB_APP = True
OFFICE_WEB_APP_BASE_URL = 'https://office.example.com/hosting/discovery'
OFFICE_WEB_APP_FILE_EXTENSION = ('xls', 'xlsx', 'xlsm', 'xlsb', 'ods', 'doc', 'docx', 'docm')
ENABLE_OFFICE_WEB_APP_EDIT = True
OFFICE_WEB_APP_EDIT_FILE_EXTENSION = ('xlsx', 'xlsm', 'xlsb', 'docx')
The last line is what makes the editor open a file for editing rather than viewing, so list every extension your people edit.
Step 3 — open a workbook
- Click any
.xlsxor.xlsmin a library. The editor opens in the Seafile window; the first document takes a few seconds while its process starts. - Edit and save: the file goes back through WOPI and Seafile keeps the previous revision in the file history.
- Download it and open it in Excel: the VBA project and the formulas are the ones you put there.
Two deployment notes. The editor runs in a frame on a different host than Seafile, so put both behind HTTPS — on plain http a browser drops the editor's session cookie unless both sides share one site. And Seafile caches the discovery document: after you change the editor address, restart memcached.
Scope today
- .xlsx / .xlsm / .xlsb and .docx are edited and saved back natively; .ods / .odt open by import and save as .xlsx / .docx.
- Macros and Power Query travel with the file untouched; supported VBA runs in SumSheet without Excel, and what is not supported is named before the file changes rather than dropped.
- One editor per document at a time: a second person opens it read-only.
- Presentations: SumPoint, December 2026.
- Macro workbooks (
.xlsm,.xlsb) need one more setup step on the Seafile side than.xlsxdoes. We are going through it with the Seafile team; ask us and we will send the current note.
Before you move a department, run its workbooks through Check my Excel file: it names every macro, every function and every data source the engine knows or does not know, in seconds, without running anything.
- Order a change under your process — your SSO, your storage rules: from 150 €, price and date before we start.
- Tell us what kind of organization embeds it — the production license is per embedding application, no meters on your users.