vue项目如何使用 SheetJS(xlsx)插件?

这篇具有很好参考价值的文章主要介绍了vue项目如何使用 SheetJS(xlsx)插件?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简言

SheetJS是一款非常好用的前端处理表格文件的工具。它分社区版和专业版,我们今天来介绍如何简单使用它的社区版。
SheetJS社区版官网

介绍

你应该打开官网浏览具体使用详情。

安装

js xlsx插件,工具集,vue.js,javascript,前端

打开官网在如上图的Installation板块中可以找到各种运行模块的使用方式。
js xlsx插件,工具集,vue.js,javascript,前端

一般项目都是webpack或vite这种模块管理打包工具维护的,所以我们看上图的模块。
以npm为例

npm i --save https://cdn.sheetjs.com/xlsx-0.19.2/xlsx-0.19.2.tgz

成功后如下图:
js xlsx插件,工具集,vue.js,javascript,前端

使用

安装完成后,库可以以xlsx的名称导入:

import { read, writeFileXLSX } from "xlsx";

如果需要XLS支持,则必须手动导入cpexcel.full.mjs:

/* load the codepage support library for extended support with older formats  */
import { set_cptable } from "xlsx";
import * as cptable from 'xlsx/dist/cpexcel.full.mjs';
set_cptable(cptable);

导入excel

以vue为例,详细文档如下图,如果你使用了以vue为基础的其他方向的框架,例如(Nuxt)可以参考相应的使用文档。
js xlsx插件,工具集,vue.js,javascript,前端
SheetJs有两种解析excel数据的方法,read(data,options)和readFile(filename,options)。

// 直接解析数据
XLSX.read(data, read_opts)
//	根据文件名解析数据
XLSX.readFile(filename, read_opts)

常用的就是XLSX.read(data, read_opts)方法,它可以直接解析存储在JS字符串、“二进制字符串”、Node.js缓冲区或类型化数组(Uint8Array或ArrayBuffer)中的数据。

  1. 获取数据,将数据转成可被read()方法读取的类型
  2. 读取数据,数据将以对象的形式输出。
  3. 最后可以使用官方已实现的工具函数或者自定义处理函数

下面是示例:

<template>
  <div>
    <input
      id="inputFile"
      type="file"
      accept=".xlsx,.xls,.csv"
      @change="change"
    />
  </div>
</template>

