找回密码
 立即注册
首页 业界区 业界 可编辑前端列表页面,让你的用户直接粘贴录入数据 ...

可编辑前端列表页面,让你的用户直接粘贴录入数据

梅克 2025-6-28 11:34:05
​在所有的web页面开发过程中,列表都是必不可少的,列表数据的采集,一般都是要通过新增表单页实现,用户数据录入的效率都是非常低的,这里通过实现可编辑列表页,让用户通过列表页直接维护数据,且可以直接通过粘贴方式实现,不用逐行手工维护,大幅提高数据录入速度,为终端用户提供最优体验。我的实现是通过引入智表ZCELL插件实现的,当然你也可以引入其他在线EXCEL插件,看个人需要。下面看看我的实现方式,希望能为你提供有价值的参考:一、下载插件并引入

下载插件后,在head内添加引用。注意引用路径是相对路径。
  1.    
  2.    
  3.    
复制代码
1.gif

二、插入页面元素,并设置插件容器

插入查询条件和查询按钮元素:
  1.    
  2.    
  3.         
  4.    
  5.           查询      新增   
复制代码
2.gif

插入智表插件容器
  1.    
  2.    
  3.         
  4.    
  5.          
复制代码
3.gif

三、插件表格初始化

截止目前需要准备工作已经完成,我们就可以开始编写JS,来初始化插件了。
首先初始化一个工作簿,在指定的容器内进行创建
  1. //初始化ZCELL
  2.         var options = {
  3.           container: document.getElementById("zcell-container"),
  4.         };
  5.         zcell = new ZCell.WorkBook(options);
复制代码
4.gif

然后创建一个表格,指定表格的初始化参数
  1. //初始化SHEET
  2.         let sheetoption = {
  3.           name: "sheet01",  //表格名
  4.           rowCount: 50,  //行数
  5.           colCount: 10,   // 列数
  6.           showRowLab: 0,  //行标签不显示
  7.           showColLab: 0,  //列标签不显示
  8.           rowHSize: 30,  //默认行高
  9.           colWSize: 100,  //默认列宽
  10.           freezeTop: 1,  //顶部冻结
  11.           freezeLeft: 1,  //左侧冻结
  12.           showFreezeLine: 0,  //冻结线不显示
  13.         };
  14.         sheet = zcell.AppendSheet(sheetoption);
复制代码
5.gif

四、设置表头格式与样式

插件表头的设置,类似在EXCEL中对单元格样式的设置,可以通过代码实现,也可以通过设计器实现,保存为模板后使用时直接加载。
通过代码实现如下:
  1. //#region ------设置表头 文本和样式-----
  2.         sheet.SetCellValue(0, 0, "序号");
  3.         sheet.SetCellValue(0, 1, "书籍");
  4.         sheet.SetCellValue(0, 2, "作者");
  5.         sheet.SetCellValue(0, 3, "角色");
  6.         sheet.SetCellValue(0, 4, "特征值");
  7.         sheet.SetCellValue(1, 4, "特征1");
  8.         sheet.SetCellValue(1, 5, "特征2");
  9.         sheet.SetCellValue(1, 6, "特征3");
  10.         sheet.SetCellValue(1, 7, "特征4");
  11.         sheet.SetCellValue(0, 8, "操作");
  12.         sheet.SetCellValue(0, 9, "操作");
  13.         //合并单元格
  14.         sheet.MergeCell(0, 0, 1, 0);
  15.         sheet.MergeCell(0, 1, 1, 1);
  16.         sheet.MergeCell(0, 2, 1, 2);
  17.         sheet.MergeCell(0, 3, 1, 3);
  18.         sheet.MergeCell(0, 4, 0, 7);
  19.         sheet.MergeCell(0, 8, 1, 9);
  20.         //表头样式
  21.         let headstyle1 = {
  22.           hAlign: "center",
  23.           fontBold: 1,
  24.           backColor: "#3498db",
  25.           fontColor: "#FFFFFF",
  26.         };
  27.         sheet.SetCellStyle(0, 0, headstyle1);
  28.         sheet.SetCellStyle(0, 1, headstyle1);
  29.         sheet.SetCellStyle(0, 2, headstyle1);
  30.         sheet.SetCellStyle(0, 3, headstyle1);
  31.         sheet.SetCellStyle(0, 4, headstyle1);
  32.         sheet.SetCellStyle(1, 4, headstyle1);
  33.         sheet.SetCellStyle(1, 5, headstyle1);
  34.         sheet.SetCellStyle(1, 6, headstyle1);
  35.         sheet.SetCellStyle(1, 7, headstyle1);
  36.         sheet.SetCellStyle(0, 8, headstyle1);
  37.         sheet.SetCellStyle(0, 9, headstyle1);
  38.         //设置只读
  39.         let rdflag = "1";
  40.         sheet.SetCellReadOnly(0, 0, rdflag);
  41.         sheet.SetCellReadOnly(0, 1, rdflag);
  42.         sheet.SetCellReadOnly(0, 2, rdflag);
  43.         sheet.SetCellReadOnly(0, 3, rdflag);
  44.         sheet.SetCellReadOnly(0, 4, rdflag);
  45.         sheet.SetCellReadOnly(1, 4, rdflag);
  46.         sheet.SetCellReadOnly(1, 5, rdflag);
  47.         sheet.SetCellReadOnly(1, 6, rdflag);
  48.         sheet.SetCellReadOnly(1, 7, rdflag);
  49.         sheet.SetCellReadOnly(0, 8, rdflag);
  50.         sheet.SetCellReadOnly(0, 9, rdflag);
  51.         //设置列宽
  52.         sheet.SetColWidth(3, 3, 200); //设置列宽
