📊 Handsontable extension for MediumEditor
Switch branches/tags
Clone or download


MediumEditor Handsontable

MediumEditor Handsontable is an extension to add handsontable spreadsheets to MediumEditor.

Demo: https://asselinpaul.github.io/medium-editor-handsontable/


meditor-handsontable gif



You can install manually or either by using npm or bower:

npm install medium-editor-handsontable


bower install medium-editor-handsontable

On your app, link the style and the script and initialize MediumEditor with the table extension:

<!doctype html>
  <link rel="stylesheet" href="<path_to_medium-editor>/dist/css/medium-editor.css" />
  <link rel="stylesheet" href="<path_to_medium-editor>/dist/css/themes/default.css" />
  <link rel="stylesheet" href="<path_to_medium-editor-handsontable>/dist/css/medium-editor-handsontable.css" />
  <div class="editable"></div>

  <script type="text/javascript" src="<path_to_medium-editor>/dist/js/medium-editor.js"></script>
  <script type="text/javascript" src="<path_to_medium-editor-handsontable>/dist/js/medium-editor-handsontable.js"></script>

  <script type="text/javascript" charset="utf-8">
    var editor = new MediumEditor('.editable', {
    buttonLabels: 'fontawesome',
    extensions: {
      spreadsheet: new MediumEditorSpreadsheet()
    toolbar: {
      buttons: [
      static: true,
      sticky: true

Initialization options

  • rows: maximum number of rows. Default: 10.
  • columns: maximum number of columns. Default: 10.
  • readOnly: makes the cell un-editable. Default: false.
  • contextMenu: shows the context menu on right click (enables the addition/removal of rows and columns). Default: true.


    extensions: {
      'table': new MediumEditorTable({
        rows: 40,
        columns: 40
	extensions: {
      spreadsheet: new MediumEditorSpreadsheet({
        readOnly: true,
        contextMenu: false

Saving states

Saving states is easy and compatible with the medium-editor .serialize method. In order to make this work, the extension keeps the dimensions and data of the spreadsheets in the respective element's data attributes (updated as the spreadsheet is edited).

Serializing the editor therefore saves the state in plain html: data-height="2" data-width="2" data-data="[["1","2"],["3","4"]]"

When the serialised data is loaded and medium-editor-handsontable is initialised, the spreadsheet elements are re-created by the parse() method.


Clone the repository and:

bower install
open demo/index.html


Clone the repository and:

npm install


The extension is based on the following project: https://github.com/yabwe/medium-editor-tables

MIT: https://github.com/asselinpaul/medium-editor-handsontable/blob/master/LICENSE