const xlsx = require('xlsx') async function readExcel (filepath) { //读取内容 const workbook = xlsx.readFile(filepath); const sheet_1 = workbook.Sheets['筛查监控-血清学检查']; //通过表名得到表对象 const data_1 = xlsx.utils.sheet_to_json(sheet_1); //通过工具将表对象的数据读出来并转成json const sheet_2 = workbook.Sheets['筛查监控-胃镜检查']; //通过表名得到表对象 const data_2 = xlsx.utils.sheet_to_json(sheet_2); //通过工具将表对象的数据读出来并转成json // 应精查人数 let scrutinizing_total_data = data_2[1]['数量'] // 实际精查人数 let scrutinizing_data = data_2[0]['数量'] const sheet_3 = workbook.Sheets['筛查监控-诊断结果']; //通过表名得到表对象 const data_3 = xlsx.utils.sheet_to_json(sheet_3); //通过工具将表对象的数据读出来并转成json // 筛查数 let patient_count = data_3[data_3.length-1]['__EMPTY'] // 早期胃癌 let garstric_data = parseInt(data_3[0]['__EMPTY_1'].split("胃")[1]) + data_3[2]['数量'] // 早期食管癌 let esophagus_data = parseInt(data_3[0]['__EMPTY_1'].split("食管")[1].split("+")[0]) + data_3[3]['数量'] // 进展期胃癌 let more_garstric_data = parseInt(data_3[2]['__EMPTY_1'].split("胃癌")[1]) // 进展期食管癌 let more_esophagus_data = parseInt(data_3[3]['__EMPTY_1'].split("食管癌")[1]) // 胃癌检出率 let garstric_rate = parseFloat(((garstric_data + more_garstric_data) / scrutinizing_data * 100).toFixed(4)) // 食管癌检出率 let esophagus_rate = parseFloat(((esophagus_data + more_esophagus_data) / scrutinizing_data * 100).toFixed(4)) // 萎缩性胃炎 let atrophic_gastritis = data_3[4]["数量"] // 胃溃疡 let gastric_ulcer = data_3[5]["数量"] // 胃息肉 let gastric_polyps = data_3[6]["数量"] const sheet_8 = workbook.Sheets['筛查排名-按血检人数排名']; //通过表名得到表对象 const data_8 = xlsx.utils.sheet_to_json(sheet_8); //通过工具将表对象的数据读出来并转成json // 医院数 let hospital_count =data_8[data_8.length-2]['排名'] // 超过1000例筛查 let more_1000 = 0 for (let i = 0; i < data_8.length; i++) { if(data_8[i]['血检人数'] < 1000){ more_1000 = data_8[i-1]['排名'] break } } // 超过500例筛查 let more_500 = 0 for (let i = 0; i < data_8.length; i++) { if(data_8[i]['血检人数'] < 500){ more_500 = data_8[i-1]['排名'] break } } let rate = ((data_3[2]['数量'] + data_3[3]['数量'] +more_garstric_data + more_esophagus_data) /(garstric_data + esophagus_data + more_garstric_data + more_esophagus_data) * 100 ).toFixed(2) let garstric_early_rate = ( (data_3[2]['数量'] + more_garstric_data) / (garstric_data + more_garstric_data) *100).toFixed(2) let str = ` 截至2021年1月31日,GECA运营数据及筛查数据如下: 运营数据分析: ${hospital_count}家医院开始填报数据,${more_500}家医院超过500例筛查,${more_1000}家医院超过1000例筛查 筛查数据分析: 1️、筛查人数${patient_count}人,高危${data_3[8]['数量']}、中危${data_3[9]['数量']}、低危${data_3[10]['数量']};Hp抗体阳性${data_1[1]['数量']}人,阳性率${data_1[1]['__EMPTY']} 2️、应精查人数${scrutinizing_total_data}人,实际精查人数${scrutinizing_data}人(${data_2[0]['__EMPTY']}内镜应答率) 3️、发现了${garstric_data}例早期胃癌,${esophagus_data}例早期食管癌,${more_garstric_data}例进展期胃癌,${more_esophagus_data}例进展期食管癌,总计${garstric_data + esophagus_data}例早癌数 4️、上消化道肿瘤检出率${garstric_rate+esophagus_rate}%(其中胃癌检出率${garstric_rate}%、食道癌检出率${esophagus_rate}%),早诊率高达${rate}%,胃癌早诊率高达${garstric_early_rate}% 5️、胃溃疡${gastric_ulcer}例,萎缩性胃炎${atrophic_gastritis}例,胃息肉${gastric_polyps}例 6️、筛查例数排名前五名为 1)${data_8[0]['医院名称']}、2)${data_8[1]['医院名称']}、3)${data_8[2]['医院名称']}、4)${data_8[3]['医院名称']}、5)${data_8[4]['医院名称']} ` console.log(str); } readExcel('./test.xls')