使用JS解析excel文件的完整实现步骤

使用JS解析excel文件的完整实现步骤如下:

1. 使用FileReader读取Excel文件

使用Javascript中的FileReader对象来获取Excel文件中的数据。代码示例如下:

let file = document.querySelector('#input-file').files[0]; // 获取文件对象
let reader = new FileReader(); // 创建FileReader对象
reader.readAsArrayBuffer(file); // 将文件读取为ArrayBuffer格式

2. 把Excel文件转换为JSON

我们需要借助开发者提供的exceljs类库,将Excel文件转换为JSON格式。代码示例如下:

let workbook = new Excel.Workbook(); // 创建exceljs的workbook对象
let data = []; // 装载解析后的数据
workbook.xlsx.load(data).then(() => {
  let worksheet = workbook.getWorksheet(1); // 获取第一张Sheet表
  worksheet.eachRow((row, rowNumber) => {
    if (rowNumber > 1) { // 第一行是表头,忽略
      let rowData = [];
      row.eachCell((cell, colNumber) => {
        rowData.push(cell.value);
      });
      data.push(rowData); // 添加行数据到data数组中
    }
  });
});

3. 显示JSON数据

将读取的JSON数据显示在网页中,可以通过创建HTML表格的方式来展示:

let table = document.createElement('table');
let thead = document.createElement('thead');
let tbody = document.createElement('tbody');

// 创建表头
let headerRow = document.createElement('tr');
for (let i = 0; i < headers.length; i++) {
  let th = document.createElement('th');
  th.appendChild(document.createTextNode(headers[i]));
  headerRow.appendChild(th);
}
thead.appendChild(headerRow);
table.appendChild(thead);

// 创建表格数据
for (let i = 0; i < data.length; i++) {
  let row = document.createElement('tr');
  for (let j = 0; j < data[i].length; j++) {
    let cell = document.createElement('td');
    cell.appendChild(document.createTextNode(data[i][j]));
    row.appendChild(cell);
  }
  tbody.appendChild(row);
}
table.appendChild(tbody);

// 将表格添加到页面中
let tableDiv = document.querySelector('#table-div');
tableDiv.innerHTML = '';
tableDiv.appendChild(table);

代码示例(基于exceljs v4+):

// 导入依赖
import ExcelJS from 'exceljs/dist/es5/exceljs.browser';
import saveAs from 'file-saver';

/**
 * 使用JS解析excel文件
 * @param {File} file Excel文件对象
 * @returns {Array<Array<any>>} 解析后的数据
 */
const parseExcelFile = async (file) => {
  const workbook = new ExcelJS.Workbook(); // 创建workbook对象
  const data = []; // 解析后的数据

  await workbook.xlsx.load(file); // 加载Excel文件

  const worksheet = workbook.getWorksheet(1); // 获取第一张Sheet表

  worksheet.eachRow((row, rowNumber) => { // 遍历Sheet表中的每一行
    if (rowNumber > 1) { // 忽略表头
      const rowData = [];

      row.eachCell((cell) => { // 遍历行中的每一个单元格
        rowData.push(cell.value);
      });

      data.push(rowData); // 将行数据添加到数组中
    }
  });

  return data;
};

/**
 * 导出JSON数据为Excel文件
 * @param {Array<Array<any>>} data JSON格式的数据
 * @param {string} filename 导出的Excel文件名
 */
const exportJsonToExcel = (data, filename) => {
  const workbook = new ExcelJS.Workbook(); // 创建workbook对象
  const worksheet = workbook.addWorksheet('Sheet1'); // 创建Sheet表

  // 添加表头
  const headers = Object.keys(data[0]);
  worksheet.addRow(headers);

  // 添加数据行
  data.forEach((row) => {
    worksheet.addRow(row);
  });

  workbook.xlsx.writeBuffer().then((buffer) => { // 写入Excel内容到buffer中
    const blob = new Blob([buffer], { type: 'application/vnd.ms-excel' });
    saveAs(blob, `${filename}.xlsx`); // 下载文件
  });
};

// 读取Excel文件并解析为JSON数据
const inputFile = document.getElementById('input-file');
inputFile.addEventListener('change', () => {
  const file = inputFile.files[0];
  if (file) {
    parseExcelFile(file).then((data) => {
      console.log(data);
    });
  }
});

