layui表格求差_xls表格求差

2025-03-09 12

// 来源:https://www.nzw6.com

《layui表格求差_xls表格求差》

在处理表格数据时,常常需要对不同表格的数据进行求差操作。针对layui表格和xls表格求差的问题,解决方案是通过读取表格数据,然后根据关键字段(如id等)进行比较计算差值。

一、layui表格与xls表格数据读取

对于layui表格,如果是前端展示的表格,可以利用layui提供的接口获取表格数据。例如:
javascript
var tableIns = layui.table.render({
elem: '#test'
,url:'/demo/table/user/' //模拟接口
,cols: [[
{field:'id', title: 'ID', sort: true}
,{field:'username', title: '用户名'}
,{field:'experience', title: '经验值'}
,{field:'sex', title: '性别'}
,{field:'city', title: '城市'}
,{field:'sign', title: '签名'}
]]
});
// 获取表格数据
var data = tableIns.data;

而对于xls表格,可使用node - xlsx等库读取。以node.js环境为例:
```javascript
const xlsx = require('node - xlsx');
const fs = require('fs');

function parseXlsx(filePath) {
const workSheetsFromFile = xlsx.parse(fs.readFileSync(filePath));
return workSheetsFromFile[0].data; //假设只有一张工作表
}
```

二、求差思路一:基于id直接对比

如果两个表格都有的id字段。先将layui表格数据和xls表格数据都转换为对象数组格式,以id作为键。

javascript
let layuiDataObj = {};
data.forEach(item => {
    layuiDataObj[item.id] = item;
});</p>

<p>let xlsDataObj = {};
let xlsData = parseXlsx('path/to/xls/file.xlsx'); // 假设已获取xls表格数据
xlsData.forEach(item => {
    xlsDataObj[item[0]] = item; //假设id在列
});</p>

<p>// 求差
let diffResult = [];
for(let id in layuiDataObj){
    if(xlsDataObj[id]){
        // 如果存在相同id,计算其他字段的差值
        let diffItem = {};
        for(let key in layuiDataObj[id]){
            if(key !== 'id'){
                if(layuiDataObj[id][key] !== xlsDataObj[id][xlsData[0].indexOf(key)]){
                    diffItem[key] = layuiDataObj[id][key] - xlsDataObj[id][xlsData[0].indexOf(key)];
                }
            }
        }
        if(Object.keys(diffItem).length > 0){
            diffItem.id = id;
            diffResult.push(diffItem);
        }
    }else{
        // 如果xls中不存在该id,表示新增的数据
        diffResult.push({...layuiDataObj[id]});
    }
}</p>

<p>for(let id in xlsDataObj){
    if(!layuiDataObj[id]){
        // 如果layui中不存在该id,表示删除的数据
        diffResult.push({...xlsDataObj[id]});
    }
}

三、求差思路二:基于所有字段组合对比

当没有明确的标识字段时,可以将所有字段组合成一个字符串进行对比。

javascript
function generateKey(row,header){
    return header.map(col=>row[col]).join('-');
}</p>

<p>let layuiKeys = new Set(data.map(row=>generateKey(row,Object.keys(data[0]))));</p>

<p>let xlsKeys = new Set(xlsData.map(row=>generateKey(row,xlsData[0])));</p>

<p>let onlyInLayui = [...layuiKeys].filter(key=>!xlsKeys.has(key));
let onlyInXls = [...xlsKeys].filter(key=>!layuiKeys.has(key));</p>

<p>// 对于不同的部分再进一步处理,比如找出具体哪些字段有差异等

以上就是layui表格和xls表格求差的一些方法,可以根据实际需求选择合适的方式。

Image

1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!cheeksyu@vip.qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!
4. 如果您也有好的资源或教程,您可以投稿发布,成功分享后有积分奖励和额外收入!
5.严禁将资源用于任何违法犯罪行为,不得违反国家法律,否则责任自负,一切法律责任与本站无关

源码下载