HTML Other
Clone or download
Paul-A-Kavan and jrowen change hot_row function to accommodate multiple rows (#258)
* Change hot_row to accommodate multiple rows

* fix spaces

* Update documentation for hot_row

Update hot_row row parameter to include the use of a vector to specify the rows to apply to. Also, altered the descriptions of hot_row and hot_rows to point out the difference between these functions since hot_row now accepts multiple rows.

* Use multiple rows in read-only example

I put a vector of rows into the hot_row() function call of the read-only section to show the capability to set multiple rows at once.

Fixes #255 and #234
Latest commit a89ffed Jul 21, 2018

Build Status AppVeyor Build Status CRAN_Status_Badge CRAN_Download_Badge

See the project website for more details and live examples, and see below for important details on use in shiny apps.

An htmlwidgets implementation of Handsontable.js. Per the website:

Handsontable is a minimalist Excel-like data grid editor for HTML & JavaScript

This library was inspired by the shinyTable package. Most of the original functionality was preserved, and the htmlwidgets framework made it possible to leverage even more of the Handsontable.js functionality.

See the vignette for detailed examples and links to shiny apps.

To install from CRAN use


For the latest development version use


A simple example


DF = data.frame(int = 1:10,
                numeric = rnorm(10),
                logical = TRUE,
                character = LETTERS[1:10],
                fact = factor(letters[1:10]),
                date = seq(from = Sys.Date(), by = "days", length.out = 10),
                stringsAsFactors = FALSE)

# add a sparkline chart
DF$chart = sapply(1:10, function(x) jsonlite::toJSON(list(values=rnorm(10))))
rhandsontable(DF, rowHeaders = NULL) %>%
  hot_col("chart", renderer = htmlwidgets::JS("renderSparkline"))

alt tag

A more involved shiny example

shiny::runGitHub("rhandsontable", "jrowen", subdir = "inst/examples/rhandsontable_corr")

Important note on shiny use: The htmlwidgets package creates widgets as shiny output bindings. The rhandsontable package also attempts to expose the table as a pseudo shiny input binding using handsontable change events (see here for the supported events). This means the table (e.g. hot) can be accessed in shiny using either input$hot or output$hot, but these values may not be in-sync. The timing of updates will depend on the particular reactive path followed by your shiny application.

Since the widget is not currently able to use the standard shiny input binding functionality, you will need to explicitly call the hot_to_r function to convert the handsontable data to an R object.

Two additional inputs are also enabled, input$hot_select and input$hot_comment, which will fire when a cell selection or a comment changes, respectively (if you would like to see more options, please post an issue or create a PR).

This functionality is still evolving, so please don't hesitate to share suggestions and PRs.