Skip to main content

Python bindings for OpenXLSX using pybind11

Project description

PyOpenXLSX

PyPI version Python versions Build Status License

pyopenxlsx is a high-performance Python binding for the OpenXLSX C++ library. It aims to provide significantly faster read/write speeds compared to pure Python libraries like openpyxl, while maintaining a Pythonic API design.

Core Features

  • High Performance: Powered by the modern C++17 OpenXLSX library.
  • Pythonic API: Intuitive interface with properties, iterators, and context managers.
  • Async Support: async/await support for key I/O operations.
  • Rich Styling: comprehensive support for fonts, fills, borders, alignments, and number formats.
  • Memory Safety: Combines C++ efficiency with Python's automatic memory management.

Tech Stack

Component Technology
C++ Core OpenXLSX
Bindings pybind11
Build System scikit-build-core & CMake

Installation

From PyPI (Recommended)

# Using pip
pip install pyopenxlsx

# Using uv
uv pip install pyopenxlsx

From Source

# Using uv
uv pip install .

# Or using pip
pip install .

Development Installation

uv pip install -e .

Quick Start

Create and Save a Workbook

from pyopenxlsx import Workbook

# Create a new workbook
with Workbook() as wb:
    ws = wb.active
    ws.title = "MySheet"
    
    # Write data
    ws["A1"].value = "Hello"
    ws["B1"].value = 42
    ws.cell(row=2, column=1).value = 3.14
    
    # Save
    wb.save("example.xlsx")

Read a Workbook

from pyopenxlsx import load_workbook

wb = load_workbook("example.xlsx")
ws = wb["MySheet"]
print(ws["A1"].value)  # Output: Hello
wb.close()

Async Operations

pyopenxlsx provides async/await support for all I/O-intensive operations, ensuring your event loop remains responsive.

import asyncio
from pyopenxlsx import Workbook, load_workbook_async, Font

async def main():
    # 1. Async context manager for automatic cleanup
    async with Workbook() as wb:
        ws = wb.active
        ws["A1"].value = "Async Data"
        
        # 2. Async stylesheet creation
        style_idx = await wb.add_style_async(font=Font(bold=True))
        ws["A1"].style_index = style_idx
        
        # 3. Async worksheet operations
        new_ws = await wb.create_sheet_async("AsyncSheet")
        await new_ws.append_async(["Dynamic", "Row", 123])
        
        # 4. Async range operations
        await new_ws.range("A1:C1").clear_async()
        
        # 5. Async save
        await wb.save_async("async_example.xlsx")

    # 6. Async load
    async with await load_workbook_async("async_example.xlsx") as wb:
        ws = wb.active
        print(ws["A1"].value)
        
        # 7. Async protection
        await ws.protect_async(password="secret")
        await ws.unprotect_async()

asyncio.run(main())

Styling

from pyopenxlsx import Workbook, Font, Fill, Border, Side, Alignment

wb = Workbook()
ws = wb.active

# Define styles using hex colors (ARGB) or names
# Hex colors can be 6-digit (RRGGBB) or 8-digit (AARRGGBB)
font = Font(name="Arial", size=14, bold=True, color="FF0000") # Red
fill = Fill(pattern_type="solid", color="FFFF00")              # Yellow
border = Border(
    left=Side(style="thin", color="000000"),
    right=Side(style="thin"),
    top=Side(style="thick"),
    bottom=Side(style="thin")
)
alignment = Alignment(horizontal="center", vertical="center", wrap_text=True)

# Apply style
style_idx = wb.add_style(font=font, fill=fill, border=border, alignment=alignment)
ws["A1"].value = "Styled Cell"
ws["A1"].style_index = style_idx

wb.save("styles.xlsx")

Insert Images

from pyopenxlsx import Workbook

wb = Workbook()
ws = wb.active

# Insert image at A1, automatically maintaining aspect ratio
# Requires Pillow: pip install pillow
ws.add_image("logo.png", anchor="A1", width=200)

# Or specify exact dimensions
ws.add_image("banner.jpg", anchor="B5", width=400, height=100)

wb.save("images.xlsx")

API Documentation

Module Exports

