console
function dom(id) {
return document.getElementById(id)
}
document.getElementById('excel-file').addEventListener('change', function (e) {
var file = e.target.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var data = new Uint8Array(e.target.result);
var workbook = XLSX.read(data, { type: 'array' });
var worksheetName = workbook.SheetNames[0];
var worksheet = workbook.Sheets[worksheetName];
const json = XLSX.utils.sheet_to_json(worksheet)
const aCol = dom('a').value
const bCol = dom('b').value
const rKey = []
const lLen = Object.keys(json[0]).findIndex(d => d === aCol)
Object.keys(json[0]).forEach((key, i, arr) => {
if (i > lLen) {
rKey.push(key)
}
});
const list = json.map(d => d[aCol]?.trim()).filter(a => a)
const arr = []
function handleData(data) {
const itm = {}
rKey.forEach(k => {
itm[k] = data?.[k]
})
return itm
}
list.forEach((d, i) => {
const idx = json.findIndex(j => j?.[bCol] == d)
if (idx > -1) {
arr.push(handleData(json[idx]))
json.splice(idx, 1)
}
})
arr.push(...json.map(handleData))
const jsonWorkSheet = XLSX.utils.json_to_sheet(arr);
var outputWorkbook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(outputWorkbook, jsonWorkSheet, worksheetName);
var wbout = XLSX.write(outputWorkbook, { bookType: 'xlsx', type: 'array' });
var blob = new Blob([wbout], { type: 'application/octet-stream' });
var link = document.createElement("a");
link.href = window.URL.createObjectURL(blob);
link.download = "export.xlsx";
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
reader.readAsArrayBuffer(file);
});
<div>
按列 <input type="text" name="column" id="a" style="width: 80px;" value="567分项"> 将列 <input type="text" name="column"
id="b" style="width: 80px;" value="唯一编码"> 排序
<input type="file" id="excel-file" accept=".xlsx, .xls">
</div>