乐于分享
好东西不私藏

js读取excel文件内容注意事项

js读取excel文件内容注意事项

pc端读取excel文件数据,快速查看数据是否符合规范,提高效率
1库安装
npm install xlsx
2文件内容读取
import * as XLSX from 'xlsx';function readExcelFile(file) {    const reader = new FileReader();    reader.onload = (e) => {        const data = e.target.result;        const workbook = XLSX.read(data, { type'binary' });        // 获取第一个工作表的数据        const firstSheetName = workbook.SheetNames[0];        const worksheet = workbook.Sheets[firstSheetName];        const jsonData = XLSX.utils.sheet_to_json(worksheet, { header1 }); // header: 1 表示第一行作为列名        console.log(jsonData); // 打印数据为JSON格式    };    reader.readAsBinaryString(file);}// 示例:从文件输入中读取Excel文件document.getElementById('file-input').addEventListener('change'(event) => {    const file = event.target.files[0];    readExcelFile(file);});
<input type="file" id="file-input" />
3.注意事项,
如果为6列数据
最后一列如果没有数据,js读取不到最后一列,该行返回数组长度为5
中间列有空数据,js读取值为undefined
4,空列比较多,sheet_to_json卡死
计算实际列值范围
// 假设你已经通过 XLSX.read 或 XLSX.readFile 获取了 workbookconst worksheet = workbook.Sheets[workbook.SheetNames[0]];// 自定义函数:根据实际有值的单元格计算工作表真实范围function getActualDataRange(worksheet) {  // 获取所有单元格的地址(键名)  const keys = Object.keys(worksheet).filter(k => k[0] !== '!'); // 过滤掉以 '!' 开头的特殊属性  if (keys.length === 0) {    return null// 空表  }  // 解码所有单元格地址,获取行列索引  const cells = keys.map(k => XLSX.utils.decode_cell(k));  const rows = cells.map(c => c.r);  const cols = cells.map(c => c.c);  // 找到最大行和最大列  const maxRow = Math.max(...rows);  const maxCol = Math.max(...cols);  // 编码最后一个单元格的地址  const lastCell = XLSX.utils.encode_cell({ r: maxRow, c: maxCol });  // 返回标准范围字符串,例如 "A1:Z100"  return `A1:${lastCell}`;}// 修正工作表的范围worksheet['!ref'] = getActualDataRange(worksheet);// 现在再调用 sheet_to_json 就只会处理真实有数据的范围了const jsonData = XLSX.utils.sheet_to_json(worksheet);
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » js读取excel文件内容注意事项

评论 抢沙发

1 + 3 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