[开源]基于 JavaScript 快速构建 Web Excel,极简、高效、配置简单

开源系统分类系统
2026-06-28 08:54 12 次浏览 • 0 次下载 0KB
[开源]基于 JavaScript 快速构建 Web Excel,极简、高效、配置简单

一、开源项目简介

图片

基于 JavaScript 快速构建 Web Excel

极简、高效、配置简单

这是一个基于 Web(es6) canvas 构建的轻量级 Excel 开发库。

二、开源协议

使用MIT开源协议

三、界面展示

图片

四、功能概述

轻量级

完整功能,包含所有插件。代码打包后只不到 200kb

易于使用

如果只需要一些简单的功能可以零配置

数据驱动

调整数据非常的简单快捷

基础功能

已经支持下列功能

  • 撤销重做

  • 添加行列

  • 删除行列

  • 隐藏行列

  • 动态调整行列功能

  • 冻结行列

  • 添加边框/颜色/边框线条样式

  • 合并单元格

  • 复制

  • 粘贴

  • 打印

  • 公式

  • 筛选

  • 自动填充

  • 多表支持

  • 字体样式

  • 自定义字体/大小/颜色

  • 填充前景色/背景色

  • 格式校验

  • 对齐方式

  • 文字换行

五、技术选型

快速入门开发

CDN

你可以直接在 html 静态文件中引入

<link rel="stylesheet" href="https://unpkg.com/x-data-spreadsheet@1.1.9/dist/xspreadsheet.css">
<script src="https://unpkg.com/x-data-spreadsheet@1.1.9/dist/xspreadsheet.js"></script>

<script>
  x_spreadsheet('#xspreadsheet');
</script>

NPM

你可以使用 npm 包的形式安装

# 基于项目构建
  npm install x-data-spreadsheet

在 html 中

<div id="x-spreadsheet-demo"></div>

在 js 中

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()

默认配置

{
  mode: 'edit', // edit | read
  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,
    },
  },
}

导入和导出

关于如何导出,请查看 如果需要自定义导出,可以使用 SheetJs 来完成导出,并且再次感谢

绑定事件

简单的事件绑定

const s = new Spreadsheet("#x-spreadsheet-demo")
 // event of click on cell
 s.on('cell-selected', (cell, ri, ci) => {});
 s.on('cells-selected', (cell, { sri, sci, eri, eci }) => {});
 // edited on cell
 s.on('cell-edited', (text, ri, ci) => {});

快速设定单元格值

通过instance.cellText(ri,ci,text)来设定值,调用reRender()来刷新,你将会看到数据的变化

const s = new Spreadsheet("#x-spreadsheet-demo")
  s.cellText(5, 5, 'xxxx').cellText(6, 5, 'yyy').reRender();

获取选定表格中单元的样式和值

const s = new Spreadsheet("#x-spreadsheet-demo")
// cell(ri, ci, sheetIndex = 0)
s.cell(ri, ci);
// cellStyle(ri, ci, sheetIndex = 0)
s.cellStyle(ri, ci);

快速本地化

如果是在 js 中引入

如果遇到更多问题,可以查看 issue #281

// 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'))

可以使用 CDN

<!-- Import via CDN -->
<link rel="stylesheet" href="https://unpkg.com/x-data-spreadsheet@1.1.9/dist/xspreadsheet.css">
<script src="https://unpkg.com/x-data-spreadsheet@1.1.9/dist/xspreadsheet.js"></script>
<script src="https://unpkg.com/x-data-spreadsheet@1.1.9/dist/locale/zh-cn.js"></script>

<script>
  x_spreadsheet.locale('zh-cn');
</script>

加入开发者

# 拉取<repo>
  访问一飞开源:https://code.exmay.com/ 下载
  # 进入项目开发目录
  cd x-spreadsheet
  # 安装相关依赖
  npm install
  # just do it
  npm run dev

浏览器支持

chrome, firefox, Safari