Skip to main content

sumoffice for Python

Open, edit, recalculate and save Excel workbooks, read Word documents and add slides to PowerPoint decks from Python. The package ships the native SumSheet, SumDoc and SumSlide cores inside the wheel: nothing is compiled on install, and you need neither Microsoft Office nor LibreOffice. To let people view and edit the documents in a browser, use SumOffice Server.

sumoffice.core_version() returns the exact packaged core release.

pip install sumoffice

Wheels exist for macOS (Apple silicon and Intel), Linux x86-64 and aarch64 (glibc 2.28 or newer) and Windows x64, for Python 3.10 and newer.

First result in five lines

import sumoffice

wb = sumoffice.open("report.xlsm")
wb["Cash flow"]["B7"] = 42
wb.save("report-edited.xlsm")

The VBA project, Power Query parts and images stay in the saved file byte for byte; sumoffice never rewrites parts it did not change.

Three examples

1. Change a cell in a macro workbook and keep the macros

import sumoffice

wb = sumoffice.open("budget.xlsm")
print(wb.sheet_names)                 # ('Cash flow', 'Summary')
wb["Cash flow"]["B7"] = 42            # number, text, None, or a formula "=B5*2"
wb.save("budget-edited.xlsm")         # vbaProject.bin is kept as it was

2. Recalculate and read the results back

import sumoffice

wb = sumoffice.open("model.xlsx")
sheet = wb["Summary"]
sheet["A1"] = 1200
sheet["A2"] = "=A1*1.2"
wb.recalc()
print(sheet["A2"])                    # 1440
print(sheet.formula("A2"))            # '=A1*1.2'
print(sheet.read("A1:B3"))            # [[1200, None], [1440, None], [None, None]]
wb.save("model-edited.xlsx")

again = sumoffice.open("model-edited.xlsx")
assert again["Summary"]["A2"] == 1440

3. Read the text of a Word document; add a slide to a deck

import sumoffice

print(sumoffice.text("contract.docx"))

deck = sumoffice.open("deck.pptx")
deck.add_slide()
print(deck.slide_count)
deck.save("deck-edited.pptx")

Show it on your own server

The library contains no viewer. Without SUMOFFICE_SERVER_URL, sumoffice.view(path) returns the real server acquisition command. With that address and SUMOFFICE_SERVER_TOKEN set, it uploads the local file to POST /sdk/v1/documents and returns the server's signed editor_url.

editor = sumoffice.view("report-edited.xlsx")
print(editor.editor_url)

Use it from Claude Desktop, Cursor or another MCP client

The package includes a local MCP server that works only with files on your computer. Nothing is sent anywhere.

{
  "mcpServers": {
    "sumoffice": { "command": "/full/path/to/venv/bin/sumoffice-mcp" }
  }
}

Desktop apps do not read your shell's PATH, so give the full path: run which sumoffice-mcp (Windows: where sumoffice-mcp) in the environment where you installed the package. In Claude Desktop the file is claude_desktop_config.json (Settings → Developer → Edit Config); restart the app after saving.

Tools: open_workbook, read_range, write_cells, recalc, save_copy, document_text. By default the server reads files under your home directory; set SUMOFFICE_MCP_ROOTS (paths separated by the OS path separator) to allow other folders. save_copy never overwrites the source file.

What is free

Without a key With a developer key
Documents per day 30 10,000
Term no expiry 90 days from issue
When the quota is used up LicenseQuotaError right away, with a link to the key page; no waiting, no slowdown the same

A document counts once per opening, however many cells you change. Request a developer key at https://sumoffice.com/python#developer-key. Put the key in SUMOFFICE_LICENSE, or the path to the key file in SUMOFFICE_LICENSE_FILE.

The daily quota is enforced by the Word core today. The spreadsheet and presentation cores do not count documents yet, so their use is currently not limited.

What it does not do

  • It does not run VBA macros; it keeps them.
  • XLSX to PDF conversion and page previews are not in this wheel yet: sumoffice.convert() and sumoffice.preview() raise CapabilityUnavailableError and create no file.
  • Word support is read-only in the high-level API (sumoffice.text); editing goes through the low-level Session.
  • The Word core uses system fonts. On a server without fonts set FASTDOC_FONT_DIR to a folder with the document's fonts for stable layout.
  • A wheel works only on the operating system and CPU named in its file name.
  • Error messages are in Russian in this release.

