如何从Excel文件提取数据生成JS变量/对象,实现日期对应值差值计算?
基于Bootstrap表格数据实现日期差值计算方案
你不需要手动创建900个变量,只需要把表格数据转换成日期-数值的键值对映射,就能快速实现日期对应数值的查询与差值计算。以下是具体实现步骤:
1. 从Bootstrap表格提取数据,构建映射对象
首先遍历已渲染的表格行,将日期作为唯一键、对应数值作为值存入一个对象,后续直接通过日期键访问数值,无需单独变量。
// 初始化日期-数值映射对象 const dateValueMap = {}; // 遍历表格tbody的每一行(根据你的表格结构调整选择器) document.querySelectorAll('.table tbody tr').forEach(row => { const cells = row.querySelectorAll('td'); // 假设日期在第1列(索引0),数值在第2列(索引1) if (cells.length >= 2) { const rawDate = cells[0].textContent.trim(); // 将mm/dd/yy格式转为标准YYYY-MM-DD字符串,避免格式歧义 const [month, day, year] = rawDate.split('/'); // 处理年份:若yy>=50则归为19xx,否则20xx(可根据你的数据实际情况调整) const fullYear = year >= 50 ? `19${year}` : `20${year}`; const formattedDate = `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`; // 解析数值(若表格数值含千分位,先去掉逗号:cells[1].textContent.replace(/,/g, '')) const value = parseFloat(cells[1].textContent.trim()); dateValueMap[formattedDate] = value; } });
2. 实现日期差值计算函数
编写函数处理用户输入的日期,转换为统一格式后从映射对象中取值并计算差值。
// 计算两个日期的数值差值 function calculateDateDiff(inputDate1, inputDate2) { // 统一转换用户输入的mm/dd/yy格式为标准日期键 const formatInputDate = (rawDate) => { const [month, day, year] = rawDate.split('/'); const fullYear = year >= 50 ? `19${year}` : `20${year}`; return `${fullYear}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`; }; const formattedDate1 = formatInputDate(inputDate1); const formattedDate2 = formatInputDate(inputDate2); // 验证日期是否存在于数据中 if (!dateValueMap.hasOwnProperty(formattedDate1)) { return `错误:未找到日期${inputDate1}对应的数据`; } if (!dateValueMap.hasOwnProperty(formattedDate2)) { return `错误:未找到日期${inputDate2}对应的数据`; } // 计算差值(这里是date2数值 - date1数值,可按需调整顺序) const diff = dateValueMap[formattedDate2] - dateValueMap[formattedDate1]; return `数值差值:${diff.toFixed(2)}`; }
3. 绑定用户输入交互
给页面上的输入框和按钮绑定逻辑,触发计算并展示结果:
<!-- 示例输入区域(可结合Bootstrap样式调整) --> <div class="row mb-3"> <div class="col"> <input type="text" id="dateInput1" class="form-control" placeholder="输入日期(mm/dd/yy)"> </div> <div class="col"> <input type="text" id="dateInput2" class="form-control" placeholder="输入日期(mm/dd/yy)"> </div> <div class="col"> <button onclick="handleCalculate()" class="btn btn-primary">计算差值</button> </div> </div> <div id="resultDisplay" class="alert alert-info"></div>
// 处理用户点击计算按钮的逻辑 function handleCalculate() { const date1 = document.getElementById('dateInput1').value.trim(); const date2 = document.getElementById('dateInput2').value.trim(); if (!date1 || !date2) { document.getElementById('resultDisplay').textContent = '请输入两个有效的日期'; return; } const result = calculateDateDiff(date1, date2); document.getElementById('resultDisplay').textContent = result; }
注意事项
- 调整表格列索引:根据你的实际表格结构,修改
cells[0](日期列)和cells[1](数值列)的索引值 - 数值格式兼容:若表格中的数值包含千分位(如1,234.56),需先通过
replace(/,/g, '')去除逗号再解析 - 年份规则:如果你的数据包含跨世纪日期(如99代表1999),确保年份转换逻辑符合你的数据规则
内容的提问来源于stack exchange,提问作者Ted B
相关产品推荐
相关产品推荐