from pyopenxlsx import (
    # Core Classes
    Workbook, Worksheet, Cell, Range,
    load_workbook, load_workbook_async,
    
    # Style Classes
    Font, Fill, Border, Side, Alignment, Style, Protection,
    
    # Enums & Constants
    XLColor, XLSheetState, XLLineStyle, XLPatternType, XLAlignmentStyle,
    XLProperty, XLUnderlineStyle, XLFontSchemeStyle, XLVerticalAlignRunStyle,
    XLFillType,
)

Workbook Class

The top-level container for an Excel file.

Constructor

Workbook(filename: str | None = None)
  • filename: Optional. If provided, opens an existing file; otherwise, creates a new workbook.

Properties

Property Type Description
active Worksheet | None Get or set the currently active worksheet.
sheetnames list[str] Returns a list of all worksheet names.
properties DocumentProperties Access document metadata (title, author, etc.).
styles XLStyles Access underlying style object (advanced usage).
workbook XLWorkbook Access underlying C++ workbook object (advanced usage).

Methods

Method Return Type Description
save(filename=None) None Save the workbook. Saves to original path if filename is omitted.
save_async(filename=None) Coroutine Asynchronously save the workbook.
close() None Close the workbook and release resources.
close_async() Coroutine Asynchronously close the workbook.
create_sheet(title=None, index=None) Worksheet Create a new worksheet. title defaults to "Sheet1", etc.
create_sheet_async(...) Coroutine Asynchronously create a worksheet.
remove(worksheet) None Delete the specified worksheet.
remove_async(worksheet) Coroutine Asynchronously delete a worksheet.
copy_worksheet(from_worksheet) Worksheet Copy a worksheet and return the copy.
copy_worksheet_async(...) Coroutine Asynchronously copy a worksheet.
add_style(...) int Create a new style and return its index. See below.
add_style_async(...) Coroutine Asynchronously create a style.
get_embedded_images() list[ImageInfo] Get list of all images embedded in the workbook.
get_image_data(name) bytes Get binary data of an embedded image by its name or path.
extract_images(out_dir) list[str] Extract all images to a directory. Returns list of file paths.
extract_images_async(...) Coroutine Asynchronously extract all images.

add_style Method

def add_style(
    font: Font | int | None = None,
    fill: Fill | int | None = None,
    border: Border | int | None = None,
    alignment: Alignment | None = None,
    number_format: str | int | None = None,
    protection: Protection | None = None,
) -> int:

Returns: A style index (int) that can be assigned to Cell.style_index.

Example:

# Pass all styles via a Style object
from pyopenxlsx import Style, Font, Fill

style = Style(
    font=Font(bold=True),
    fill=Fill(color="C8C8C8"), # Hex color
    number_format="0.00"
)
idx = wb.add_style(style)

Worksheet Class

Represents a sheet within an Excel file.

Properties

Property Type Description
title str Get or set the worksheet name.
index int Get or set the worksheet index (0-based).
sheet_state str Visibility: "visible", "hidden", "very_hidden".
max_row int Returns the maximum row index used.
max_column int Returns the maximum column index used.
rows Iterator Iterate over all rows with data.
merges MergeCells Access merged cells information.
protection dict Get worksheet protection status (read-only).

Methods

Method Return Type Description
cell(row, column, value=None) Cell Get cell by 1-based indices. Optionally set value.
range(address) Range Get range by string, e.g., ws.range("A1:C3").
range(start, end) Range Get range by endpoints, e.g., ws.range("A1", "C3").
merge_cells(address) None Merge cells, e.g., ws.merge_cells("A1:B2").
merge_cells_async(...) Coroutine Asynchronously merge cells.
unmerge_cells(address) None Unmerge cells.
unmerge_cells_async(...) Coroutine Asynchronously unmerge cells.
append(iterable) None Append a row of data after the last used row.
append_async(iterable) Coroutine Asynchronously append a row.
set_column_format(col, style_idx) None Set default style for a column. col can be int or "A".
set_row_format(row, style_idx) None Set default style for a row.
column(col) Column Get column object for width adjustments.
protect(...) None Protect the worksheet.
protect_async(...) Coroutine Asynchronously protect the worksheet.
unprotect() None Unprotect the worksheet.
unprotect_async() Coroutine Asynchronously unprotect.
add_image(...) None Insert an image.
add_image_async(...) Coroutine Asynchronously insert an image.

