Skip to main content

human friendly excel creation in python

Project description

hfexcel 0.0.17 CircleCI codecov

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 (python dict) with a pre-defined json schema. (default:hfexcel.schemas.DEFAULT_SCHEMA)
  • HFExcelWorkbook.output: Output creation on filename (string) input being null, and created output parameter with the type BytesIO 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

warning

  • Happy path tests are written.

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

hfexcel-0.0.17.tar.gz (6.8 kB view details)

Uploaded Source

Built Distribution

hfexcel-0.0.17-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file hfexcel-0.0.17.tar.gz.

File metadata

  • Download URL: hfexcel-0.0.17.tar.gz
  • Upload date:
  • Size: 6.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.6

File hashes

Hashes for hfexcel-0.0.17.tar.gz
Algorithm Hash digest
SHA256 6542939750b803c00d5611a1171b1863a1ec1a98ca17a86dfaff5ee7715a4c67
MD5 1035634fcf545d7ca8fa7956aa7f758a
BLAKE2b-256 67ddd9ee9b05a3ac0586b3f212c6a045ceb8b01856c4235250764c59ddf16a6d

See more details on using hashes here.

File details

Details for the file hfexcel-0.0.17-py3-none-any.whl.

File metadata

  • Download URL: hfexcel-0.0.17-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.19.1 setuptools/40.6.3 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.6.6

File hashes

Hashes for hfexcel-0.0.17-py3-none-any.whl
Algorithm Hash digest
SHA256 c63c1ac6dec33fc74ebe47ba9016c198f817356459e0676d823316721ff94563
MD5 eeb06ce3ea3628c10ed52fe0accee748
BLAKE2b-256 ec38bbc42042ba0879be9f9a86637a167007f4ec7f1172da426931c1c54a65aa

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