vue项目使用luckyexcel插件预览excel表格

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

温馨提示:需要用到luckysheet文件和luckyexcel插件,根据下面步骤一步一步操作会避免踩坑,比如我当时遇到了window.luckysheet is not defined控制台报红的问题。

第一步 引入luckysheet的相关依赖(本地文件或者在线cdn引入)

(这也是上面提到的如果没有引入会报红window.luckysheet找不到的问题)
public文件夹下的index.html里引入luckysheet的相关依赖,由于考虑到我所做的这个项目可能会内网部署,所以将这些依赖包放在了public文件夹下的static文件夹里新建了一个luckysheet文件夹,这些依赖包的来源是我先npm install luckysheet --save把包拉下来,然后去拷贝的。文件存放位置和引入代码如下图。当然也可以选择cdn引入的方式。文章来源地址https://www.toymoban.com/news/detail-520411.html

<!-- 这是引入本地文件 -->
<link rel='stylesheet' href='static/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='static/plugins/plugins.css' />
<link rel='stylesheet' href='static/css/luckysheet.css' />
<link rel='stylesheet' href='static/assets/iconfont/iconfont.css' />
<script src="static/plugins/js/plugin.js"></script>
<script src="static/luckysheet.umd.js"></script>
<!-- 这是引入在线地址 -->
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' />
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' />
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script>
<script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script>

第二步:安装luckyexcel

npm install luckyexcel --save

第三步:luckyexcel处理并渲染表格

  • html部分
    这里需要注意id要写上,后面渲染要用到,还有重要的一点是style的样式要写,一开始没有写发现文件已经读取成功,但是页面上没有显示出来。
<template>
  <div>
    <div v-if="fileType === 'xlsx'" id="luckysheet"  style="margin:0px;padding:0px;width:100%;height:100vh;" /></div>
</template>
  • js部分
import LuckyExcel from 'luckyexcel'; // 引入
// mounted生命周期
mounted() {
	// 从路由地址中获取fileUrl,fileType
    this.fileUrl = this.$route.query.fileUrl ? this.$route.query.fileUrl : null
    this.fileType = this.$route.query.fileType ? this.$route.query.fileType : null
    if (this.fileUrl == null) {
      this.$message({
        type: 'error',
        message: '文件地址无效,请刷新后重试'
      })
    }
	// 加载文件内容
    this.uploading(this.fileUrl)
}
// methods方法
methods: {
	// 加载文件内容
  initExcel(type) {
	axios({
        method: 'post',
        url: process.env.VUE_APP_BASEURL + apiUrl, //这是接口地址
        data: data,
        responseType: 'blob'
      }).then(response => {
        // 如果是导出/下载 则触发downLoadXls方法
        if (type == 'export') {
          downLoadXls(response)
        } else {
          // 否则是预览,则触发displayResult方法
          that.displayResult(response.data)
        }
        function downLoadXls (response) {
          const content = response.data
          const blob = new Blob([content])
          const fileName = excelName + '.xlsx' //这是设置表格的文件名
          if ('download' in document.createElement('a')) {
            // 非IE下载
            const elink = document.createElement('a')
            elink.download = fileName
            elink.style.display = 'none'
            elink.href = URL.createObjectURL(blob)
            document.body.appendChild(elink)
            elink.click()
            URL.revokeObjectURL(elink.href) // 释放URL 对象
            document.body.removeChild(elink)
          } else {
            // IE10+下载
            navigator.msSaveBlob(blob, fileName)
          }
        }
      })
    },
    displayResult(buffer) {
      // 得到xlsx文件流后
      LuckyExcel.transformExcelToLucky(
          buffer, 
          function(exportJson, luckysheetfile){
              // console.log(exportJson);
              // console.log(luckysheetfile);
              if (exportJson.sheets == null || exportJson.sheets.length == 0) {
                alert("文件读取失败!");
                return;
              }
              // 销毁原来的表格
              window.luckysheet.destroy();
              // 重新创建新表格
              window.luckysheet.create({
                container: 'luckysheet', // 设定DOM容器的id
                showtoolbar: false, // 是否显示工具栏
                showinfobar: false, // 是否显示顶部信息栏
                showstatisticBar: false, // 是否显示底部计数栏
                sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置
                allowEdit: false, // 是否允许前台编辑
                enableAddRow: false, // 是否允许增加行
                enableAddCol: false, // 是否允许增加列
                sheetFormulaBar: false, // 是否显示公式栏
                enableAddBackTop: false, //返回头部按钮
                data: exportJson.sheets, //表格内容
                title: exportJson.info.name //表格标题
              });
          },
          function(error){
              // 如果抛出任何错误,则处理错误
          }
      )
    }
}

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

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

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

