需求:对excel表格中的字段进行处理,提取日期并新建一列
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="file" id="fileid">
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.2/xlsx.full.min.js" integrity="sha512-oCjkwxjURabnte5K4Zeoc+hZ/G5pQE7GI4DYl+0wl6WaJIkBjb9FvUIaMU3lOPoBMSRZZ7QrczpGQoBFAKKB1Q==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script>
// 读取本地excel文件
function readWorkbookFromLocalFile(file, callback){
var reader = new FileReader();
reader.onload = function(e){
var data = e.target.result;
var workbook = XLSX.read(data, {type:'binary'});
if(callback) callback(workbook);
};
reader.readAsBinaryString(file);
}
document.querySelector('#fileid').onchange = (e) => {
const file = e.target.files[0];
// console.log(file);
const Name = file.name;
readWorkbookFromLocalFile(file, (res) => {
// console.log(res)
// 以二进制流方式读取得到整份excel表格对象
const workbook = res;
let data = []; // 存储获取到的数据
// 遍历每张工作表进行读取(这里默认只读取第一张表)
for (const sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
// 利用 sheet_to_json 方法将 excel 转成 json 数据
data = data.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
// break; // 如果只取第一张表,就取消注释这行
}
}
// 过滤日期
const finarr = data.map((v, i) => {
const itmarr = v.摘要.match(/\d{4}[\-|\.]?\d{1,2}/g);
console.log()
if (itmarr && itmarr.length) {
let ly = itmarr[itmarr.length-1];
if (ly.length === 5) {
const yy = ly.slice(0,4)
let mm = ly.slice(4)
mm = '0' + mm
ly = yy + mm;
}
if (/\-|\./.test(ly)) {
const nd = new Date(ly);
const fyear = nd.getFullYear();
let fm = nd.getMonth() + 1;
if (fm <= 9) {
fm = '0' + fm;
}
v.业务期间 = fyear.toString()+fm.toString();
} else {
v.业务期间 = ly
};
} else {
v.业务期间 = "";
console.log(v.摘要,i)
}
return v;
})
// console.log(finarr);
var filename = Name; //文件名称
var ws_name = "Sheet1"; //Excel第一个sheet的名称
var wb = XLSX.utils.book_new();
const ws = XLSX.utils.json_to_sheet(finarr);
XLSX.utils.book_append_sheet(wb, ws, ws_name); //将数据添加到工作薄
XLSX.writeFile(wb, filename); //导出Excel
})
}
</script>
</body>
</html>