Skip to content

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

open-sheets

Librería alpha de lectura y escritura de .xlsx con núcleo Rust y bindings PyO3.

Estado: 0.1.0-alpha.1. La compatibilidad con openpyxl es parcial y deliberadamente limitada.

Instalación

pip install dist/open_sheets-0.1.0a1-*.whl

Python 3.9–3.13 está soportado por configuración; el wheel debe construirse para cada plataforma.

Lectura y escritura

from open_sheets import Workbook, load_workbook

book = load_workbook("input.xlsx")
print(book.sheet_names)
for row in book["Sales"].iter_rows(values_only=True):
    print(row)

out = Workbook()
sheet = out.active
sheet.title = "Sales"
sheet.append(["product", "quantity", "price"])
sheet.extend_rows([["Keyboard", 2, 40.5], ["Mouse", 3, 20]])
out.save("output.xlsx")

read_only=True activa iteración incremental de filas: no materializa las filas ni crea objetos Python de todas ellas al abrir el archivo. La alpha mantiene el XML de cada worksheet seleccionado en memoria; el streaming directo desde el descriptor ZIP queda planificado.

Compatibilidad

Característica Estado
Hojas, celdas, filas y valores básicos soportado
Shared strings, inline strings y fórmulas como texto soportado
Lectura streaming real de worksheets planificado
Fechas con estilos XLSX parcialmente soportado
Escritura de strings, números, booleanos y vacíos soportado
Fechas y datetimes parcialmente soportado
Estilos, gráficos, imágenes, comentarios, macros, tablas dinámicas no soportado
.xls, evaluación de fórmulas, preservación perfecta de workbooks no soportado

Las funciones no soportadas no deben interpretarse como compatibilidad total con openpyxl.

Arquitectura

open-sheets-core contiene valores y coordenadas; open-sheets-xlsx resuelve ZIP, relaciones, XML, shared strings y serialización; open-sheets-python expone PyO3. La capa python/open_sheets mantiene el nombre de paquete público.

Benchmarks

Performance snapshot

KPI open-sheets openpyxl Diferencia
Iteración completa · 100k filas 0,3187 s 4,0566 s 12,7× más rápido
Primera fila · 100k filas 0,0308 s 1,0924 s 35,4× más rápido
Serialización · 10k filas 0,0555 s 0,3890 s 7,0× más rápido
Memoria · lectura 100k 83,7 MB 42,4 MB pendiente de optimizar

Read throughput

Write pipeline

Memory ceiling

python benchmarks/generate_files.py
python -m pip install -r benchmarks/requirements.txt
python benchmarks/read_benchmark.py --repetitions 20 --warmups 3 --output benchmark-results/read.json
python benchmarks/write_benchmark.py --repetitions 20 --warmups 3 --output benchmark-results/write.json
python benchmarks/compatibility_audit.py

Los benchmarks endurecidos ejecutan cada implementación en un proceso separado, descartan warmups y reportan mediana, media, mínimo, máximo, desviación estándar y memoria máxima. Separan construcción del workbook, serialización a bytes y escritura a disco. Generan contenido determinista con strings, enteros, floats, booleanos y vacíos. La auditoría de estilos y metadata muestra explícitamente las limitaciones alpha.

Consulta el informe completo de benchmarks, la auditoría de compatibilidad y las instrucciones reproducibles. Los KPIs principales son 0,318682 s para iterar 100.000 filas, 0,055510 s para serializar 10.000 filas y equivalencia de valores/tipos en 10.000 filas. No se publican cifras parciales de 1.000.000 filas ni de escritura de 100.000 filas porque las baterías completas no terminaron en el entorno disponible.

Roadmap

0.2: estilos básicos, dimensiones, freeze panes, celdas combinadas y filtros. 0.3: edición segura y preservación de elementos desconocidos. 1.0: API estable, wheels multiplataforma, cobertura amplia y benchmarks públicos.

Contribución y licencia

Consulta CONTRIBUTING.md, SECURITY.md y CHANGELOG.md. MIT.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages