记录:handsontable,在线表格编辑插件
地址:https://github.com/handsontable/handsontable
效果:
使用:
<link rel="stylesheet" href="/static/jsConversion/chartTool/css/jquery.handsontable.full.css">
<script src="/static/jsConversion/chartTool/js/jquery.handsontable.full.js"></script>
//下面是用于导入excel的js
<script src="/static/jsConversion/chartTool/js/xlsx.full.min.js"></script>
<script src="/static/jsConversion/chartTool/js/xlsx.core.min.js"></script>
容器:
<div id="dataTable"></div>
常见方法:
//准备数据
var data = [
["2020年", "销售额(万元)"],
["第一季度", 120],
["第二季度", 158],
["第三季度", 201],
["第四季度", 280]
]
var container = $("#dataTable").handsontable({
// data: data,
minRows: 8,
minCols: 7,
startRows: 5,
startCols: 5,
rowHeaders: true,
colHeaders: true,
minSpareRows: 1,
minSpareCols: 1,
contextMenu: true,
manualColumnResize: true,
useFormula: true
})
//常用的几种方法
//清楚表格数组
$("#dataTable").handsontable("clear");
//加载渲染数据
$("#dataTable").handsontable("loadData", data);//加载
//获取表格中的数据
var $container = $("#dataTable");
var handsontable = $container.data('handsontable');//获取当前handsontable
var dataAll = handsontable.getData();//获取所有值
excel表格导入渲染
<input class="choseExcel" style="display: none;" type="file" onchange="importf(this)"
accept=".csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" />
// excel文件导入
var wb;//读取
var rABS = false;
//开始导入
function importf(obj) {
if (!obj.files) {
return;
}
var f = obj.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
if (rABS) {
wb = XLSX.read(btoa(fixdata(data)), {//手动转化
type: 'base64'
});
} else {
wb = XLSX.read(data, {
type: 'binary'
});
}
/**
* wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
* wb.Sheets[Sheet名]获取第一个Sheet的数据
*/
var excelJson = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
jsonImportTable(excelJson)
};
if (rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
}
// 将导入的excel数据渲染到表格中
function jsonImportTable(jsonData) {
var importData = [];
var keyArr = [];
for (var key in jsonData[0]) {
keyArr.push(key);
}
importData.push(keyArr)
for (var i = 0; i < jsonData.length; i++) {
var _arr = [];
for (var j = 0; j < keyArr.length; j++) {
_arr.push(jsonData[i][keyArr[j]])
}
importData.push(_arr);
}
$("#dataTable").handsontable("clear");
$("#dataTable").handsontable("loadData", importData);//加载s
}
将表格导出
handsontable没有提供导出表格的方法
可参考我之前的文章:https://blog.csdn.net/qq_35168861/article/details/109452323