Low level

sumoffice.Session opens a document in one core and accepts the core's own JSON commands. Engines are called "sheet", "doc" and "slide" (the names "sumsheet", "sumdoc" and "sumslide" also work). Call session.handshake() to see the operations a core supports.

Documentation and support

Metadata

Release files for sumoffice 2026.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for sumoffice 2026.4.3
File Actions
sumoffice-2026.4.3-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details for sumoffice-2026.4.3-py3-none-win_amd64.whl
sumoffice-2026.4.3-py3-none-manylinux_2_28_x86_64.whl Python 3 none Linux glibc 2.28+ x86-64 Details for sumoffice-2026.4.3-py3-none-manylinux_2_28_x86_64.whl
sumoffice-2026.4.3-py3-none-manylinux_2_28_aarch64.whl Python 3 none Linux glibc 2.28+ ARM64 Details for sumoffice-2026.4.3-py3-none-manylinux_2_28_aarch64.whl
sumoffice-2026.4.3-py3-none-macosx_11_0_x86_64.whl Python 3 none macOS 11.0+ x86-64 Details for sumoffice-2026.4.3-py3-none-macosx_11_0_x86_64.whl
sumoffice-2026.4.3-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details for sumoffice-2026.4.3-py3-none-macosx_11_0_arm64.whl

Total release size: 235.2 MB

Release files / sumoffice-2026.4.3-py3-none-win_amd64.whl

Download URL sumoffice-2026.4.3-py3-none-win_amd64.whl
Size 47.8 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
8d501146108841086aa633cd21bb5f8764f2312eafa08038b4063d92f249f2c6
BLAKE2b-256 checksum
How to use checksums
5c501cd8c859c84ea92adafd4c10b35a917ffbbbb915cf08040b512cfb632676
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Release files / sumoffice-2026.4.3-py3-none-manylinux_2_28_x86_64.whl

Download URL sumoffice-2026.4.3-py3-none-manylinux_2_28_x86_64.whl
Size 47.9 MB
Tags Linux glibc 2.28+ x86-64 Python 3
SHA-256 checksum
How to use checksums
221eb7a8ac196b290706bcc5d7acbd7841d43278bbebe5eb757624455a4a2497
BLAKE2b-256 checksum
How to use checksums
0ef60e6b6607b8672879ba686a063a6247ad3e3b1b02d9cdcfd6983d925d2a52
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Release files / sumoffice-2026.4.3-py3-none-manylinux_2_28_aarch64.whl

Download URL sumoffice-2026.4.3-py3-none-manylinux_2_28_aarch64.whl
Size 44.1 MB
Tags Linux glibc 2.28+ ARM64 Python 3
SHA-256 checksum
How to use checksums
921f5aec604f64bb0210aee1c6d8c480262813f84d0ffc3408f69b001f6a7cc2
BLAKE2b-256 checksum
How to use checksums
7fb8b8e7f751a23be78ac26c726ee42a36b86a5c0534e0a2b1372195effe6baf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Release files / sumoffice-2026.4.3-py3-none-macosx_11_0_x86_64.whl

Download URL sumoffice-2026.4.3-py3-none-macosx_11_0_x86_64.whl
Size 49.1 MB
Tags Python 3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
69a056f758190cd6fe6465649399db0f00881fd4f9a905266435fcaeefd4dd64
BLAKE2b-256 checksum
How to use checksums
998adf3d344f41095e306a01ab8555db755a2a8c35cc9f5884a4c30fac633cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Release files / sumoffice-2026.4.3-py3-none-macosx_11_0_arm64.whl

Download URL sumoffice-2026.4.3-py3-none-macosx_11_0_arm64.whl
Size 46.4 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7218daae619973c6f83b60273512496e29f35b84c955bd3c6a88953caebf1042
BLAKE2b-256 checksum
How to use checksums
a9d08e183faa0e263488d7fc24a0f60e94b1fb8e4ca8c63bb1a44bacafafef4b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.6

Security for sumoffice 2026.4.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page