{"id":13437561,"url":"https://github.com/myliang/x-spreadsheet","last_synced_at":"2025-05-14T22:05:37.345Z","repository":{"id":37406042,"uuid":"147656990","full_name":"myliang/x-spreadsheet","owner":"myliang","description":"The project has been migrated to @wolf-table/table https://github.com/wolf-table/table","archived":false,"fork":false,"pushed_at":"2024-08-07T14:04:44.000Z","size":4066,"stargazers_count":14414,"open_issues_count":408,"forks_count":1746,"subscribers_count":254,"default_branch":"master","last_synced_at":"2025-05-14T22:04:31.306Z","etag":null,"topics":["canvas","es6","excel","javascript","js","spreadsheet"],"latest_commit_sha":null,"homepage":"https://myliang.github.io/x-spreadsheet","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/myliang.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":"x-spreadsheet","ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2018-09-06T10:24:23.000Z","updated_at":"2025-05-14T21:28:42.000Z","dependencies_parsed_at":"2023-01-29T13:00:31.412Z","dependency_job_id":"3dd46011-422a-4e94-a716-56147719465e","html_url":"https://github.com/myliang/x-spreadsheet","commit_stats":{"total_commits":504,"total_committers":36,"mean_commits":14.0,"dds":0.1686507936507936,"last_synced_commit":"0c55f3ee1e708002eaef280432d6efeaeabdc886"},"previous_names":[],"tags_count":27,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myliang%2Fx-spreadsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myliang%2Fx-spreadsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myliang%2Fx-spreadsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/myliang%2Fx-spreadsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/myliang","download_url":"https://codeload.github.com/myliang/x-spreadsheet/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254235687,"owners_count":22036962,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvas","es6","excel","javascript","js","spreadsheet"],"created_at":"2024-07-31T03:00:58.318Z","updated_at":"2025-05-14T22:05:37.285Z","avatar_url":"https://github.com/myliang.png","language":"JavaScript","funding_links":["https://opencollective.com/x-spreadsheet"],"categories":["JavaScript","Libraries","Typescript / Javascript","es6","Programming Languages","Repository","canvas","工具","Svg/Canvas","📦 Legacy \u0026 Inactive Projects","电子表格"],"sub_categories":["Spreadsheet","JavaScript","Office","调试","运行器e2e测试"],"readme":"# x-spreadsheet\n\n[![npm package](https://img.shields.io/npm/v/x-data-spreadsheet.svg)](https://www.npmjs.org/package/x-data-spreadsheet)\n[![NPM downloads](http://img.shields.io/npm/dm/x-data-spreadsheet.svg)](https://npmjs.org/package/x-data-spreadsheet)\n[![NPM downloads](http://img.shields.io/npm/dt/x-data-spreadsheet.svg)](https://npmjs.org/package/x-data-spreadsheet)\n[![Build passing](https://travis-ci.org/myliang/x-spreadsheet.svg?branch=master)](https://travis-ci.org/myliang/x-spreadsheet)\n[![codecov](https://codecov.io/gh/myliang/x-spreadsheet/branch/master/graph/badge.svg)](https://codecov.io/gh/myliang/x-spreadsheet)\n![GitHub](https://img.shields.io/github/license/myliang/x-spreadsheet.svg)\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/myliang/x-spreadsheet.svg)\n[![Join the chat at https://gitter.im/x-datav/spreadsheet](https://badges.gitter.im/x-datav/spreadsheet.svg)](https://gitter.im/x-datav/spreadsheet?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n\n\u003e A web-based JavaScript spreadsheet\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/myliang/x-spreadsheet\"\u003e\n    \u003cimg width=\"100%\" src=\"https://raw.githubusercontent.com/myliang/x-spreadsheet/master/docs/demo.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n## Document\n* en\n* [zh-cn 中文](https://hondrytravis.github.io/x-spreadsheet-doc/)\n\n## CDN\n```html\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/x-data-spreadsheet@1.1.5/dist/xspreadsheet.css\"\u003e\n\u003cscript src=\"https://unpkg.com/x-data-spreadsheet@1.1.5/dist/xspreadsheet.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\n   x_spreadsheet('#xspreadsheet');\n\u003c/script\u003e\n```\n\n## NPM\n\n```shell\nnpm install x-data-spreadsheet\n```\n\n```html\n\u003cdiv id=\"x-spreadsheet-demo\"\u003e\u003c/div\u003e\n```\n\n```javascript\nimport Spreadsheet from \"x-data-spreadsheet\";\n// If you need to override the default options, you can set the override\n// const options = {};\n// new Spreadsheet('#x-spreadsheet-demo', options);\nconst s = new Spreadsheet(\"#x-spreadsheet-demo\")\n  .loadData({}) // load data\n  .change(data =\u003e {\n    // save data to db\n  });\n\n// data validation\ns.validate()\n```\n\n```javascript\n// default options\n{\n  mode: 'edit', // edit | read\n  showToolbar: true,\n  showGrid: true,\n  showContextmenu: true,\n  view: {\n    height: () =\u003e document.documentElement.clientHeight,\n    width: () =\u003e document.documentElement.clientWidth,\n  },\n  row: {\n    len: 100,\n    height: 25,\n  },\n  col: {\n    len: 26,\n    width: 100,\n    indexWidth: 60,\n    minWidth: 60,\n  },\n  style: {\n    bgcolor: '#ffffff',\n    align: 'left',\n    valign: 'middle',\n    textwrap: false,\n    strike: false,\n    underline: false,\n    color: '#0a0a0a',\n    font: {\n      name: 'Helvetica',\n      size: 10,\n      bold: false,\n      italic: false,\n    },\n  },\n}\n```\n\n## import | export xlsx\n\nhttps://github.com/SheetJS/sheetjs/tree/master/demos/xspreadsheet#saving-data\n\nthanks https://github.com/SheetJS/sheetjs\n\n## Bind events\n```javascript\nconst s = new Spreadsheet(\"#x-spreadsheet-demo\")\n// event of click on cell\ns.on('cell-selected', (cell, ri, ci) =\u003e {});\ns.on('cells-selected', (cell, { sri, sci, eri, eci }) =\u003e {});\n// edited on cell\ns.on('cell-edited', (text, ri, ci) =\u003e {});\n```\n\n## update cell-text\n```javascript\nconst s = new Spreadsheet(\"#x-spreadsheet-demo\")\n// cellText(ri, ci, text, sheetIndex = 0)\ns.cellText(5, 5, 'xxxx').cellText(6, 5, 'yyy').reRender();\n```\n\n## get cell and cell-style\n```javascript\nconst s = new Spreadsheet(\"#x-spreadsheet-demo\")\n// cell(ri, ci, sheetIndex = 0)\ns.cell(ri, ci);\n// cellStyle(ri, ci, sheetIndex = 0)\ns.cellStyle(ri, ci);\n```\n\n## Internationalization\n```javascript\n// npm \nimport Spreadsheet from 'x-data-spreadsheet';\nimport zhCN from 'x-data-spreadsheet/dist/locale/zh-cn';\n\nSpreadsheet.locale('zh-cn', zhCN);\nnew Spreadsheet(document.getElementById('xss-demo'));\n```\n```html\n\u003c!-- Import via CDN --\u003e\n\u003clink rel=\"stylesheet\" href=\"https://unpkg.com/x-data-spreadsheet@1.1.5/dist/xspreadsheet.css\"\u003e\n\u003cscript src=\"https://unpkg.com/x-data-spreadsheet@1.1.5/dist/xspreadsheet.js\"\u003e\u003c/script\u003e\n\u003cscript src=\"https://unpkg.com/x-data-spreadsheet@1.1.5/dist/locale/zh-cn.js\"\u003e\u003c/script\u003e\n\n\u003cscript\u003e\n  x_spreadsheet.locale('zh-cn');\n\u003c/script\u003e\n```\n\n## Features\n  - Undo \u0026 Redo\n  - Paint format\n  - Clear format\n  - Format\n  - Font\n  - Font size\n  - Font bold\n  - Font italic\n  - Underline\n  - Strike\n  - Text color\n  - Fill color\n  - Borders\n  - Merge cells\n  - Align\n  - Text wrapping\n  - Freeze cell\n  - Functions\n  - Resize row-height, col-width\n  - Copy, Cut, Paste\n  - Autofill\n  - Insert row, column\n  - Delete row, column\n  - hide row, column\n  - multiple sheets\n  - print\n  - Data validations\n\n## Development\n\n```sheel\ngit clone https://github.com/myliang/x-spreadsheet.git\ncd x-spreadsheet\nnpm install\nnpm run dev\n```\n\nOpen your browser and visit http://127.0.0.1:8080.\n\n## Browser Support\n\nModern browsers(chrome, firefox, Safari).\n\n## LICENSE\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyliang%2Fx-spreadsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmyliang%2Fx-spreadsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmyliang%2Fx-spreadsheet/lists"}