Share

Spreadshit: A spreadsheet that runs offline in your browser

Spreadshit

Spreadshit is a simple spreadsheet calculator, like Microsoft Excel, OpenOffice Calc, LibreOffice Calc, or Google Sheets. Unlike these,

How it works

A Spreadshit is an HTML file that stores a spreadsheet. By help of Javascript, this HTML file is interactive and behaves approximately like a normal Excel file. You can save the Spreadshit to your hard drive, you can send it around by email, or you can put it on the Web. Anybody who opens a Spreadshit with their own browser can modify the Spreadshit without any additional software, and then save a copy.

For technical reasons, Spreadshit works only in Firefox and Chrome so far. Also, for security reasons, the browser cannot save your modified Spreadshit to disk. You have to use the SAVE button inside the Spreadshit.

Here is how a Spreadshit looks:

Try it out!  
Download!

Help

How can I...

Save a file
You have to use the SAVE button that is on the top right of the Spreadshit. This button will invite you to “download” the file, i.e., you have to say that you want to download the file into the folder where the file lives anyway, and that you want to overwrite the old version of the file. This complicated procedure is due to security reasons (Javascript is not allowed to access your hard drive).
Copy cells
Go to the upper left cell of the range that you want to copy. Press SHIFT, and use the cursor keys to go to the lower right cell of the range that you want to copy. Press CTRL+C (on Mac: Command+C). If you want to copy the cell values, make sure that the cursor is at the very beginning of the lower right cell. If you want to copy the cell formulas, move the cursor into the formula of lower right cell.
Import data from another spreadsheet
Open the other spreadsheet in Excel or LibreOffice. Select the range that you would like to copy. Press CTRL+C (on Mac: Command+C). Go to the Spreadshit. Go to the cell where you would like to paste. Press CTRL+V (on Mac: Command+V).
Save as PDF
Use the printing function of your browser. On a Mac, press Command+P, and click the little PDF button at the bottom left in the dialog window.
Fill a cell
Go to some cell and press ALT+DOWN. This copies the content of the cell to the cell below.
Import questionnaires
Create and send out the questionnaire. Then drag-and-drop one or several filled questionnaires into an empty table of a spreadshit. Drag into a cell so that the green plus sign appears.

Cell references

In Spreadshits, every column has a name, and every row has a name. You can change these names to your liking, by just clicking into the respective cell. Names can contain any characters except operators (such as -, *, /, etc.), brackets, and cell expression delimiters (., #, :).

You can refer to a cell by any of the following:

ColumnName.RowName
The cell given by that particular column name and row name, e.g., Lisa.Q1.
RowName.ColumnName
Equivalent to ColumnName.RowName.
ColumnName
The cell at the given column and the current row (!). If we use, e.g., Q1 in the 4th row, the value is the value in the 4th row of the column Q1.
RowName
The cell at the given row and the current column. If we use, e.g., Mary in the 4th column, the value is the value in the 4th column of the row Mary.
ColumnName.RowName1:RowName2
The vertical range (vector) from ColumnName.RowName1 to ColumName.RowName2. If ColumnName is omitted, the expression refers to the current column.
RowName.ColumnName1:ColumnName2
The horizontal range (vector) from RowName.ColumnName1 to RowName.ColumnName2. If RowName is omitted, the expression refers to the row column. This is used in the screenshot above in the gray cell.
RowName.#
The entire horizontal row (vector) given by the row name — except the first column. If used in the same row, the expression refers only to the cells to the left of the current cell.
ColumnName.#
The entire vertical row (vector) given by the column name — except the first row. If used in the same column, the expression refers only to the cells above the current cell.
To refer to the data in another table, prefix the above by “TableName#”.

Expressions

A cell can contain either a string or a mathematical expression. The latter have to start with a “=”. They can contain

Functions

Spreadshit supports the following functions so far:
SUM(vector)
computes the sum
PRODUCT(vector)
computes the product
SUMPRODUCT(vector, vector)
computes the dot product of the two vectors
AVERAGE(vector)
computes the average
COUNT(vector)
computes the number of cells in the vector that are not empty.
MAX(vector)
computes the maximum
MIN(vector)
computes the minimum
ROUND(value, number)
rounds the value to the given number of digits
AND(value, ...)
computes the logical AND
OR(value, ...)
computes the logical OR
NOT(value)
returns zero if the value evaluates to 0, and 1 else
IF(condition, value1, value2)
returns value2 if condition evaluates to zero, and value1 otherwise.
LOOKUP(value, vector, vector)
finds the value in the first vector, returns the value in the second vector at the same index position.
MAP(vector, expression)
computes a new vector from the given vector, in which every element is replaced by the expression. In the expression, “#” refers to the element in the original vector. For example, MAP(Q1:Q4, #*2) will return a new vector from Q1:Q4 in which every element is multiplied by two.

The MAP function serves to simulate the Excel functions COUNTIF, SUMIF, etc. For example:

Terms and Conditions

Spreadshit was programmed by Fabian M. Suchanek. It is available under a Creative Commons Attribution-Noncommercial License. This means you can use the program for free. You can even build on it, if you do so for non-commercial puproses, and if you credit the author. Finally, the license REJECTS ALL WARRANTIES AND GUARANTEES WHATSOEVER FOR THIS PRODUCT. This is not a professional program, but a personal tool. It may be useful to you — or not. The current version is 2017-04-15.

This page does not use cookies. This page is free of Javascript. The share-button does not transmit information unless clicked.