// 导出JSON数据为Excel文件
const data = [
  { name: 'Tom', age: 18, gender: 'male' },
  { name: 'Alice', age: 20, gender: 'female' },
  { name: 'Jerry', age: 22, gender: 'male' },
];
const exportBtn = document.getElementById('export-btn');
exportBtn.addEventListener('click', () => {
  exportJsonToExcel(data, 'test');
});

参考链接:使用JavaScript解析和导出Excel文件

以上就是使用JS解析Excel文件的完整实现步骤,并附有两个具体的示例。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用JS解析excel文件的完整实现步骤 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版

    关于 js 中 top、clientTop、scrollTop、offsetTop 四个属性的区别,我们可以这样来理解: top 对于 Window 对象和 Frame 对象,top 属性返回当前窗口的最顶层的父级窗口,如果当前对象已经是最顶层窗口,该属性则返回这个对象本身。 对于 HTML 元素,如果元素的 position 属性值为 ‘static’(默…

    JavaScript 2023年6月11日
    00
  • 最新版JavaScript中的箭头函数

    当我们使用JavaScript编写代码时,函数是一种非常重要的语言特性。在最新版本的JavaScript中,引入了箭头函数,这是一种更加简洁和优雅的函数声明方式。在本文中,我们将详细讲解什么是箭头函数以及如何使用箭头函数。 什么是箭头函数? 箭头函数是一种新的函数语法,它可以用更短的代码书写函数。它使用箭头语法 (=>) 声明函数。箭头函数可以用来声明…

    JavaScript 2023年5月27日
    00
  • JS使用数组实现的队列功能示例

    为了实现队列功能,我们可以使用JavaScript中的数组来完成。下面是使用数组实现队列的完整攻略: 一、什么是队列? 在计算机科学中,队列是一种常见的数据结构,用于存储按顺序排列的元素。元素添加到队列的一端,称为队尾或者后端;元素从队列的另一端删除,称为队头或者前端。具有FIFO(先进先出)特性,即最先加入队列的元素最先被删除。 二、使用数组实现队列 使用…

    JavaScript 2023年5月27日
    00
  • js字符串截取函数substr substring slice使用对比

    JS中操作字符串的时候,会用到截取字符串的函数,这篇攻略介绍substr、substring和slice三种常用的截取字符串函数,并进行对比。 substr substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。 语法:string.substr(start, length) 参数说明:- start:必需,一个整数,规定字符串中开…

    JavaScript 2023年5月28日
    00
  • JavaScript 鼠标事件(MouseEvent)案例讲解

    下面我就为你讲解“JavaScript 鼠标事件(MouseEvent)案例讲解”的完整攻略。 1. 学习目标 在学习完本文后,你将会掌握以下知识点: 什么是 JavaScript 鼠标事件; JavaScript 鼠标事件的分类; 如何通过 JavaScript 使用鼠标事件; 鼠标事件的一些常见应用。 2. JavaScript 鼠标事件 在 Web 开…

    JavaScript 2023年6月11日
    00
  • js中时间格式化的几种方法

    讲解js中时间格式化的几种方法的攻略如下: 一、JavaScript中的时间表示 在JavaScript中,时间是用毫秒数来表示的。毫秒数是从1970年1月1日00:00:00 UTC开始计算的,也被称为1970年纪元。这个时间点被称为UNIX时间。UNIX时间是一个标准时间,所有的计算机系统都使用它来存储时间数据。 二、格式化时间的方法 在JavaScri…

    JavaScript 2023年5月27日
    00
  • 原生JS和jQuery操作DOM对比总结

    下面是关于”原生JS和jQuery操作DOM对比总结”的完整攻略。 1. 什么是DOM DOM(Document Object Model)是一种描述文档的方法。在Web页面加载后,浏览器会将HTML文档解析为DOM树。DOM树是一个基于节点(Node)层次结构的树型结构,它定义了每个节点的父/子/兄弟关系,同时也封装了从某个节点的子节点,在Web页面上修改…

    JavaScript 2023年6月10日
    00
  • JS对URL字符串进行编码/解码分析

    好的!JS对URL字符串进行编码/解码的主要方法有两种:encodeURIComponent和decodeURIComponent。下面对它们进行详细说明: encodeURIComponent encodeURIComponent 方法可以将字符串中的非字母数字字符(比如空格、中文、特殊符号)转换为十六进制字符。转换后的字符前面加上 %,这样可以在URL中…

    JavaScript 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部