add_image Method

def add_image(
    img_path: str,
    anchor: str = "A1",
    width: int | None = None,
    height: int | None = None,
) -> None:
  • img_path: Path to image (PNG, JPG, GIF).
  • anchor: Top-left cell address.
  • width, height: Pixel dimensions. Requires Pillow for auto-detection if not provided.

Magic Methods

Method Description
__getitem__(key) Get cell by address: ws["A1"]

Cell Class

The fundamental unit of data in Excel.

Properties

Property Type Description
value Any Get/Set value. Supports str, int, float, bool, datetime.
formula Formula Get/Set formula string (without initial =).
style_index int Get/Set style index.
style int Alias for style_index.
is_date bool True if the cell has a date format.
comment str | None Get/Set cell comment. Set None to remove.
font XLFont Get font object (read-only).
fill XLFill Get fill object (read-only).
border XLBorder Get border object (read-only).
alignment XLAlignment Get alignment object (read-only).

Date Handling

If is_date is True, value automatically returns a Python datetime object.

# Write
ws["A1"].value = datetime(2024, 1, 15)
ws["A1"].style_index = wb.add_style(number_format=14)  # Built-in date format

# Read
print(ws["A1"].value)   # datetime.datetime(2024, 1, 15, 0, 0)
print(ws["A1"].is_date) # True

Formulas

Note: Formulas must be set via the formula property, not value.

# Correct
ws["A3"].formula = "SUM(A1:A2)" 

# Incorrect (treated as string)
ws["A3"].value = "=SUM(A1:A2)"

Range Class

Represents a rectangular area of cells.

Properties

Property Type Description
address str Range address, e.g., "A1:C3".
num_rows int Row count.
num_columns int Column count.

Methods

Method Return Type Description
clear() None Clear values in all cells of the range.
clear_async() Coroutine Asynchronously clear range.

Iteration

for cell in ws.range("A1:B2"):
    print(cell.value)

Style Classes

Font

Font(name="Arial", size=11, bold=False, italic=False, color=None)

Fill

Fill(pattern_type="solid", color=None, background_color=None)

Border

Border(left=Side(), right=Side(), top=Side(), bottom=Side(), diagonal=Side())

Side

Side(style="thin", color=None)

Styles: "thin", "thick", "dashed", "dotted", "double", "hair", "medium", "mediumDashed", "mediumDashDot", "mediumDashDotDot", "slantDashDot"

Alignment

Alignment(horizontal="center", vertical="center", wrap_text=True)

Options: "left", "center", "right", "general", "top", "bottom"


DocumentProperties

Accessed via wb.properties. Supports dict-like access.

  • Metadata: title, subject, creator, keywords, description, last_modified_by, category, company.
wb.properties["title"] = "My Report"
print(wb.properties["creator"])

Column Class

Accessed via ws.column(col_index) or ws.column("A").

Properties

Property Type Description
width float Get or set the column width.
hidden bool Get or set whether the column is hidden.
style_index int Get or set the default style index for the column.

Formula Class

Accessed via cell.formula.

Properties

Property Type Description
text str Get or set the formula string.

Methods

Method Return Type Description
clear() None Remove the formula from the cell.

MergeCells Class

Accessed via ws.merges. Represents the collection of merged ranges in a worksheet.

Methods

Method Return Type Description
append(reference) None Create a merged range (e.g., "A1:B2").
delete(index) None Remove a merged range by its index.
find(reference) int Find the index of a merged range. Returns -1 if not found.
__len__() int Return the number of merged ranges.
__getitem__(index) XLMergeCell Get a merged range object by index.
__iter__() Iterator Iterate over all merged ranges.
__contains__(ref) bool Check if a reference is within any merged range.

ImageInfo Class

Returned by wb.get_embedded_images().

Attributes

Attribute Type Description
name str Filename of the image.
path str Internal path in the XLSX archive.
extension str File extension (e.g., "png").

Helper Functions

load_workbook

