JavaScript生成.xls文件的代码

生成Excel文件是前端开发中常见的需求之一,可以通过JS库来实现。目前比较流行的库有两个:SheetJS和Handsontable,本文将以SheetJS为例来讲解如何使用JS生成Excel文件的完整攻略。

SheetJS库介绍

SheetJS是一组用于处理Excel文件的JS库,可读取、修改和写入Excel文件,支持XLS、XLSX等多种格式。同时SheetJS也支持导入导出到CSV、JSON等格式,支持数据定位、图表制作等功能。它十分轻量化,只有小于200K的文件大小,可大幅度缩短页面加载时间。

实现过程

第一步:引入SheetJS库

我们需要先引入SheetJS库,在HTML中添加以下代码:

<script src="https://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>

第二步:创建数据对象

我们需要将Excel中要填充的数据存在一个JS对象中。下面给出一个示例的JS数据对象:

let data = [
    ['姓名', '性别', '年龄', '职业'],
    ['张三', '男', '25', '程序员'],
    ['李四', '女', '24', '销售'],
    ['王五', '男', '28', '设计师'],
];

第三步:使用SheetJS库生成Excel文件

使用SheetJS库生成Excel文件非常简单,我们只需要调用几个API即可实现。下面给出一个完整的生成Excel文件的JS函数示例:

function generateExcelFile(data){
    // 创建Excel中使用的SheetJS工作薄中的数据矩阵对象
    const sheet = XLSX.utils.aoa_to_sheet(data);

    // 创建工作簿
    const workbook = XLSX.utils.book_new();

    // 将数据矩阵对象添加到工作薄中
    XLSX.utils.book_append_sheet(workbook, sheet, "Sheet1");

    // 生成Excel文件二进制流
    const buffer = XLSX.write(workbook, { bookType: "xlsx", type: "array" });

    // 保存Excel文件
    const blob = new Blob([buffer], {
        type: "application/octet-stream"
    });
    const fileName = "example.xlsx";
    saveAs(blob, fileName);
}

在上述代码中,我们通过XLSX.utils.aoa_to_sheet(data)创建了SheetJS工作薄中的数据矩阵对象,然后通过XLSX.utils.book_new()方法创建了一个工作簿,调用XLSX.utils.book_append_sheet(workbook, sheet, "Sheet1")将数据矩阵对象添加到工作簿中,最后使用XLSX.write(workbook, { bookType: "xlsx", type: "array" })生成Excel文件的二进制流,然后将二进制流保存为Excel文件。

示例一

我们可以基于上面的函数来实现一个按钮点击事件,具体代码如下:

document.getElementById('btn').addEventListener('click', function(){
    let data = [
        ['姓名', '性别', '年龄', '职业'],
        ['张三', '男', '25', '程序员'],
        ['李四', '女', '24', '销售'],
        ['王五', '男', '28', '设计师'],
    ];
    generateExcelFile(data);
})

示例二

如果要生成一个包含多个Sheet的Excel文件,可以按照如下代码实现(以data1、data2为例):

function generateExcelFile(){
    let data1 = [
        ["学号", "姓名", "性别", "成绩"],
        [1, "张三", "男", 78],
        [2, "李四", "女", 88]
    ];
    let data2 = [
        ["学号", "姓名", "年龄", "班级"],
        [1, "张三", 18, "一班"],
        [2, "李四", 19, "二班"]
    ];
    const sheet1 = XLSX.utils.aoa_to_sheet(data1);
    const sheet2 = XLSX.utils.aoa_to_sheet(data2);
    const book = XLSX.utils.book_new();
    XLSX.utils.book_append_sheet(book, sheet1, "成绩单");
    XLSX.utils.book_append_sheet(book, sheet2, "学生信息");
    const buffer = XLSX.write(book, { bookType: "xlsx", type: "array" });
    const blob = new Blob([buffer], {
        type: "application/octet-stream"
    });
    const fileName = "example.xlsx";
    saveAs(blob, fileName);
}

总结

本文对使用JS生成Excel文件的过程进行了详细的介绍和说明,经过本文的学习,读者可以在自己的项目中轻松地使用JS生成Excel文件。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:JavaScript生成.xls文件的代码 - Python技术站

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

