引言
x-spreadsheet是一款开源的基于Web的Javascript电子表格,在Github获得6k+的star,它在功能上有点类似于google sheet,可以说是简化版的web excel,虽然没excel那么强大,但也能够应付一些需求了。
Github和体验地址
Github:https://github.com/myliang/x-spreadsheet
DEMO:https://myliang.github.io/x-spreadsheet/
安装
提供两种方式
- 直接引用(使用cdn或者下载到本地)
 
<link rel="stylesheet" href="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/xspreadsheet.css"> <script src="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/xspreadsheet.js"></script>
- NPM安装
 
npm install x-data-spreadsheet
使用方式
<div id="xspreadsheet"></div>
<script>
 x.spreadsheet('#xspreadsheet');
</script>
在浏览器运行结果如图:
或者你也可以使用模块化的方式使用
import Spreadsheet from "x-data-spreadsheet";
// If you need to override the default options, you can set the override
// const options = {};
// new Spreadsheet('#x-spreadsheet-demo', options);
const s = new Spreadsheet("#x-spreadsheet-demo")
 .loadData({}) // load data
 .change(data => {
 // save data to db
 });
// data validation
s.validate()
所有默认的配置
{
 showToolbar: true,
 showGrid: true,
 showContextmenu: true,
 view: {
 height: () => document.documentElement.clientHeight,
 width: () => document.documentElement.clientWidth,
 },
 row: {
 len: 100,
 height: 25,
 },
 col: {
 len: 26,
 width: 100,
 indexWidth: 60,
 minWidth: 60,
 },
 style: {
 bgcolor: '#ffffff',
 align: 'left',
 valign: 'middle',
 textwrap: false,
 strike: false,
 underline: false,
 color: '#0a0a0a',
 font: {
 name: 'Helvetica',
 size: 10,
 bold: false,
 italic: false,
 },
 },
}
国际化
<!-- Import via CDN -->
<link rel="stylesheet" href="https://unpkg.com/x-data-spreadsheet@1.0.13/dist/xspreadsheet.css">
<script src="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/xspreadsheet.js"></script>
<script src="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/locale/zh-cn.js"></script>
<script>
 x.spreadsheet.locale('zh-cn');
</script>
或者
// npm 
import Spreadsheet from 'x-data-spreadsheet';
import zhCN from 'x-data-spreadsheet/dist/locale/zh-cn';
Spreadsheet.locale('zh-cn', zhCN);
new Spreadsheet(document.getElementById('xss-demo'));
上图是我测试中文的
功能
它包含了一些基本用得到的功能
- 撤销和重做
 - 背景色
 - 格式清除
 - 格式化
 - 字型
 - 字体大小
 - 字体粗体
 - 字体斜体
 - 下划线
 - 删除线
 - 文本颜色
 - 填充颜色
 - 边界
 - 合并单元格
 - 对齐
 - 文本换行
 - 固定单元格
 - 函数
 - 调整尺寸行高,宽
 - 复制,剪切,粘贴
 - 自动填充
 - 插入行、列
 - 删除行、列
 - 数据验证
 
完整实例代码,可直接运行
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <meta http-equiv="X-UA-Compatible" content="ie=edge">
 <title>x-spreadsheet</title>
 <link rel="stylesheet" href="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/xspreadsheet.css">
 <script src="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/xspreadsheet.js"></script>
 <script src="https://unpkg.com/x-data-spreadsheet@1.0.21/dist/locale/zh-cn.js"></script>
</head>
<body onload="load()">
 <div id="x-spreadsheet-demo"></div>
 <script>
 function load() {
 x.spreadsheet.locale('zh-cn');
 var table = x.spreadsheet('#x-spreadsheet-demo', {})
 .loadData({
 freeze: 'B3',
 styles: [{
 bgcolor: '#f4f5f8',
 textwrap: true,
 color: '#900b09',
 border: {
 top: ['thin', '#0366d6'],
 bottom: ['thin', '#0366d6'],
 right: ['thin', '#0366d6'],
 left: ['thin', '#0366d6'],
 },
 }, ],
 merges: [
 'C3:D4',
 ],
 rows: {
 1: {
 cells: {
 0: {
 text: 'testingtesttestetst'
 },
 2: {
 text: 'testing'
 },
 },
 },
 2: {
 cells: {
 0: {
 text: 'render',
 style: 0
 },
 1: {
 text: 'Hello'
 },
 2: {
 text: 'haha',
 merge: [1, 1]
 },
 }
 },
 8: {
 cells: {
 8: {
 text: 'border test',
 style: 0
 },
 }
 }
 },
 });
 table.change((cdata) => {
 // console.log(cdata);
 console.log(table.validate());
 console.log(table);
 });
 }
 </script>
</body>
</html>
兼容性
支持主流浏览器(chrome, firefox, Safari),Edge貌似有问题,本地测试未通过
总结
值得注意的是在Github提供的cdn中版本号较低,在国际化的时候会出现错误,因此在更改官网的cdn版本至1.0.21即可,可以直接使用我上面更改后的,已经亲自测试过,如果你觉得它对你有帮助,请麻烦点赞、转发加关注哟!后续更多实用技巧和工具等着你!

本文暂时没有评论,来添加一个吧(●'◡'●)