Skip to main content

Load data from spreadsheets easily

Project description

Superspreader 🦠

Superspreader is a little helper library that simplifies working with spreadsheets. It is built on top of openpyxl. OpenPyXL is its only dependency.

Instead of looping over rows and columns manually, the structure of a spreadsheet is described in a class:

from superspreader import fields
from superspreader.sheets import BaseSheet


class AlbumSheet(BaseSheet):
    """
    This class describes a sheet in an Excel document
    """
    
    sheet_name = "Albums" # The sheet is named “albums”
    header_rows = 3 # The sheet has three header rows
    
    # The column labels are in the second row.
    # It is *not* zero based to match the Excel row number
    label_row = 2
    

    # The columns
    artist = fields.CharField(source="Artist", required=True)
    album = fields.CharField(source="Album")
    release_date = fields.DateField(source="Release Date")
    average_review = fields.FloatField(source="Average Review")
    chart_position = fields.IntegerField(source="Chart Position")

Ready? Let’s load an Excel spreadsheet!

if __name__ == "__main__":
    sheet = AlbumSheet("albums.xlsx")
    # Load and parse data from the document
    sheet.load()
    
    print(sheet.has_errors)
    # False
    print(sheet.errors)
    # []
    print(sheet.infos)
    # []
    
    for row_dict in sheet:
        print(row_dict)
        
# {'artist': 'David Bowie', 'album': 'Toy', 'release_date': datetime.date(2022, 1, 7), 'average_review': 4.3, 'chart_position': 5}
# {'artist': 'The Wombats', 'album': 'Fix Yourself, Not The World', 'release_date': datetime.date(2022, 3, 7), 'average_review': 3.9, 'chart_position': 7}
# {'artist': 'Kokoroko', 'album': 'Could We Be More', 'release_date': datetime.date(2022, 8, 1), 'average_review': 4.7, 'chart_position': 30}   

In tests/spreadsheets is a sample spreadsheet that is used for testing. Feel free to fiddle around.

There’s a lot more to say and I’ll update the documentation as I go.

Changelog

0.1.4

  • Adds basic documentation on how to use superspreader

The API is inspired by Django’s model API and ElasticSearch DSL.

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

superspreader-0.2.0.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

superspreader-0.2.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file superspreader-0.2.0.tar.gz.

File metadata

  • Download URL: superspreader-0.2.0.tar.gz
  • Upload date:
  • Size: 9.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.17

File hashes

Hashes for superspreader-0.2.0.tar.gz
Algorithm Hash digest
SHA256 35e03e4296ebd64d4b392ebdc21707dd59af749c53ea674965c827f73cb1ffc6
MD5 8fef104003455b22353ab09d5ea19b0c
BLAKE2b-256 525d54695d3551810adc3a1771939f110e67014ed2799c8a351fa9876f67e899

See more details on using hashes here.

File details

Details for the file superspreader-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for superspreader-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e4661f165c5669a788b2432adda90eebd23e41fca1fc3396df03552a0b254bf9
MD5 ee8700952a8cf169b01c83d87c327dcf
BLAKE2b-256 80b0932859da0a4269ef09670b332860169ecfd11f3cd86b52f298d7f2de7a81

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