/simplecel

Offline Excel-like app with no formula conversion, but with image/markdown/HTML support.

Primary LanguageJavaScriptMIT LicenseMIT

Simplecel

PyPI version shields.io PyPI license PyPI pyversions

Offline Excel-like app with no formula conversion, but with image/markdown/HTML support.

Features

  • Custom renderers beyond https://docs.handsontable.com/5.0.0/demo-custom-renderers.html -- 'markdownRenderer', 'imageRenderer'. -- Can render images with URL's alone. No need for <img src="" />.
  • Always good word wrap support and auto-row-height due to Handsontable.
  • Absolutely no formula conversion. Things like =1+2, OCT2, 11-14 will never get converted.
  • Max column width can be specified (default: 200).

Installation

pip install simplecel
pip install pyexcel-xlsx  # Or any other packages defined in pyexcel GitHub

For what you need to install other than simplecel, please see https://github.com/pyexcel/pyexcel#available-plugins

Usage

$ simplecel --help
Usage: simplecel [OPTIONS] FILENAME

Options:
  --config TEXT     Please input the path to CONFIG yaml, as defined in pyhandsontable.
  --host TEXT
  --port INTEGER
  --debug
  --help          Show this message and exit.
$ simplecel example.xlsx

In this case, example.config.yaml is also auto-loaded, although you can specify *.config.yaml directly in --config. If the file doesn't exist, it will be auto-generated on Save.

Example of example.config.yaml

simplecel:
  _default: {allowInsertCol: false, hasHeader: true, renderers: markdownRenderer}
  hanzi:
    allowInsertCol: false
    colHeaders: true
    colWidths: [67, 197, 200, 71, 90, 106, 66, 60, 59, 200]
    contextMenu: true
    dropdownMenu: true
    filters: true
    hasHeader: true
    manualColumnResize: true
    manualRowResize: true
    maxColWidth: 200
    renderers: markdownRenderer
    rowHeaders: true

One-stop settings for all tables are defined in _default.

Note that the defaultConfig in the Javascript are

let defaultConfig = {
  rowHeaders: true,
  colHeaders: true,
  manualRowResize: true,
  manualColumnResize: true,
  // fixedRowsTop: 1,
  filters: true,
  dropdownMenu: true,
  contextMenu: true,
  maxColWidth: 200,
  hasHeader: false,
  // renderers: 'markdownRenderer',
  allowInsertCol: true
};

renderers can also accept something like

{
    1: "markdownRenderer",
    2: "markdownRenderer"
}

Some other acceptable configs are defined in https://docs.handsontable.com/5.0.0/Options.html

Plan

  • Wrap this app in PyQt / PyFlaDesk for GUI end-users (maybe later, as PyFlaDesk of now is still buggy).

Screenshots