首页 > 其他分享 >记录--vue3实现excel文件预览和打印

记录--vue3实现excel文件预览和打印

时间:2023-10-24 18:35:20浏览次数:28  
标签:xlsx 预览 -- 打印 excel vue3 print

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助

前言

在前端开发中,有时候一些业务场景中,我们有需求要去实现excel的预览和打印功能,本文在vue3中如何实现Excel文件的预览和打印。

预览excel

关于实现excel文档在线预览的做法,一种方式是通过讲文档里的数据处理成html,一种是将文档处理成图片进行预览。

首先我们先讲一下实现html这种方式预览的。Excel预览用的是xlsx这个库。

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

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。

 

标签:xlsx,预览,--,打印,excel,vue3,print
From: https://www.cnblogs.com/smileZAZ/p/17785471.html

相关文章

  • golang的Leaf框架安装步骤
    最近在学习golang的Leaf游戏服务器框架(官方github),官方的安装步骤,非常简单,如下图:我在安装的时候也遇到一些疑问,因此记录下来我的实操步骤!1、我的现有GOPATH=E:\Go,src目录下有一些做过的项目2、获取LeafServer,我在src目录下clone的,遵循以前的原则,项目文件都放到GOPATH的src目录......
  • js替换模版中${}的内容
    【转】https://blog.csdn.net/xiangzaixiansheng/article/details/132501772要在js中想要替换替换模板中的${},可以使用字符串的replace()方法结合正则表达式或者函数来实现替换操作。以下是两种常见的替换方式:使用正则表达式:方法一:consttemplate="Hello,${name}!Today......
  • Runner GoUI自动化测试发布
    构建自动化测试体系是当下每个项目团队愿意去做的,自动化测试减少重复操作节省人力成本。RunnerGoUI自动化平台RunnerGo提供从API管理到API性能再到可视化的API自动化、UI自动化测试功能模块,覆盖了整个产品测试周期。RunnerGoUI自动化基于Selenium浏览器自动化方案构建,内嵌高......
  • 基于Python的子进程获取键盘输入
    一概念 众所周知,python中的获取键盘输入,input函数是没办法用在子程序的,这就限制了它的用途。想要在子程序中获取键盘输入。唯有fn=sys.stdin.fileno函数了。二实例解析在主进程中敲写代码fn=sys.stdin.fileno(),然后将获取到的文件描述符fn传入子进程,子进程敲写代码sys......
  • .gitignore
    忽略根目录下的text.txt文件/text.txt忽略根目录下的test目录中的text.txt文件/test/text.txttest/text.txt忽略项目中任何地方具有text.txt的文件text.txt忽略整个目录及其所有内容test/test匹配任何名字带有test的文件和目录忽略项目中任何地方以img开头的文件和目录......
  • Apipost自动化测试使用教程
    Apipost提供可视化的API自动化测试功能,使用Apipost研发人员可以设计、调试接口,测试人员可以基于同一数据源进行测试,Apipost接口自动化功能在上次更新中进行了逻辑调整,带来更好的交互操作、更多的控制器选择,同时新增同步接口模式选择、测试数据选择功能。添加接口使用Apipost,......
  • docker安装xxl-job
    docker安装xxl-job拉取xxl-job-admin项目MySQL初始化脚本,查看创建xxl-job数据库拉取镜像dockerpullxuxueli/xxl-job-admin:2.4.0创建目录mkdir/tool/xxl-job/logs官方配置信息下载放置xxl-job目录下创建容器dockerrun-d\-p8080:8080\-v/to......
  • 重磅官宣 | 第二届OpenHarmony技术峰会,邀您共启智联未来
    "下一个技术未来在哪里?"11月4日  技术大咖齐聚北京为你解答一场主论坛+八大开源领域分论坛探究终端操作系统十大技术挑战方向与全球开源操作系统技术领袖、实践专家、一线导师携手共绘OpenHarmony开源生态璀璨星图!......
  • 无涯教程-Clojure - odd?函数
    如果数字为奇数,则返回true;如果数字不是整数,则引发异常。odd?-语法以下是语法。(odd?number)odd?-示例以下是奇数测试函数的示例。(nsclojure.examples.hello(:gen-class));;ThisprogramdisplaysHelloLearnfk(defnExample[](defx(odd?0))(pri......
  • Databend 开源周报第 116 期
    Databend是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.cn。What'sOnInDatabend探索Databend本周新进展,遇到更贴近你心意的Databend。特性预览:使用SQL管理后台任务此前,Databend引入了后......