def load_workbook(filename: str) -> Workbook:
    """Open an existing Excel file."""

load_workbook_async

async def load_workbook_async(filename: str) -> Workbook:
    """Asynchronously open an existing Excel file."""

is_date_format

def is_date_format(format_code: int | str) -> bool:
    """
    Check if a number format code (int) or string represents a date/time format.
    Useful for determining if a cell value should be treated as a datetime.
    """

Performance

pyopenxlsx is built for speed. By leveraging the C++ OpenXLSX engine and providing optimized bulk operations, it significantly outperforms pure-Python alternatives.

Benchmarks (pyopenxlsx vs openpyxl)

Scenario pyopenxlsx openpyxl Speedup
Read (20,000 cells) ~7ms ~155ms 21x
Write (1,000 cells) ~6ms ~9ms 1.5x
Write (50,000 cells) ~200ms ~318ms 1.6x
Bulk Write (50,000 cells) ~77ms N/A 4.1x
Iteration (20,000 cells) ~86ms ~157ms 1.8x

[!NOTE] Benchmarks were performed on a local development machine using pytest-benchmark. Results may vary based on environment and data complexity. Bulk write uses ws.write_range() with NumPy arrays.

Why is it faster?

  1. C++ Foundation: Core operations happen in highly optimized C++.
  2. Reduced Object Overhead: pyopenxlsx minimizes the creation of many Python Cell objects during bulk operations.
  3. Efficient Memory Mapping: Leverages the memory-efficient design of OpenXLSX.
  4. Asynchronous I/O: Key operations are available as non-blocking coroutines to maximize throughput in concurrent applications.

Development

Run Tests

# Run all tests
uv run pytest

# With coverage
uv run pytest --cov=src/pyopenxlsx --cov-report=term-missing

License