相关文章

  • 前端(vue)js在线预览PDF、Word、Excel、ppt等office文件

    可选参数 pdf=true,word文档尝试以pdf方式显示,默认false watermark=水印文本,显示文本水印;“img:”+图片url表示图片水印,如:img:https://view.xdocin.com/demo/wm.png saveable=true,是否允许保存源文件,默认false printable=false,是否允许打印,默认true ©able=false,是否允许选择复制内容,

    2024年02月13日
    浏览(69)
  • 自适应插件autofit.js使用(这里演示vue项目)

    这个插件使用以后,页面会根据浏览器的缩放自适应的改变宽高 这里演示的是vue3项目,其他项目也可类似去写 如果要在整个项目做自适应,将配置配到App.vue,如果只要单个页面自适应,只需要配置当前页面即可 App.vue配置如下(单个页面自适应也是如此配置) 以下代码三步走

    2024年02月04日
    浏览(39)
  • 【工具插件类教学】NPOI插件使用Excel表格的导入和导出(包含图片)

    目录 一.导入Excel 解析读取 1.选择导入的目标文件 2.解析读取导入的文件

    2024年01月16日
    浏览(51)
  • react中预览excel表格

    查了很多资料,很多插件,有很多也用不了,最后试了xlsx这个插件,可以使用。 话不多少了,直接放代码吧: 1.代码实现 简单说一下,我的excel文件是后台返回的,拿到res之后,先转为blob格式,然后经过一系列的转义,最终拿到Unit8Array格式数据,通过插件XLSX的read方法,读

    2024年02月07日
    浏览(32)
  • vue 使用vue-office预览word、excel,pdf同理

    在此,我只使用了docx和excel, pdf我直接使用的iframe进行的展示就不作赘述了 如果是vue2.6版本或以下还需要额外安装 @vue/composition-api 参考: 1、vue + vue-office 实现多种文件(docx、excel、pdf)的预览 2、vue 预览word、excel、pdf文档 vue-office(VueOfficeDocx、VueOfficeExcel、VueOfficePdf) 3、vu

    2024年02月07日
    浏览(50)
  • vue3项目使用pdf.js插件实现:搜索高亮、修改pdf.js显示的页码、向pdf.js传值、控制搜索、处理接口文件流

    官网地址:http://mozilla.github.io/pdf.js/ 中文文档地址:https://gitcode.gitcode.host/docs-cn/pdf.js-docs-cn/print.html PDF.js是基于HTML5技术构建的,用于展示可移植文档格式的文件(PDF),它可以在现代浏览器中使用且无需安装任何第三方插件。 pdf.js主要包含两个库文件 pdf.js:负责API解析 pdf.wor

    2024年02月13日
    浏览(67)
  • 当excel中表格打印预览右边超出限定页面时,调整列宽

    解决办法 :调整整体列或者部分列的列宽   操作流程如下 : 第一步:选中需要调整的列 ①将鼠标放在表格的列上,等出现向下粗箭头后——②单击(变成粗十字)该列——③拖动选中列 第二步:调整列宽 鼠标单击右键——②选择列宽后鼠标单击左键——③在列宽右边的数

    2024年02月20日
    浏览(61)
  • 图片预览插件vue-photo-preview的使用

    移动端项目中需要图片预览的功能,但本身使用mintui,vantui中虽然也有,但是为了一个组件安装这个有点儿多余,就选用了vue-photo-preview插件实现(其实偷懒也不想自己写)。 1、安装 或者用淘宝镜像 2、引入 打开项目中main.js,添加如下代码 注:引入可进行配置,部分常用配

    2024年02月13日
    浏览(37)
  • vue或uniapp使用pdf.js预览

    一、先下载稳定版的pdf.js,可以去官网下载  官网下载地址  或  pdf.js包下载(已配置好,无需修改) 二、下载好的pdf.js文件放在public下静态文件里, uniapp是放在 static下静态文件里 三、使用方式    1. vue项目 注意路径  :src=\\\"`static/pdfjs-1.9/web/viewer.html?file=你的pdf路径  2.

    2024年02月13日
    浏览(41)
  • 【学习记录20】vue使用blob流预览word ,Excel,pdf,TXT,图片,视频

    TXT,PDF直接使用浏览器本身预览 excel使用插件 xlsx, 这个插件需要用到arraybuffer的流格式,我是使用前端转换的详见js代码,也可以叫后台返回arraybuffer的数据流 word 使用插件  docx-preview 话不多说直接上菜,css样式自己调就行 npm install xlsx --save npm install docx-preview --save 思路来

    2024年02月13日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包