这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
前言
在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印。
预览excel
关于实现excel文档在线预览的做法,一种方式是通过讲文档里的数据处理成html,一种是将文档处理成图片进行预览。
首先我们先讲一下实现html这种方式预览的。Excel预览用的是xlsx
这个库。
xlsx是一个优秀的表格处理库,是一款适用于浏览器和nodejs的开源电子表格解析库
安装
这里值得注意的是,vue2和vue3的引用写法不一样
// vue2 引用 xlsx import xlsx from 'xlsx'
// vue3 引用 xlsx import * as XLSX from 'xlsx'
使用
FileReader读取文件流
先使用FileReader对象
提供的一种读取File对象内容
的方法,将文件流用readAsBinaryString
方法根据二进制字符串的形式返回,再通过reader.onload
操作读取文件流的二进制字符串形式
:
// 实例化 FileReader 对象 const reader = new FileReader() // file为文件流 reader.readAsBinaryString(file) reader.onload = function () { const binaryStringData = reader.result console.log(binaryStringData) }
代码
vue3上传excel并在线预览
那么vue3中如何预览Excel文件呢,这里现用一个ant-design-vue的上传组件上传一个excel文件,如下:
(1)创建组件
添加ant-design-vue upload上传组件
,用于上传文件用来预览excel并转化其为html的组件。包含一个文件上传的按钮和预览区域,如下图:
使用XLSX.utils.sheet_to_html
方法将工作表(workSheet)转化成html表格的字符串表示,然后显示在前端页面,按照表格的行列结构进行排序,从而实现在线预览的效果, 如下:
这里值得注意的是添加table的样式:
效果
打印excel
安装
yarn add vue3-print-nb
我们使用vue3-print-nb
打印excel表格,在点击打印按钮时触发打印事件。
问: 如何使用vue3-print-nb库打印
答: 使用v-print指令
vue3全局引入print
import { createApp } from 'vue' import App from './App.vue' import print from 'vue3-print-nb' const app = createApp(App) app.use(print).mount('#app')
代码
这种打印情况,除非是整页window.print()
打印,打印单个表格的话,我们上传完excel表,把数据渲染到表格中再进行打印,像这样:
XLSX.utils.sheet_to_json
用于将excel表格中的工作表(sheet)转换成JSON
格式的函数.
这里我们通过转换出来的json赋值给table,如下:
template
script
效果
总结
excel文件预览,借用了xlsx
库来读取excel文件流,通过XLSX.utils.sheet_to_html
来实现在线文件的预览。
eccel文件打印,借用了vue3-print-nb
库来进行用户点击打印按钮时,打印某个区域范围的内容,通过XLSX.utils.sheet_to_json
解析文件流转化成JSON数据,再通过v-print
指令进行绑定区域打印。
本文转载于:
https://juejin.cn/post/7292975471448670248
如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容