human friendly excel creation in python
Project description
hfexcel 0.0.17

human friendly excel creation in python
development versions of dependencies
- Python 3.x
- XlsxWriter==1.1.8
- jsonschema==2.6.0
- pytest
- codecov
- pytest-cov
install
pip install hfexcel
features
- Human readable coding, building
- Object-Obriented based readable models:
HFExcelWorkbook
,HFExcelSheet
,HFExcelColumn
,HFExcelColumn
HFExcelWorkbookFilter
: Helper class to populate Excel from a JSON data (pythondict
) with a pre-defined json schema. (default:hfexcel.schemas.DEFAULT_SCHEMA
)HFExcelWorkbook.output
: Output creation onfilename (string)
input being null, and createdoutput
parameter with the typeBytesIO
linked to workbook itself
playground
example of converting nested objects {sheet>column>row} input from json format into excel format
from hfexcel import HFExcel from hfexcel.schemas import DEFAULT_SCHEMA excel_data = { "sheets": [ { "key": "sheet1", "name": "Example Sheet 1", "columns": [ { "name": "Column 1", "width": 2, "args": [ "headline" ], "rows": [ { "data": "Column 1 Row 1" }, { "data": "Column 1 Row 2" } ] }, { "name": "Column 2", "rows": [ { "data": "Column 2 Row 1", }, { "data": "Column 2 Row 2", } ] }, { "name": "Column 3", "rows": [ { "data": "Column 3 Row 1" }, { "data": "Column 3 Row 2" } ] } ] } ], "styles": [ { "name": "headline", "style": { "bold": 1, "font_size": 14, "font": "Arial", "align": "center" } } ] } hf_workbook = HFExcel.hf_workbook('example.xlsx', set_default_styles=False) hf_workbook.filter().populate_with_json(excel_data, schema=DEFAULT_SCHEMA) hf_workbook.save()
example of object-oriented python syntax
from hfexcel import HFExcel hf_workbook = HFExcel.hf_workbook('example.xlsx', set_default_styles=False) hf_workbook.add_style( "headline", { "bold": 1, "font_size": 14, "font": "Arial", "align": "center" } ) sheet1 = hf_workbook.add_sheet("sheet1", name="Example Sheet 1") column1, _ = sheet1.add_column('headline', name='Column 1', width=2) column1.add_row(data='Column 1 Row 1') column1.add_row(data='Column 1 Row 2') column2, _ = sheet1.add_column(name='Column 2') column2.add_row(data='Column 2 Row 1') column2.add_row(data='Column 2 Row 2') column3, _ = sheet1.add_column(name='Column 3') column3.add_row(data='Column 3 Row 1') column3.add_row(data='Column 3 Row 2') # In order to get a row with coordinates: # sheet[column_index][row_index] => row print(sheet1[1][1].data) assert(sheet1[1][1].data == 'Column 2 Row 2') hf_workbook.save()
example of converting inline index-based {sheet>[column:row]} input from json format into excel format
from hfexcel import HFExcel from hfexcel.extras import InlineInputHelper excel_data = { "sheets": [ { "key": "sheet1", "name": "Example Sheet 1", "columns": [ { "name": "Column 1", "width": 2, "args": [ "headline" ] }, { "name": "Column 2" } ], "rows": [ [ { "data": "Column 1 Row 1" }, { "data": "Column 2 Row 1" } ], [ { "data": "Column 1 Row 2" }, { "data": "Column 2 Row 2" } ] ] } ], "styles": [ { "name": "headline", "style": { "bold": 1, "font_size": 14, "font": "Arial", "align": "center" } } ] } hf_workbook = HFExcel.hf_workbook(filename, set_default_styles=False) InlineInputHelper(hf_workbook).populate_with_json(excel_data) hf_workbook.save() return True
example output file
contributors
- @ebsaral - author
- feel free to contribute
dependencies
- @jmcnamara: Based on XlsxWriter https://github.com/jmcnamara/XlsxWriter (to have a human readable object-oriented design on writing Excel documents)
- @Julian: JSON Schema Validation, jsonschema https://github.com/Julian/jsonschema
warning
- Happy path tests are written.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Filename, size | File type | Python version | Upload date | Hashes |
---|---|---|---|---|
Filename, size hfexcel-0.0.17-py3-none-any.whl (10.6 kB) | File type Wheel | Python version py3 | Upload date | Hashes View |
Filename, size hfexcel-0.0.17.tar.gz (6.8 kB) | File type Source | Python version None | Upload date | Hashes View |