MIT License. The underlying OpenXLSX library is licensed under its own terms.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyopenxlsx-0.2.2.tar.gz (1.6 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyopenxlsx-0.2.2-cp314-cp314t-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.14tWindows x86-64

pyopenxlsx-0.2.2-cp314-cp314t-win32.whl (1.6 MB view details)

Uploaded CPython 3.14tWindows x86

pyopenxlsx-0.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pyopenxlsx-0.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyopenxlsx-0.2.2-cp314-cp314t-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pyopenxlsx-0.2.2-cp314-cp314-win_amd64.whl (2.0 MB view details)

Uploaded CPython 3.14Windows x86-64

pyopenxlsx-0.2.2-cp314-cp314-win32.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86

pyopenxlsx-0.2.2-cp314-cp314-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pyopenxlsx-0.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyopenxlsx-0.2.2-cp314-cp314-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pyopenxlsx-0.2.2-cp313-cp313-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.13Windows x86-64

pyopenxlsx-0.2.2-cp313-cp313-win32.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86

pyopenxlsx-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pyopenxlsx-0.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyopenxlsx-0.2.2-cp313-cp313-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pyopenxlsx-0.2.2-cp312-cp312-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.12Windows x86-64

pyopenxlsx-0.2.2-cp312-cp312-win32.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86

pyopenxlsx-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pyopenxlsx-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyopenxlsx-0.2.2-cp312-cp312-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pyopenxlsx-0.2.2-cp311-cp311-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.11Windows x86-64

pyopenxlsx-0.2.2-cp311-cp311-win32.whl (1.5 MB view details)

Uploaded CPython 3.11Windows x86

pyopenxlsx-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pyopenxlsx-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (1.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pyopenxlsx-0.2.2-cp311-cp311-macosx_11_0_arm64.whl (1.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file pyopenxlsx-0.2.2.tar.gz.

File metadata

  • Download URL: pyopenxlsx-0.2.2.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2.tar.gz
Algorithm Hash digest
SHA256 16675289e2a2a0a2f6ad9d0a3864d8f090ec7be42ad683b15801d8100aed1698
MD5 2b5c32eef4e1072bfa95dd0012b7e2ef
BLAKE2b-256 424538c0982e4e63c49a0cf4cce992fc3915670e7c972f32c28ba022ca53bcda

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2.tar.gz:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314t-win_amd64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 aad13f1a87e0da3cf0a4bedf6e46396b6913c9ab110166cd6393afd1cecc2f34
MD5 53bed238301b535c4e735bd794a17b30
BLAKE2b-256 c30fa554b77900aa38f80785a5e9dbea070299b9e330c8ea7404cd9f055255b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314t-win_amd64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314t-win32.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 1.6 MB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 249d66007951c285a4e6113dca7875b96b03d973f7ed4aeef1d95a9378599085
MD5 fe7aed23844fea4a2ada392b5d7f19cc
BLAKE2b-256 ba9cbc7348e7786e9b20f75282c4b8d0099c0da50fdff84ff79151be802ab1a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314t-win32.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f4a4b18011a7373230c1ef9911400b3de3e327f982466aefe7598bd38a19fa80
MD5 e6e74698270bc37eacd12d087aae428d
BLAKE2b-256 0312c3b5298fda294b9d1f1a5a04953c1e6315c5360f160b56907c875e79db20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8624212302ea1ab5903210d668125fc273636d13092a79ca421077bb583cbe65
MD5 40564c8284bb2e77bdb60898afda4842
BLAKE2b-256 646900ffcf1e6271c55036c9b29eae8dcbd36108e3e52be21d1f6d19c1f6eb2b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314t-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bfac058494290ac933db4782515debc5e08a2ed3128b8a6f1453b1e4d1a4ecf8
MD5 14350ed0dbded181aab61f716444fa89
BLAKE2b-256 cbc12ef5838793a25ec3f250e7a5cf490367d5607108678bed42c4bdd6f40d20

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 2.0 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8f5082906f75316fd2c5abbb0d7f25a7e72e363712a3d7ab51e2f9b178ea9201
MD5 417b25496a1001e5aad7de691a37407c
BLAKE2b-256 d03efd58a1397e8e1011ffd95a2591db36c5a8c02735af109b19f3c24085aa7d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314-win_amd64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314-win32.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 7a108ca7fda1681c5232267145901287b82742ce38e6102f22b97e430583e9e2
MD5 7ea548d41f565364a42c49f92f1f810c
BLAKE2b-256 2792397903753a683413dcf084f734e1d4a6b68f7f9f06ece3a91ac53865fdb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314-win32.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 97c8b4a6244ae804e7ff551e27b6ccb4e5eb0e30037eb81d88f9fc7c77768459
MD5 f1c02b25a5fb02209b08cd8c4761b779
BLAKE2b-256 3d883ed0dad71292231b7a2dde3aeb34cb8b82f653a0f23e0baa6efb9e1e9252

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e7bd38a96de472112adb9790ce1f05eb5638421dbb223647a835c6dd69cca116
MD5 20c3d0160113483fd181747946a40fb3
BLAKE2b-256 23d14d716ab8f4ab5dc3a883146441ae61813f12c61129874d2946d82cbfaae5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e9e140cdfca1aba952f544b0de9b2df5c9a25d71b517e171c54b567a110e145
MD5 5b4228b10162a380f02fabcb8fc2dba9
BLAKE2b-256 6ba3ce4fd6c3898557e841c2d9507bf33f421919299626209220edbfe6a20927

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 710b94761f584d135ebf0a25d9087f2afda3711a016a27d4090bb4e7ae338e64
MD5 33b996720a8d1ed15d122834e05bde42
BLAKE2b-256 fc8ea0efc65f35432d502c6e86bd0429de305cdbe3f502a751664c288424e08a

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp313-cp313-win_amd64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp313-cp313-win32.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c5620c5b5a9a8cb8ee0904fe8aa7d6d450ffebe84237e793ad61d1cc7a04a63f
MD5 73e8e66ee74845087240dbff5c684ffb
BLAKE2b-256 5831b600e50a2908ed99f59ad5539e1dc52b596d90fe0749df06a4af34c9fa97

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp313-cp313-win32.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bfcdf1ca14a4ba9d319daf656ee6ac4b8001d5edd8c8a8031a262ae26f1ab5e3
MD5 f7da8df757d1105aa6c22d847a0cd7ed
BLAKE2b-256 369c532dd1263490686d8855b91a3945cdc886c2442e68b232099d5695a63bc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c434e07243c077a3d8398b0e7cf431e3b9e46e38acbb98accf80f5e1f42c24b4
MD5 10ab152e43e966a8ef06a34bd53de517
BLAKE2b-256 c1073aa80f4ea3322d6867ae44937316602b1643afc70266e17fa57ca00cd690

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a2df762c3771e5d9e049297218538d305ce45889619cfb34851f9d004cae4829
MD5 135d63f4a7443b3454ea25d3c938fc57
BLAKE2b-256 5ec5982758578c939319f698a3a0964b9dc59b52e8d860b47410fa8ca4492af5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b55096699c53c3e134f922734c2b33455fc7d77f653ead915373886e09d070cb
MD5 6eaa1ac9c894914cdd14e6dd89ec732a
BLAKE2b-256 d860f036c8f35d697797f6f5e9ed8f00fcfa048c14521a9d2ad9221d5f1da76c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp312-cp312-win_amd64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp312-cp312-win32.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 564903c15aaa83b46fbdc177ccdd011ae0a9056d4d73b42f294ad5bb0dcb7ba9
MD5 e625efb4a25191cdd07968b6dbe6a76e
BLAKE2b-256 0b488947b08dfcd5779e21160195be34d8d85fca8923e3a0c8ab240db9d1c883

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp312-cp312-win32.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 621e3a32327dcb9eeabae28fb3a287d155822e9bb09b8c3f32f688d58c93b8d9
MD5 ca8f107be7bcbc3cbe2c660bed22a653
BLAKE2b-256 fa9601a0c043682c00f2001e5fa4c9c37a422efdc31281ebdb8669ff4fd4035b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a696eb9bf5f4e15390b0dfb15c1b2425f57faa372f62674ee7324da36470d34d
MD5 69674f7ad798e94e753a37a4b8f0b946
BLAKE2b-256 7ee6f084f7dcd711d2994a0cad8641c2db1ce1f2e878f6b9def0fd8be30c50bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 199d747976c8f2078a28b7794068b36daa9aac6c7c7db944cbc5d03ff8244455
MD5 b220e7a919a53f8dce8a8d117f1c9196
BLAKE2b-256 839849073b80e9ab166cb9e55234aabc8f0b8baba311cc364ee3774ff784d7d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 4e3ebf1c051b20f68883be18ba4df2cb5263b6ac61f650e904877715725245b3
MD5 5bf2870669dc3f5bf9a9b94c7fea3451
BLAKE2b-256 2a135a9d45d94e10a56bac291f18ea9664044eedd8c21ce62997c6c93b7e6364

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp311-cp311-win_amd64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp311-cp311-win32.whl.

File metadata

  • Download URL: pyopenxlsx-0.2.2-cp311-cp311-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyopenxlsx-0.2.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 ef14774f68c9d304de09258a94e7d165047baa18024c3d1afe77eafc566532b4
MD5 9947521ae90fe1da948399723a195852
BLAKE2b-256 916986c64615f586828194747fdba0277ed63fea73d693c30b4460327a58fa93

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp311-cp311-win32.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9c6c22226d16dbcb1a14b5f6fb7c53aa403efdc4a4c02fd01eea730e3d222370
MD5 e6320ef80efc1eb99cc488e1227f2726
BLAKE2b-256 09923791ab7b34ca1d96acf93db7694d354dc9ac9b625124c9739617bbc51bc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f33f66a9619a65a1aadc544bd4ddb0c1b14a749a8a0f4e0e0786e62d5a574986
MD5 076b7d11bf899d126e67250673daccaa
BLAKE2b-256 37632135f3f6be6463eedca89d3f6644807177db00a969dc41248ba48d0a6a15

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyopenxlsx-0.2.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pyopenxlsx-0.2.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f3ae1476f194fadaeb51f0f2f09b73cd93010b61b782f43e4f0528869613b032
MD5 3c380e0a03f1bddf6845a3b9cc4a021f
BLAKE2b-256 a71f0fdbc58c72e042818d9f6d20da2629d830705b255eaf8f80235a0bda5d39

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyopenxlsx-0.2.2-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on twn39/pyopenxlsx

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page