Excelをjsonに変換し、ローカルデータと比較する
19487 ワード
このようなニーズを実現するには、Excelのデータと管理システムのデータを比較し、エラーデータを探し出し、postmanリクエストによりjsonファイルをエクスポートし、jsに変換してhtmlに導入し、リスニング対象属性の変化によりexcelがjsonに移行したと判断し、ローカルのデータとexcel変換後のデータを比較し、同じデータを印刷する.
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="node_modules/xlsx/dist/xlsx.full.min.js">script>
head>
<body>
<input type="file" onchange="change(this)"/>
<script src="./response.js">script>
<script>
let test = {
content:''}
Object.defineProperty(test,'content',{
set(value){
//
let data = test1.filter(item=>{
return value.some(cell=>{
return item.materialName==cell.materialName
})
})
console.log('data===',data)
}
})
function change(obj) {
if (!obj.files) {
return;
}
let f = obj.files[0];
let reader = new FileReader();
reader.onload = function (e) {
let data = e.target.result;
let wb = XLSX.read(btoa(fixdata(data)), {
type: 'base64'
});
let xlsxData = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
let list1 = getList1(wb);
xlsxData = AddXlsxData(xlsxData, list1);
test.content = AddXlsxData(xlsxData, list1);
};
reader.readAsArrayBuffer(f);
}
function fixdata(data) {
// BinaryString
let o = "",
l = 0,
w = 10240;
for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}
// excel
function getList1(wb) {
let wbData = wb.Sheets[wb.SheetNames[0]]; // excel
let re = /^[A-Z]1$/; // excel
let arr1 = [];
for (let key in wbData) {
// excel
if (wbData.hasOwnProperty(key)) {
if (re.test(key)) {
arr1.push(wbData[key].h);
}
}
}
return arr1;
}
//
function AddXlsxData(xlsxData, list1) {
let addData = null; //
for (let i = 0; i < xlsxData.length; i++) {
// JSON
for (let j = 0; j < list1.length; j++) {
// excel
if (!xlsxData[i][list1[j]]) {
xlsxData[i][list1[j]] = addData;
}
}
}
return xlsxData;
}
script>
body>
html>