Skip to main content

xlwings_utils

Project description

Introduction

This module provides some useful functions to be used in xlwings lite.

Installation

Just add xlwings-utils to the requirement.txt tab. It might be required to add ssl.

In the script, add

ìmport xlwings_utils as xwu

Dropbox support

The xlwings lite system does not provide access to the local file system. With this module, files can be copied between Dropbox and the local pyodide file system, making it possible to indirectly use the local file system.

It is only possible, as of now, to use full-access Dropbox apps.

The easiest way to use the Dropbox functionality is to add the credentials to the environment variables. Add REFRESH_TOKEN, APP_KEY and APP_SECRET with their corresponding values to the environment variables.

Then, it is possible to list all files in a specified folder with the function list_dropbox. It is also possible to get the folders and to access all underlying folders.

The function read_dropbox can be used to read a Dropbox file's contents (bytes).

The function write_dropbox can be used to write contents (bytes) to a Dropbox file.

The functions list_local, read_local and write_local offer similar functionality for the local file system (on pyodide).

So, a way to access a file on the system's drive (mapped to Dropbox) as a local file is:

contents = xlwings_utils.read_dropbox('/downloads/file1.xls')
xlwings_utils.write_local('file1.xlsx')
df = pandas.read_excel"file1.xlsx")
...

And the other direction:

contents = xlwings_utils.read_local('file1.gif')
xlwings_utils.write_dropbox('/downloads/file1.gif')

Block support

The module contains a useful 2-dimensional data structure: block. This can be useful to manipulate a range without accessing the range directly, which is expensive in terms of memory and execution time. The advantage over an ordinary list of lists is that a block is index one-based, in line with range and addressing is done with a row, column tuple. So, my_block(lol)[row, col] is roughly equivalent to lol[row-1][col-1]

A block stores the values internally as a dictionary and will only convert these to a list of lists when using block.value.

Converting the value of a range (usually a list of lists, but can also be a list or scalar) to a block can be done with

my_block = xwu.block.from_value(range.value)

The dimensions (number of rows and number of columns) are automatically set.

Setting of an individual item (one-based, like range) can be done like

my_block[row, column] = x

And, likewise, reading an individual item can be done like

x = my_block[row, column]

It is not allowed t,o read or write outside the block dimensions.

It is also possible to define an empty block, like

block = xlwings_utils.block(number_of_rows, number_columns)

The dimensions can be queried or redefined with block.number_of_rows and block.number_of_columns.

To assign a block to range, use

range.value = block.value

The property block.highest_used_row_number returns the

The method block.minimized() returns a block that has the dimensions of (highest_used_row_number, highest_used_column_number).

Capture stdout support

The module has support for capturing stdout and -later- using showing the captured output on a sheet.

To do that:

with xwu.capture_stdout():
    ...

and then the captured output can be copied to the screen, like

sheet.range(4,5).value = xwu.captured_stdout_as_value()

Clearing the captured stdout buffer can be done with xwu.clear_captured_std_out.

Normally, stdout will be also sent to the xlwings lite UI panel. This can be suppressed with

with xwu.capture_stdout(include_print=False):
    ...

Badges

PyPI PyPI - Python Version PyPI - Implementation PyPI - License ruff GitHub last commit

Project details


Release history Release notifications | RSS feed

This version

0.0.7

Download files

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

Source Distribution

xlwings_utils-0.0.7.tar.gz (8.8 kB view details)

Uploaded Source

Built Distribution

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

xlwings_utils-0.0.7-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file xlwings_utils-0.0.7.tar.gz.

File metadata

  • Download URL: xlwings_utils-0.0.7.tar.gz
  • Upload date:
  • Size: 8.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for xlwings_utils-0.0.7.tar.gz
Algorithm Hash digest
SHA256 c3f0153c25bbe51bc432dd48f0cd9e6d32814c604d5ca5bbaeba49af6f90a8d3
MD5 f34044201ee799cd8843f46d9d54bc76
BLAKE2b-256 48be4d86f3a7e22a5a9e14bb87c06c67a684672357325eb486ee3de3a3b8177e

See more details on using hashes here.

File details

Details for the file xlwings_utils-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: xlwings_utils-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for xlwings_utils-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 586b564f9b4eb8b4f9dfde9678975ed55a0195e8cd1d2ad0cb39a47ccf3f15a2
MD5 3d59c1151ef4cee20d05e7a93220cee4
BLAKE2b-256 5c4d8efddec0a7503bd963244f83122dc1dea959f7b2a8bf42e84d04fadda7ab

See more details on using hashes here.

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