Metadata-Version: 2.1
Name: ezexcel
Version: 0.1.1
Summary: A simple class based xlsx serialization system
Home-page: https://github.com/Descent098/ezexcel
Author: Kieran Wood
Author-email: kieran@canadiancoding.ca
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 4 - Beta
Description-Content-Type: text/markdown
Requires-Dist: openpyxl
Requires-Dist: colored
Provides-Extra: dev
Requires-Dist: nox ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'

![execel logo](https://raw.githubusercontent.com/Descent098/ezexcel/master/.github/logo.png)

# EZ Excel

*A simple class based xlsx serialization system*

## Table of contents
- [Goals](#goals)
- [Installation](#installation)
- [Quick-start](#quick-start)
- [Additional Documentation](#additional-documentation)

## Goals
This project has a few goals:
1. Make OO projects easier to serialize to xlsx
2. Make use of xlsx serialization and deserialization (coming soon) easier
3. Write the simplest to use api for xlsx serialization

## Installation

### From PyPi

1. Run ```pip install ezexcel``` or ```sudo pip3 install ezexcel```

### From source

1. Clone this repo: (https://github.com/Descent098/ez-excel)
2. Run ```pip install .``` or ```sudo pip3 install .```in the root directory


## Quick-start

### Store some animal instances in a spreadsheet called 'animals.xlsx'
```python
from ezexcel import Spreadsheet

class Animal():
    def __init__(self, name:str, conservation_status:str):
        self.name = name
        self.conservation_status = conservation_status

leopard_gecko = Animal('Leopard Gecko', 'Least Concern')

philippine_eagle = Animal('Philippine Eagle', 'Threatened')

with Spreadsheet('animals.xlsx', Animal) as output_sheet:
    output_sheet.store(leopard_gecko, philippine_eagle)
```

### Store a list of instances into a spreadsheet called 'users.xlsx'
```python
from ezexcel import Spreadsheet

import random
import string
from dataclasses import dataclass

@dataclass
class User():
    Name:str
    Age:int
    Weight:int
    Family: list # Note that Iterables will be flattened to a string with newline seperators

instances = []
ranstring = lambda: ''.join(random.choices(string.ascii_uppercase, k=10)) # Generates a random 10 character string
for i in range(1000):
    instances.append(User(ranstring(), random.randint(12,100), random.randint(75,400), [ranstring(), ranstring(), ranstring()]))

with Spreadsheet('users.xlsx', User) as output_sheet:
    output_sheet.store(instances)
```

## Additional Documentation

Additional documentation can be found at https://kieranwood.ca/ezexcel

For details on how contributing to the project, please see [CONTRIBUTING.md](https://github.com/Descent098/ezexcel/blob/master/CONTRIBUTING.md), for details on upcoming changes see [our roadmap](https://github.com/Descent098/ezexcel/projects).

For most recent changes see [CHANGELOG.md](https://github.com/Descent098/ezexcel/blob/master/CHANGELOG.md).
# Changelog

## 0.1.1; September 25th

Fixed logo loading on PyPi

### Bug fixes

- Fixed loading issue with logo on PyPi

## 0.1.0; September 25th

Initial release of EZ Excel

### Features

- Ability to provide a class to instantiate a Spreadsheet
- Ability to pass instances in an iterable of class to Spreadsheet to be serialized
- Automatically flatten Iterable attributes within instances to endline delimited strings
- Added testing suite for all existing functionality

### Documentation improvements

- Wrote all existing documentation :)