复制代码
6.gif

完成后效果如下图,样式美化可以根据自己需要再进行美化。
7.png

 
五、数据集准备

表头设置完成后,就可以准备数据集了,数据集可以是通过数据库查询出来的集合,也可以通过内存进行初始化,我这里通过内存初始化,生成了一个数据集合,
  1. var datas = [];        for (let i = 0; i < 50; i++) {          let p = {   
  2.    
  3.     cn: (i + 1).toString(),   
  4.    
  5.     book: "西游记",   
  6.    
  7.     auth: "吴承恩",   
  8.    
  9.     name: "徒弟" + (i + 1),   
  10.    
  11.     label1: "特征1" + (i + 1),   
  12.    
  13.     label2: "特征2" + (i + 1),   
  14.    
  15.     label3: "特征3" + (i + 1),   
  16.    
  17.     label4: "特征4" + (i + 1),          };          datas.push(p);        }
复制代码
8.gif

六、创建数据源,并设置列绑定关系

创建指定名称数据源,并设置每列绑定数据字段值。
  1. let option2 = {
  2.           name: "data1",
  3.           type: 1, //0- datacard,1是 datatable
  4.           data: datas,
  5.           startrow: 2, //  datatable 式需要设置
  6.           startcol: "A", //  datatable 式需要设置
  7.         };
  8.         let ds = sheet.CreatDataSource(option2);  //创建数据源
  9.         //设置列绑定关系
  10.         ds.Mapping("A", "cn"); //列名必须大写,插入行列时,绑定关系会随动
  11.         ds.Mapping("B", "book");
  12.         ds.Mapping("C", "auth");
  13.         ds.Mapping("D", "name");
  14.         ds.Mapping("E", "label1");
  15.         ds.Mapping("F", "label2");
  16.         ds.Mapping("G", "label3");
  17.         ds.Mapping("H", "label4");
  18.         ds.Mapping("I", "operate");
  19.         ds.Mapping("J", "operate");
复制代码
9.gif

七、设置数据区列外观样式

也就是表体中,每列的样式,包括单元格类型、单元格样式、单元格边框、单元格数值格式。
  1. let colstyle1 = {          hAlign: "center",          fontColor: "#000000",        };        let colstyle3 = {          hAlign: "left",          fontColor: "#000000",        };        let colstyle2 = {          hAlign: "center",          fontColor: "#0000FF",        };        let border1 = {          borderLeft: { color: "#808080", style: "thin" }, //左边框          borderRight: { color: "#808080", style: "thin" }, //右边框          borderTop: { color: "#808080", style: "thin" }, //上边框          borderBottom: { color: "#808080", style: "thin" }, //下边框        };        //定义链接按钮类型        var ctype_link1 = {          code: "linkbutton",          object: {   
  2.    
  3.     text: "详情",   
  4.    
  5.     fun: function openurl(e, data) {   
  6.    
  7.       alert("查看当前行");   
  8.    
  9.     },          },        };        var ctype_link2 = {          code: "linkbutton",          object: {   
  10.    
  11.     text: "删除",   
  12.    
  13.     fun: function openurl(e, data) {   
  14.    
  15.       alert("删除当前行");   
  16.    
  17.     },          },        };        //设置列单元格样式 可以对部分列单元格设置部分属性,也可以都不设置。        // 支持以下设置: cellType 单元格类型; cellStyle 单元格样式; cellBorder 单元格边框;cellFormat 单元格数值格式        ds.SetColumnInfo("A", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("B", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("C", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("D", { cellStyle: colstyle3, cellBorder: border1 });        ds.SetColumnInfo("E", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("F", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("G", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("H", { cellStyle: colstyle1, cellBorder: border1 });        ds.SetColumnInfo("I", {          cellType: ctype_link1,          cellStyle: colstyle2,          cellBorder: border1,        });        ds.SetColumnInfo("J", {          cellType: ctype_link2,          cellStyle: colstyle2,          cellBorder: border1,        });
复制代码
10.gif

八、绑定数据源

以上设置全部完成后,只需要将表格绑定数据源,插件会自动按照表格设置加载数据。
  1. //绑定数据源
  2. sheet.BindDataSource(ds);
复制代码
 

小结

至此表格功能已经完成,大致效果如下
11.png

 
 
 
12.gif
​编辑在选中单个位置,按CTRL+V进行批量粘贴
13.png

14.gif
​编辑可以看出,可以将EXCEL表中多行多列数据,直接粘贴到表格上,实现用户数据的批量录入。
以上就是全部内容了,希望能够为你提供一点参考。如有其他更好的建议,欢迎评论。

来源:豆瓜网用户自行投稿发布,如果侵权,请联系站长删除

相关推荐

您需要登录后才可以回帖 登录 | 立即注册