Skip to main content

Asynchronous xlsx files generator

Project description

aioxlsxstream

Generate the xlsx file on fly without storing entire file in memory. Generated excel workbook contain only one sheet. All data writes as strings.

Installation

pip install aioxlsxstream

Requirements

  • Python 3.8+

Simple exapmle

import aioxlsxstream
import asyncio

async def main():
    async def rows_generaor():
        async def row_cells_generator(row):
            for col in range(5):
                yield row*5 + col
        for row in range(10):
            yield row_cells_generator(row)

    xlsx_file = aioxlsxstream.XlsxFile()
    xlsx_file.write_sheet(rows_generaor())

    with open("example.xlsx", "wb") as f:
        async for data in xlsx_file:
            f.write(data)

asyncio.run(main())

aiohttp Example

from aiohttp import web, hdrs
import aioxlsxstream

async def rows_generaor():
    async def row_cells_generator(row):
        for col in range(5):
            yield row*5 + col
    for row in range(10):
        yield row_cells_generator(row)

async def handle(request):
    filename = "example.xlsx"
    response = web.StreamResponse(
        status=200,
        headers={
            hdrs.CONTENT_TYPE: "application/octet-stream",
            hdrs.CONTENT_DISPOSITION: (f"attachment; " f'filename="{filename}"; '),
        },
    )
    await response.prepare(request)

    xlsx_file = aioxlsxstream.XlsxFile() # or CsvFile("csv") or CsvFile("tsv")
    xlsx_file.write_sheet(rows_generaor())

    async for data in xlsx_file:
        await response.write(data)
    return response

app = web.Application()
app.add_routes([web.get('/', handle)])

if __name__ == '__main__':
    web.run_app(app)

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

aioxlsxstream-1.0.3.tar.gz (20.6 kB view details)

Uploaded Source

Built Distribution

aioxlsxstream-1.0.3-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file aioxlsxstream-1.0.3.tar.gz.

File metadata

  • Download URL: aioxlsxstream-1.0.3.tar.gz
  • Upload date:
  • Size: 20.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.15 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.5

File hashes

Hashes for aioxlsxstream-1.0.3.tar.gz
Algorithm Hash digest
SHA256 913fc3987a72739e233216c771a6efadecaddca86f18b59fd02230c09bef3e0f
MD5 0727666e6099b3f99a899fc7bc9823cc
BLAKE2b-256 6754089741cc7a39f37f07ef4251667a89bf5d3edfd88a658978ee2d79381d81

See more details on using hashes here.

File details

Details for the file aioxlsxstream-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: aioxlsxstream-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 22.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.9.6 readme-renderer/34.0 requests/2.27.1 requests-toolbelt/1.0.0 urllib3/1.26.15 tqdm/4.64.1 importlib-metadata/4.8.3 keyring/23.4.1 rfc3986/1.5.0 colorama/0.4.5 CPython/3.6.5

File hashes

Hashes for aioxlsxstream-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fd65ae92ebfb3d793b57f874fb6f5c6272e2bcbe11d5013280a56136acd7c1a9
MD5 b1566cbd3cfff9933938effefc88734c
BLAKE2b-256 82ffc65b560b66ca77e59dd42ecaa327f6f8e34c454976d01f656ba8fe301d17

See more details on using hashes here.

Supported by

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