10万行数据1秒内排序,智表 ZCELL 让你轻松驾驭数据秩序
在数据驱动决策的时代,面对海量杂乱的数据,快速梳理出清晰的逻辑秩序是提升工作效率的关键。无论是筛选销售榜单中的 Top 产品、整理员工信息表中的职级与入职时间,还是按自定义规则排列特殊业务数据,排序功能都是数据处理环节的 “刚需工具”。传统表格工具的排序功能常受限于操作繁琐、多条件排序逻辑复杂、自定义规则难实现等问题,而智表 ZCELL 凭借其灵活、高效的排序能力,彻底解决这些痛点,让数据排序从 “耗时操作” 变为 “一键搞定”。
一、插件初始化与数据源初始化
在演示之前,需要先做好插件和数据源初始化工作,具体步骤如下:
以下是具体代码示例:
- 初始化 zcell插件
//初始化ZCELL
var options = {
container: document.getElementById("zcell-container"),
};
zcell_io = new ZCell.WorkBook(options);
2. 初始化工作表,设置表头冻结,行数为10万行
//初始化SHEET let sheetoption = { name: "sheet01", //表格名 rowCount: 100000, //行数 colCount: 10, // 列数 showRowLab: 0, //行标签不显示 showColLab: 0, //列标签不显示 rowHSize: 30, //默认行高 colWSize: 100, //默认列宽 freezeTop: 0, //顶部冻结 showFreezeLine: 0, //冻结线不显示 }; sheet = zcell_io.AppendSheet(sheetoption);
3. 设置表头和样式,也可以不设置
//#region ------设置表头 文本和样式----- sheet.SetCellValue(0, 0, "序号"); sheet.SetCellValue(0, 1, "人物"); sheet.SetCellValue(0, 2, "等级"); sheet.SetCellValue(0, 3, "特征1"); sheet.SetCellValue(0, 4, "特征2"); sheet.SetCellValue(0, 5, "特征3"); sheet.SetCellValue(0, 6, "特征4"); sheet.SetCellValue(0, 7, "特征5"); //表头样式 let headstyle1 = { hAlign: "center", fontBold: 1, backColor: "#886600", fontColor: "#FFFFFF", }; sheet.SetCellStyle(0, 0, headstyle1); sheet.SetCellStyle(0, 1, headstyle1); sheet.SetCellStyle(0, 2, headstyle1); sheet.SetCellStyle(0, 3, headstyle1); sheet.SetCellStyle(0, 4, headstyle1); sheet.SetCellStyle(0, 5, headstyle1); sheet.SetCellStyle(0, 6, headstyle1); sheet.SetCellStyle(0, 7, headstyle1); //设置列宽 sheet.SetColWidth(3, 3, 200); //设置列宽 //#endregion ------设置表头 文本和样式-----
4. 准备数据集和数据源,并绑定到工作表
//准备数据集 var datas = []; for (let i = 0; i < 100000; i++) { let randv = getRandomInt(1, 4); let sv; if (randv == "1") sv = "甲等"; else if (randv == "2") sv = "乙等"; else if (randv == "3") sv = "丙等"; else if (randv == "4") sv = "丁等"; let item = { rowno: "行号" + i, person: "徒弟" + getRandomInt(1, 4), status: sv, lableval: i * 2 + 1, lableval2: i * 2 + 2, lableval3: i * 2 + 3, lableval4: i * 2 + 4, lableval5: i * 2 + 5, }; datas.push(item); } //#region --------准备数据源-------- let option2 = { name: "data1", type: 1, //0- datacard,1是 datatable data: datas, startrow: 1, // datatable 式需要设置 startcol: "A", // datatable 式需要设置 autoBindColumn: true, }; let ds = sheet.CreatDataSource(option2); //绑定数据源 sheet.BindDataSource(ds);
数据加载后效果如下:
二、单字段基础排序:极简操作,秒变有序数据
智表 ZCELL 的基础排序功能遵循 “简单易用” 的设计原则,开发者无需复杂配置,通过几行代码即可实现单字段的升序或降序排列,满足日常数据整理的基础需求。无论是文本、数字还是日期类型的数据,智表 ZCELL 都能精准识别并快速排序,让杂乱数据瞬间变得条理清晰。
- 排序参数设置,设置排序的列号和顺序,支持升序和降序
//排序参数设置 let option = { sortinfo: [ { sortindex: "B", //排序列号,必须大写,对B列进行排序 sortorder: "asc", //支持 asc 和 desc ,按照升序排序 }, ], };
2. 开始排序,调用排序方法,知名排序起始行列和结束行列的范围。
//开始时间 var myTime1 = window.performance.now(); //执行排序方法,排序范围为 0行,0列开始到 99999行 和 7列 sheet.SortArea(0, 0, 99999, 7, option); //结束时间 var myTime2 = window.performance.now(); let timecost = (myTime2 - myTime1) / 1000; $("#timecost1").html(timecost + "秒"); //输出耗时
点击按钮后,数据立即按照 B列 从低到高排列,排序范围内的数据都会跟随排列,不在排序范围内数据则会保持不动。耗时显示0.85秒,整个过程无延迟,操作直观高效。
三、多列排序:复杂条件下的精准数据梳理
在实际业务场景中,单一字段排序往往无法满足需求。例如,HR 整理员工表时,需要先按 “部门” 分组,再按 “入职时间” 降序排列(同一部门内,新员工在前);电商平台分析订单时,需先按 “订单状态”(已付款>待付款>已取消)排序,再按 “下单时间” 降序排列。此时,智表 ZCELL 的多列排序功能就能发挥关键作用,支持按多个字段的优先级依次排序,让数据逻辑更贴合业务场景。还是以上面已经初始化的数据源为例进行演示。
- 多列排序时排序参数设置。
通过数组配置排序规则,数组中字段的顺序即为排序优先级(先按第一个字段排序,若第一个字段值相同,则按第二个字段排序,以此类推)。我们先以B列作为主排序字段,相同时再用D列作为排序字段。
//排序参数设置 let option = { sortinfo: [ { sortindex: "B", //排序列号,必须大写 先以B列升序排序 sortorder: "asc", //支持 asc 和 desc }, { sortindex: "D", //再以D列降序排序 sortorder: "desc", }, ], };
2. 执行排序,执行排序方法与单列排序时相同,非常简单。
//开始时间 var myTime1 = window.performance.now(); //执行排序方法 sheet.SortArea(0, 0, 99999, 7, option); //结束时间 var myTime2 = window.performance.now(); let timecost = (myTime2 - myTime1) / 1000; $("#timecost1").html(timecost + "秒");
点击按钮排序后,数据先按照人物名称进行排序,同一人物时,再按照特征1列值进行排序,整体耗时显示0.88秒,整个过程无延迟。
三、自定义排序:突破规则限制,适配特殊业务场景
除了基础排序和多列排序,实际工作中还会遇到 “非标准排序规则” 的需求。例如:
- 电商平台的 “商品状态” 需按 “在售>预售>下架” 排序(而非字母或数字顺序);
- 物流系统的 “配送优先级” 需按 “紧急>普通>延迟” 排序;
- 教育机构的 “班级类型” 需按 “实验班>重点班>普通班” 排序。
这些场景下,传统排序功能无法满足需求,而智表 ZCELL 的自定义排序功能,允许开发者通过自定义比较函数,实现任意规则的排序,彻底突破标准排序的限制。
继续以上面的初始化数据为列,步骤如下:
- 自定义比较函数,如下所示,我们定义固定数组,按照数组内元素数据位置进行比较。
//自定义排序函数 function mysortfun(a, b) { let datas = ["甲等", "乙等", "丙等", "丁等"]; let indexa = datas.indexOf(a); let indexb = datas.indexOf(b); return indexa - indexb; }
2. 定义排序参数,对于C列(等级列),我们采用自定义比较函数进行比较,引用我们定义好的函数
//排序参数设置 let option = { sortinfo: [ { sortindex: "B", //排序列号,必须大写 sortorder: "asc", //支持 asc 和 desc }, { sortindex: "C", sortorder: "asc", sortfun: mysortfun, //这里引用自定义比较函数, }, ], };
3. 执行排序,调用方法与前面一致
//开始时间 var myTime1 = window.performance.now(); //执行排序方法 sheet.SortArea(0, 0, 99999, 7, option); //结束时间 var myTime2 = window.performance.now(); let timecost = (myTime2 - myTime1) / 1000; $("#timecost1").html(timecost + "秒");
点击按钮后,数据先按照人物名称进行排序,同一人物时,再按照等级列进行排序,整体耗时显示0.92秒,整个过程无延迟。
通过自定义比较函数,任何复杂的排序逻辑都能轻松实现,让排序功能完全适配业务场景。
四、智表 ZCELL 排序功能的核心优势
相比传统表格工具或其他前端表格组件,智表 ZCELL 的排序功能具有三大核心优势:
- 高效性能:采用优化的排序算法,即使面对 10 万级海量数据,排序响应时间仍控制在 1秒 以内,无卡顿延迟;
- 操作灵活:支持单列排序、多列排序、自定义排序三种模式,可通过 API 快速切换,也可结合 UI 组件(如排序按钮、下拉菜单)实现用户自主排序;
无论是企业级的数据管理系统(如 CRM、ERP)、电商平台的商品分析模块,还是教育机构的成绩管理工具,智表 ZCELL 的排序功能都能帮助开发者快速实现数据梳理,让用户轻松驾驭数据秩序,高效挖掘数据价值。
现在,智表 ZCELL 已开放免费试用,立即接入智表zcell官网进行测试,体验排序功能带来的便捷与高效!如需定制化排序方案,还可联系技术团队获取专属支持,让数据处理效率再升级。

浙公网安备 33010602011771号