相关文章

  • js前端传json后台接收‘‘被转为quot的问题解决

    当前端使用 JavaScript 将 JSON 对象发送到后台时,有时可能会遇到 JSON 字符串中的双引号被转换为 &quot; 实体的问题,这可能会导致后端无法正确解析 JSON 字符串的情况。下面是解决这个问题的攻略: 1. 从前端开始 首先,确保前端代码正确地生成了 JSON 字符串,不应该使用任何 HTML 实体序列化。例如,以下代码可能会…

    JavaScript 2023年5月27日
    00
  • 什么是cookie?js手动创建和存储cookie

    关于”什么是cookie”的讲解: Cookie指的是一种服务器发送给浏览器的小型文本文件,在浏览器端保存用户的登录状态、购物车信息等。在下次用户访问同样的网站时,浏览器会将存在本地的Cookie信息发送给服务器,服务器根据接收到的Cookie信息来进行相应的处理。 Cookie有以下特点:- Cookie由服务器生成,浏览器存储。- 每次请求时需要将Coo…

    JavaScript 2023年6月11日
    00
  • JavaScript使用Math.Min返回两个数中较小数的方法

    当需要比较两个数的大小时,可以使用JavaScript中的Math.Min()方法来获取两个数中的最小值。使用该方法非常简单,只需要向该方法传入两个数即可返回这两个数中的最小值。下面详细讲解使用Math.Min返回两个数中较小数的方法。 1. Math.Min方法的基本语法 Math.min(a, b); 其中a、b为需要比较的两个数,返回值为这两个数中的最…

    JavaScript 2023年6月10日
    00
  • JavaScript内置日期、时间格式化时间实例代码

    让我来为您详细讲解一下 “JavaScript内置日期、时间格式化时间实例代码” 的完整攻略。 什么是日期、时间格式化? 格式化是指将一个变量的值以一定的格式输出。在 JavaScript 中,我们可以使用内置的 Date() 对象和相关方法进行日期、时间格式化。 如何使用内置日期、时间格式化实例代码? 获取当前时间 获取当前时间的方式有两种,分别是使用 n…

    JavaScript 2023年5月27日
    00
  • js实现时间日期校验

    JS实现时间日期校验需要用到正则表达式,下面我将介绍实现这一过程的完整攻略。 步骤一:获取输入框的值 首先,我们需要获取输入框中用户输入的值,可以使用document.getElementById()方法获取对应输入框的元素对象,进而获取输入框中的值: let inputDate = document.getElementById(‘date’).value…

    JavaScript 2023年5月27日
    00
  • JavaScript伪数组和数组的使用与区别

    下面我来详细讲解一下“JavaScript伪数组和数组的使用与区别”。 什么是JavaScript数组和伪数组? 在JavaScript中,数组是一种用于存储一组值的集合。数组可以存储不同类型的值,如字符串、数字、对象等等。在JavaScript中使用数组是非常普遍的,它能够更方便地管理和处理一组数据。 伪数组是一种类似于数组的对象,它拥有一些数组的特征,比…

    JavaScript 2023年5月27日
    00
  • JS简单判断字符在另一个字符串中出现次数的2种常用方法

    让我来介绍一下JS简单判断字符串在另一个字符串中出现次数的2种常用方法。下面将结合代码给出具体的示例: 1. 方法一:for循环遍历字符串 // 定义待匹配字符和被匹配字符 const targetStr = "hello"; const sourceStr = "hello world, hello everyone&quot…

    JavaScript 2023年5月28日
    00
  • JavaScript中的正则表达式使用及验证qq号码的正则

    正则表达式是一种强大的匹配模式,它在JavaScript中得到了广泛使用。对于开发者来说,掌握正则表达式的使用和验证方法是非常重要的。本文将从JavaScript中的正则表达式基础开始,讲解如何使用正则表达式进行qq号码的验证。 正则表达式基础 正则表达式是一种字符串匹配模式。在JavaScript中,它是通过RegExp对象来创建的。正则表达式由一个模式和…

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