首页 > 其他分享 >Vue3实现excel文件预览和打印

Vue3实现excel文件预览和打印

时间:2024-08-29 12:14:20浏览次数:4  
标签:xlsx Vue3 预览 打印 excel vue3 print

预览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指令进行绑定区域打印。

标签:xlsx,Vue3,预览,打印,excel,vue3,print
From: https://www.cnblogs.com/ranyihang/p/18386432

相关文章

  • vue3导入excel表格并展示(使用xlsx插件+vite+element-plus)/js上传表格(js+xlsx)
    第一步:下载两个库npminstallfile-saver--savenpminstallxlsx--save第二步:引入import{saveAs}from'file-saver'import*asXLSXfrom'xlsx'第三步:给组件设置点击事件<el-form-item@click="handleExport">导出</el-for......
  • 在Vue3中处理异步API调用并更新表单数据的方法示例
    在Vue3中,处理异步API调用并更新表单数据通常涉及到使用组合式API(CompositionAPI),它提供了一种更灵活的方式来组织组件逻辑。以下是使用Vue3的setup函数和reactive、ref等响应式API来处理异步API调用并更新表单数据的一个示例。首先,假设我们有一个表单,需要从API获取一些数据并填......
  • vue3导入excel表格并展示(使用xlsx插件+vite+element-plus)/js上传表格(js+xlsx)
    首先下载两个库npminstallxlsx--savenpminstallfile-saver--save然后在你需要导出的组件里引入库import{saveAs}from'file-saver'import*asXLSXfrom'xlsx'创建函数consthandleExport=()=>{letoneDimensionalArray=[]lettwoDimensionalArray......
  • Vue3 变量响应基础
    在Vue3中有两种分别为选项式和组合式的操作,现在一般用组合式,很少用选项式的操作;1.计算,与变量;直接这样写的话,他不会进行计算,需要添加两个大括号;比如 {{1+1}}变量的话我们可以不用script中的因为里面是Vue2的我们可以改成如果不使用{{}}的话他显示的则会变......
  • 点击Excel中的邮箱地址,如何默认打开FoxMail邮箱。
    在Windows系统中,若要设置Foxmail为默认邮件程序,请按照以下步骤操作:1.打开控制面板(命令:control),选择“查看方式”中的“大图标”,找到并点击“默认程序”。 2.在默认程序界面,点击“将文件类型或协议与程序关联”。 3.在默认应用中,找到电子邮件,点击,选择Foxmail。通过......
  • vue3的 状态管理库
    1.vue的状态管理库vue常用的状态管理库有 vuex 和Pinia,两者的区别如下:架构设计‌:Vuex采用全局单例模式,通过一个store对象来管理所有的状态;而Pinia采用了分离模式,每个组件都拥有自己的store实例。模块设计:Vuex包含states、mutations、getters、actions、modules,mutat......
  • Vue3常见知识**MS【4】
    一、vue2和vue3的区别1、数据绑定原理不同  vue2:数据绑定是利用ES5的一个API:Object.definePropert()对数据进行劫持,结合发布订阅模式的方式来实现的。  vue3:使用了ES6的ProxyAPI对数据代理。相比vue2.x,使用proxy的优势如下:defineProperty只能监听某个属性,不能对......
  • vue3 常用的几种组件通讯方式
    vue3常用的几种组件通讯方式,大致如下Props/EmitPinia事件总线(mitt)Provide/Inject浏览器本地存储 1.Props/Emit注释:prop属性名称/方法名称的格式,采用 camelCase 与 kebab-case。 1.1props(1)上游组件设置 prop 值(通过v-bind或冒号) 或者 (2)下游......
  • Vue3知识点
    什么是Vue3用于构建用户界面的渐进式框架Vue2和Vue3的区别响应式系统的重写:使用Proxy代替defineProperty实现数据响应式。重写虚拟DOM的实现和Tree-Shaking销毁和卸载的改进,销毁前不需要执行额外的操作生命周期的添加新增的APIvue3是组合式api,vue2是选项式api......
  • Excel导入数据时,配置单元格样式大全(POI)
    Excel导入数据时,配置单元格样式大全一:基础配置1.字体样式:Fontfont=workbook.createFont();font.setFontName("Arial");//设置字体名称font.setFontHeightInPoints((short)12);//设置字体大小font.setBold(true);//设置粗体font.setItalic(true);//设置斜体f......