officework
An xlsx engine that does not destroy your forms, plus a bridge that drives a
running office app from Python — the way xlwings drives Excel, but on your own
machine and without Excel.
Written in Rust (15,000+ lines, 240+ tests), exposed to Python through PyO3.
日本語の説明は GitHub にあります (Japanese documentation on GitHub): README.ja.md
Install
$ pip install officework
Wheels are abi3 (CPython 3.10+), so one wheel per platform covers every
version; Linux, macOS and Windows are published. The engine needs no app
installed — only the bridge does. pandas is imported only if you ask for it
(pip install officework[pandas]).
Two ways in
from officework import sheet # the engine — no app needed
b = sheet.Book.open("form7.xlsx")
s = b["quote"]
s["A30"] = "Nihon Funen Co., Ltd." # borders, merges, widths stay intact
s["C30"] = "=B30*100" # a formula; recalculated on the spot
s.insert_row(30) # remaining formulas follow the move
b.save("out.xlsx") # shapes and print setup carried over
from officework import calc as xw # the bridge — drives the running app
import pandas as pd
wb = xw.Book() # a blank workbook comes up
wb.sheets.active["A1"].value = df # the DataFrame lands in the sheet
df2 = wb.sheets.active["A1"].options(pd.DataFrame, expand="table").value
The bridge talks over a unix socket on this machine only — no TCP is opened. It needs officework running.
Why the engine exists
openpyxl rewrites the parts of the file it does not understand. For a
spreadsheet used as a printed form — the way most Japanese offices use one —
that means the borders, merged cells, column widths and shapes you spent an
afternoon on come back wrong.
This engine keeps the original as the source of truth and writes back only what
changed. b.unsupported lists anything it could not read, so nothing is dropped
in silence.
Measured on one machine, 1096 rows × 20 columns (21,920 cells):
| DataFrame → sheet | 44 ms |
| sheet → DataFrame | 65 ms |
License
AGPL-3.0-or-later.
Using it inside your company — building forms, running ledgers, writing scripts — carries no obligations at all. Obligations appear only if you ship something built on it to third parties, or offer a modified version as a network service.
日本語
帳票を壊さない xlsx エンジンです。openpyxl と違い、罫線・結合・列幅・
図形を保ったまま値を差し込めます。読めなかった物は b.unsupported に出るので、
黙って落ちることはありません。
$ pip install officework
from officework import sheet
b = sheet.Book.open("様式7.xlsx")
b["提案見積書"]["A30"] = "日本フネン株式会社" # 書式は据え置き
b.save("out.xlsx")
詳しい説明は GitHub にあります。
- README.ja.md — 全体
- Python の手引き — 範囲⇄配列・=PY・サンドボックス
- Excel からの乗り換え
ライセンスは AGPL-3.0-or-later。社内で使う分に義務はありません (帳票を作る・台帳を回す・スクリプトを書く・社内に配る、いずれも自由)。 義務が出るのは、これを組み込んだ物を社外へ配るときと、改造版をネットワーク 越しの役務として外部に提供するときだけです。
Release files for officework 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| officework-0.1.2.tar.gz | 258.3 kB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| officework-0.1.2-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| officework-0.1.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| officework-0.1.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.10 | abi3 | macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 | Details |
Total release size: 4.5 MB
Release files / officework-0.1.2.tar.gz
| Download URL | officework-0.1.2.tar.gz |
|---|---|
| Size | 258.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
93a3857f5df7bd132fe318c31ec9aeb25e962f627e51c2471a7379b3701c7b99
|
|
BLAKE2b-256 checksum How to use checksums |
ad45f7c61e85c0b3592c0f40d644ae2bdc2660f68b329c43f48c3d0ce30b6679
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / officework-0.1.2-cp310-abi3-win_amd64.whl
| Download URL | officework-0.1.2-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 959.0 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a9a0811057f593f8d3710b2f8c5e55ddaed4cf20389a39e7e076d95490fe3d4b
|
|
BLAKE2b-256 checksum How to use checksums |
43fcb9fa42310c059270102c6c4080900e03057d429ce23a81d9c25114209a73
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / officework-0.1.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | officework-0.1.2-cp310-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 1.2 MB |
| Tags | CPython 3.10 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
266d66f18deb80aeeb8f1385b798a86b76a8ce8b021e1e4423ffe2054b38a512
|
|
BLAKE2b-256 checksum How to use checksums |
809c512498371c7eeb8abd58868c93ea1d74a3a3c5e82e316ad03fe30f506f43
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency logRelease files / officework-0.1.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | officework-0.1.2-cp310-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.10 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
6ce319ef6b26ec6816dbe1623f1d4e37ab78b72d57d6c74ec800d351dff7e060
|
|
BLAKE2b-256 checksum How to use checksums |
700742873cd82311d73bf5359f39ef4d5c7a34a637821b585ce10c8826ca5384
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 9, 2026.
Transparency log