All Projects → ticruz38 → svelte-sheets

ticruz38 / svelte-sheets

Licence: other
Blazing fast excel sheets in the browser, hugely inspired by JExcel, built with Svelte and XLSX.

Programming Languages

Svelte
593 projects
javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to svelte-sheets

eec
A fast and lower memory excel write/read tool.一个非POI底层,支持流式处理的高效且超低内存的Excel读写工具
Stars: ✭ 93 (+106.67%)
Mutual labels:  excel, xlsx
exoffice
Library to parse common excel formats (xls, xlsx, csv)
Stars: ✭ 31 (-31.11%)
Mutual labels:  excel, xlsx
spreadsheet
Yii2 extension for export to Excel
Stars: ✭ 79 (+75.56%)
Mutual labels:  excel, xlsx
Dexiom.EPPlusExporter
A very simple, yet incredibly powerfull library to generate Excel documents out of objects, arrays, lists, collections, etc.
Stars: ✭ 19 (-57.78%)
Mutual labels:  excel, xlsx
excel-merge
A PHP library to merge two or more Excel files into one
Stars: ✭ 26 (-42.22%)
Mutual labels:  excel, xlsx
xlsx reader
A production-ready XLSX file reader for Elixir.
Stars: ✭ 46 (+2.22%)
Mutual labels:  excel, xlsx
spark-hadoopoffice-ds
A Spark datasource for the HadoopOffice library
Stars: ✭ 36 (-20%)
Mutual labels:  excel, xlsx
easy-excel
🚀 快速读写Excel文件,简单高效
Stars: ✭ 118 (+162.22%)
Mutual labels:  excel, xlsx
sheet2dict
Simple XLSX and CSV to dictionary converter
Stars: ✭ 206 (+357.78%)
Mutual labels:  excel, xlsx
excelizor
A simple tool to export .xlsx files to lua-table, json and their corresponding csharp classes and golang structs
Stars: ✭ 35 (-22.22%)
Mutual labels:  excel, xlsx
fxl
fxl is a Clojure spreadsheet library
Stars: ✭ 117 (+160%)
Mutual labels:  excel, xlsx
hfexcel
JSON to Excel in Python. 🐍 Human Friendly excel creation in python. 📄 easy, advanced and smart api. json to excel conversion support.. ❤️
Stars: ✭ 16 (-64.44%)
Mutual labels:  excel, xlsx
xlsx-js-style
SheetJS Community Edition + Basic Cell Styles
Stars: ✭ 129 (+186.67%)
Mutual labels:  excel, xlsx
OpenSpreadsheet
OpenSpreadsheet provides an easy-to-use wrapper around the OpenXML spreadsheet SAX API. It specializes in efficiently reading and writing between strongly typed collections and worksheets.
Stars: ✭ 24 (-46.67%)
Mutual labels:  excel, xlsx
xltpl
A python module to generate xls/x files from a xls/x template.
Stars: ✭ 46 (+2.22%)
Mutual labels:  excel, xlsx
umya-spreadsheet
A pure rust library for reading and writing spreadsheet files
Stars: ✭ 79 (+75.56%)
Mutual labels:  excel, xlsx
xlsx-reader
xlsx-reader is a PHP library for fast and efficient reading of XLSX spreadsheet files. Its focus is on reading the data contained within XLSX files, disregarding all document styling beyond that which is strictly necessary for data type recognition. It is built to be usable for very big XLSX files in the magnitude of multiple GBs.
Stars: ✭ 40 (-11.11%)
Mutual labels:  excel, xlsx
Qxlnt
Use xlnt in Qt 5 or 6. xlnt is cross-platform user-friendly xlsx library for C++14.
Stars: ✭ 66 (+46.67%)
Mutual labels:  excel, xlsx
MiniExcel
Fast, Low-Memory, Easy Excel .NET helper to import/export/template spreadsheet
Stars: ✭ 996 (+2113.33%)
Mutual labels:  excel, xlsx
fxl.js
ƛ fxl.js is a data-oriented JavaScript spreadsheet library. It provides a way to build spreadsheets using modular, lego-like blocks.
Stars: ✭ 27 (-40%)
Mutual labels:  excel, xlsx

Svelte Spreadsheets

Ultra fast excel sheets in the browser. Hugely inspired by JExcel, built on XLSX shoulders.

=> Find a live example Here Open it in Chrome! I did not bother with postCSS. Code is in the docs foder

Motivation

Making excel sheets a reality in the browser can be incredibly difficult, keeping good performance while drawing and editing large amount of data in the DOM is the ultimate challenge for a web developper. The best implementation I could find was the awesome vanillajs jexcel by Paul Hodel.
However, opening really big spreadsheet would still block the JS thread for a minute or two. Following Rich Harris talk about reactivity, I decided to take the idea behind Jexcel and adapt it to Svelte, making use of a Virtual List to keep the DOM small and light at all times.

Known limitation

You will need to have typescript svelte-preprocess enabled in your webpack/rollup configuration

Installation

npm i -S svelte-sheets

Example

<script>
  import { Sheet } from "svelte-sheets";

  let style = {
    "A1": "background-color: red"
  }
  let mergeCells = {
    "A1": [5, 0] // 5 horizontally merged cell (colspan), 0 vertically merged cells (rowspan)
  }
  let columns = [
    {width: "50px"}
  ]
  let data = [["mazda", "renault", "volkswagen"]["10000km", "20000km", "300000km"]];
</script>

<Sheet
    {style}
    {mergeCells}
    {columns}
    {data}
 />

Alternatively you can use the toolbar to open any kind of excel files

<script>
  import { Sheet, Toolbar } from "svelte-sheets";

  let sheetNames;
  let sheets;
  let active;
  let data;
  let columns;
  let mergeCells;
  let style;

  $: {
    data = sheets[active].data
    columns = sheets[active].columns
    mergeCells = sheets[active].mergeCells
    style = sheets[active].style
  }
</script>

<Toolbar
  bind:sheetNames
  bind:sheets
  bind:active
/>
<Sheet
    {style}
    {mergeCells}
    {columns}
    {data}
 />

You can configure the table such as height and many other things with the options props:

let options = {
  tableHeight: "90vh",
  defaultColWidth: "50px"
}

Many of this options will be implemented later, so expect most of them to be unresponsible.

Things yet to be done

  • Make a svelte REPL demonstrating the library (awaiting repl typescript support)
  • Undo/Redo (mapping keyboard shortcuts)
  • shift+click should extend the selection
  • Resizing rows/columns
  • Filtering
  • Copy/Paste
  • Comments on cells
  • Support more that number, string or boolean in cells. let's say charts, datepickers etc...
  • Implement a tooltip when right clicking a cell with a list of actions
  • All other excel features you can think of
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].