<script>
import * as XLSX from 'xlsx'
export default {
  props: {
    //  表格数据
    sheetsContent: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  emits: ['success', 'update:sheetsContent'],
  data() {
    return {
      context: ''
    }
  },
  methods: {
    change(e) {
      const file = e.target.files[0]
      const reader = new FileReader()
      reader.readAsBinaryString(file)
      reader.onload = re => {
        const data = re.target.result
        this.$emit('sucess', data)
        const zzexcel = XLSX.read(data, {
          type: 'binary'
        })
        console.log(zzexcel)
        this.$emit('update:sheetsContent', zzexcel)
        //	将表中的数据以json格式输出
        //	常见的有 sheet_to_html 、sheet_to_csv等
        const content = XLSX.utils.sheet_to_json(zzexcel.Sheets.Sheet1)
        console.log(content)
        this.context = content
      }
    }
  }
}
</script>

<style></style>

导出excel

导出excel需要有源数据对象,然后才可以导出excel文件。
导出方法有以下三种:

  • XLSX.write(workbook,opts): 从数据生成电子表格字节(文件)。write方法尝试将数据打包到内存中的文件中。默认情况下,会生成XLSX文件,但这可以通过opts参数的bookType属性进行控制。根据type选项,数据可以存储为“二进制字符串”、JS字符串、Uint8Array或缓冲区。
  • XLSX.writeFile(workbook,filename,opts):生成并尝试保存文件。导出文件格式由filename的扩展名决定(SheetJS.xlsx信号XLSX导出、SheetJS.xlsb信号XLSB导出等)。
  • XLSX.writeFileXLSX(workbook,filename,opts): 生成并尝试保存XLSX文件。

示例:

<template>
  <div>
    <table class="table-box">
      <thead>
        <tr>
          <th>表头1</th>
          <th>表头2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td style="background:#000;color:#fff">2</td>
        </tr>
      </tbody>
    </table>
    <button @click="exportFile">导出</button>
  </div>
</template>

<script>
import * as XLSX from 'xlsx'
export default {
  props: {
    //  表格数据
    sheetsContent: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  emits: ['success', 'update:sheetsContent'],
  data() {
    return {
      context: ''
    }
  },
  methods: {
    exportFile() {
      const tableDom = document.querySelector('.table-box')
      const workbook = XLSX.utils.table_to_book(tableDom)
      console.log(workbook)
      //  文件名带后缀
      XLSX.writeFileXLSX(workbook, '表1.xlsx')
    }
  }
}
</script>

<style></style>

代码

<template>
  <div>
    <input
      id="inputFile"
      type="file"
      accept=".xlsx,.xls,.csv"
      @change="change"
    />
    <table class="table-box">
      <thead>
        <tr>
          <th>表头1</th>
          <th>表头2</th>
        </tr>
      </thead>
      <tbody>
        <tr>
          <td>1</td>
          <td style="background:#000;color:#fff">2</td>
        </tr>
      </tbody>
    </table>
    <button @click="exportFile">导出</button>
  </div>
</template>

<script>
import * as XLSX from 'xlsx'
export default {
  props: {
    //  表格数据
    sheetsContent: {
      type: Object,
      default: () => {
        return {}
      }
    }
  },
  emits: ['success', 'update:sheetsContent'],
  data() {
    return {
      context: ''
    }
  },
  methods: {
    change(e) {
      const file = e.target.files[0]
      const reader = new FileReader()
      reader.readAsBinaryString(file)
      reader.onload = re => {
        const data = re.target.result
        this.$emit('sucess', data)
        const zzexcel = XLSX.read(data, {
          type: 'binary'
        })
        console.log(zzexcel)
        this.$emit('update:sheetsContent', zzexcel)
        const content = XLSX.utils.sheet_to_json(zzexcel.Sheets.Sheet1)
        console.log(content)
        this.context = content
      }
    },
    exportFile() {
      const tableDom = document.querySelector('.table-box')
      const workbook = XLSX.utils.table_to_book(tableDom)
      console.log(workbook)
      //  文件名带后缀
      XLSX.writeFileXLSX(workbook, '表1.xlsx')
    }
  }
}
</script>

<style></style>

结语

结束了文章来源地址https://www.toymoban.com/news/detail-653604.html

到了这里,关于vue项目如何使用 SheetJS(xlsx)插件?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue xlsx插件前端导出

    一、安装 xlsx 二、具体使用整体代码 如果数据格式是这样就用下面的,直接把数据传到 XLSX.utils.json_to_sheet

    2024年02月06日
    浏览(39)
  • 如何快速使用Vue3在electron项目开发chrome Devtools插件

    为了方便快速建立项目,我已经写好脚手架,直接clone项目,快速开发 点击快速进入源代码 拉取代码 安装依赖 运行项目 打包项目 打开chrome://extensions/,打开开发者模式,直接把打包产物拖到窗口即可 具体代码进入源代码 主要使用我另外开发的插件chrome-extension-ipc实现通讯

    2024年02月06日
    浏览(38)
  • 前端使用xlsx插件读取excel文件数据

    使用 xlsx 插件在前端读取Excel文件数据具有以下优点和缺点,适用于以下场景: 简单易用: xlsx 插件提供了简单的API来读取Excel文件数据,无需复杂的配置和依赖。 完整的功能: xlsx 插件支持读取各种Excel文件格式,包括XLS和XLSX等常见格式,可以读取多个工作表和多种数据类

    2024年02月14日
    浏览(56)
  • vue3时间插件——Moment.js使用

    在日期时间这一块在js中是有体现的,但是用起来不是特别方便,尤其是在vue框架中,我们也不可能去那样使用,显得很笨拙麻烦,所以给大家这次带来一个好用的时间插件,就是Moment时间插件,很小巧,使用也方便,也兼容vue3,下面来详细介绍一下   首先是 Moment.js 的官方

    2024年02月05日
    浏览(46)
  • chrome插件开发实例08- 使用Vue.js开发chrome插件

    目录 背景 演示 功能介绍 插件下载 注意写法:  将  下面的两个插件 改写成vue.js , elementui  实现

    2024年02月13日
    浏览(40)
  • vue3时间插件——Moment.js使用 Moment.js的配置

    在日期时间这一块在js中是有体现的,但是用起来不是特别方便,尤其是在vue框架中,我们也不可能去那样使用,显得很笨拙麻烦,所以给大家这次带来一个好用的时间插件,就是Moment时间插件,很小巧,使用也方便,也兼容vue3,下面来详细介绍一下   首先是 Moment.js 的官方

    2024年02月11日
    浏览(41)
  • 【Vue】使用print.js插件实现打印预览功能,超简单

    目录 一、实现效果  二、实现步骤 【1】安装插件 【2】在需要打印的页面导入 【3】在vue文件中需要打印的部分外层套一层div,给div设置id。作为打印的区域 【4】在打印按钮上添加打印事件 【5】在methods中添加点击事件 三、完整代码   print.js插件,可以打印html、pdf、json数

    2024年02月14日
    浏览(48)
  • 免费下载xlsx.full.min.js包,并放入前端代码里,在html+vue中引用

    访问 xlsx.js 的 GitHub 页面:https://github.com/SheetJS/sheetjs 在 GitHub 页面中,找到 \\\"Code\\\" 按钮,然后点击它,在下拉菜单中选择 \\\"Download ZIP\\\",以下载 xlsx.js 的最新版本。 解压下载的 ZIP 文件。 在解压后的文件夹中,你会找到 xlsx.full.min.js 文件。将这个文件复制到你的前端项目中,通

    2024年02月02日
    浏览(34)
  • 如何解决创建vue项目后没有webpack.config.js(vue.config.js)文件

    ◼️ webpack.config.js文件没有的原因 Vue 项目中 vue.config.js 文件就等同于 webpack 的 webpack.config.js。 vue-cli3 之后创建的时候并不会自动创建 vue.config.js,因为这个是个可选项,所以一般都是需要修改 webpack 的时候才会自己创建一个 vue.config.js。 vue-cil3之后创建项目后的目录结构如下

    2024年02月04日
    浏览(54)
  • 使用 vue-3-socket.io 插件以及node.js实现实时聊天(1)

     这篇文章使用选项式API的写法,以实现群聊和私聊为主 客户端自然是对应使用vue3框架,服务端使用node.js配合express、http、socket.io、file等库来实现,具体如下: 1、下载所需的依赖 2、做socket客户端配置 注:\\\"http://localhost:3000\\\",该地址端口是对应后面配置服务端时所开放的端

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包