Json生成Excel,预览Excel(前端)

前端生成Excel,预览Excel

一、xlsx

sheetJs 中文文档

npm i xlsx

1、代码详情

<template><div><input type="file" id="fileInput" @change="uploadChange" /><div v-html="vHtml"></div></div>
</template>
<script setup lang="ts">
import * as XLSL from 'xlsx'
import { ref } from 'vue'
//v-html
const vHtml = ref<string>('')// 文件上传
function uploadChange() {// 读取上传后的文件const file = document.getElementById('fileInput').files[0]// 创建FileReader实例const reader = new FileReader()// 指定读取的内容是ArrayBuffer类型的数据reader.readAsArrayBuffer(file)reader.onload = () => {// 读取完成,调用XLSL的read函数获取解析上传的xlsxlet workbook = XLSL.read(reader.result, { type: 'array' })// 一般都只有一个sheet,取第一个sheet的名称,方便取到sheet的数据let sheetNames = workbook.SheetNames[0]// 根据sheet的名称获取sheet数据解析成htmllet html = XLSL.utils.sheet_to_html(workbook.Sheets[sheetNames])// 将渲染容器替换成解析出来的html标签渲染vHtml.value = html}
}
</script><style>
/** 自定义表格样式 **/
table {border: 1px solid black;
}th {border: 1px solid black;
}
td {border: 1px solid black;
}
</style>

2、项目(有ant-design-vue)

<template><div><input type="file" id="fileInput" @change="uploadChange" /><a-table :dataSource="dataSource" :columns="columns" bordered /></div>
</template>
<script setup lang="ts">
import * as XLSL from 'xlsx'
import { ref } from 'vue'interface rowType {[key: string]: string
}
const columns = ref<rowType[]>([])
const dataSource = ref<rowType[]>([])// 文件上传
function uploadChange() {// 读取上传后的文件const file = document.getElementById('fileInput').files[0]// 创建FileReader实例const reader = new FileReader()// 指定读取的内容是ArrayBuffer类型的数据reader.readAsArrayBuffer(file)reader.onload = () => {// 读取完成,调用XLSL的read函数获取解析上传的xlsxlet workbook = XLSL.read(reader.result, { type: 'array' })// 一般都只有一个sheet,取第一个sheet的名称,方便取到sheet的数据let sheetNames = workbook.SheetNames[0]// 根据sheet的名称获取sheet数据解析成jsonlet jsonData = XLSL.utils.sheet_to_json(workbook.Sheets[sheetNames]) as rowType[]// 取excel第一行当表头Object.keys(jsonData[0]).forEach((item: string) => {columns.value.push({title: item,dataIndex: item,})})// 其他行都当做数据jsonData.forEach((item: rowType) => {let obj: rowType = {}Object.keys(item).map((key: string) => {obj[key] = item[key]})dataSource.value.push(obj)})}
}
</script>

二、vue-json-pretty

若要实现文档 JSON 格式和 Excel 表格的在线预览,你可以使用第三方库来实现。对于文档 JSON 格式,你可以使用 vue-json-pretty 库来展示美观的 JSON 数据;对于 Excel 表格,你可以使用 vue-excel-viewer 库来完成在线预览。

npm install vue-json-pretty vue-excel-viewer --save

main.js

import { createApp } from 'vue'
import App from './App.vue'
import VueJsonPretty from 'vue-json-pretty'
import VueExcelViewer from 'vue-excel-viewer'const app = createApp(App)
app.component('VueJsonPretty', VueJsonPretty)
app.component('VueExcelViewer', VueExcelViewer)
app.mount('#app')

在 Vue 模板中,使用 <vue-json-pretty> 组件来展示 JSON 数据

<template><div><h2>JSON 数据</h2><vue-json-pretty :data="jsonData"></vue-json-pretty><h2>Excel 表格</h2><vue-excel-viewer :data="excelData"></vue-excel-viewer></div>
</template><script setup  lang="ts">import { defineComponent,ref,reavtive } from 'vue'
const jsonData = reavtive <any>({foo: 'bar',baz: [1, 2, 3]// 这里是你的 JSON 数据
})
const  excelData =ref('path/to/excel.xlsx')  // 这里是你的 Excel 文件路径或 URL
</script>

拓展

后端 kkFileView 可以实现多种文档在线预览

最后建议:太过复杂的表格还是不要放在前端做,很影响用户体验

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/839266.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深入了解Java中的BigDecimal类及其方法

在Java中&#xff0c;BigDecimal类是一个用于精确计算浮点数的不可变类&#xff0c;特别适用于财务计算&#xff0c;能够避免传统浮点类型可能导致的精度问题。本文将详细介绍BigDecimal类及其常用方法&#xff0c;并通过示例说明如何使用这些方法。 基本介绍 BigDecimal类允…

AJAX、

文章目录 AJAX1. AJAX简介AJAX特点 2. XML简介3. AJAX发送get请求4. post请求设置体参数5. 设置请求头信息6. AJAX请求服务端响应json数据7. ie缓存问题8. 请求超时问题和网络异常9. 取消请求10. 请求重复取消11. jQuery中的AJAX请求12. axios函数发送AJAX使用fetch函数发送AJA…

跨境电商赛道,云手机到底能不能化繁为简?

当下国内电商背景&#xff1a; 从零售额的数据来看&#xff1a;随着互联网的普及和消费者购物习惯的改变&#xff0c;国内电商市场规模持续扩大。据相关数据显示&#xff0c;网络消费亮点纷呈&#xff0c;一季度全国网上零售额达到了3.3万亿元&#xff0c;同比增长12.4%。这表…

html 段落与排版标记 Web前端开发技术、详细文章(例如)

段落与排版标记 网页的外观是否美观&#xff0c;很大程度上取决于其排版。在页面中出现大段的文字&#xff0c;通常采用分段进行规划&#xff0c;对换行也有极其严格的划分。本节从段落的细节设置入手&#xff0c;利用段落与排版标记自如地处理大段的文字。 段落p标记 在HTM…

探索SRM系统的未来:第一批吃螃蟹的企业如何用API/插件打破效率瓶颈?

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 一、SRM开放集成实践前瞻 二、开放集成渐成系统升级新趋势 降本增效是企业经营的一大永恒话题。通常而言&#xff0c;企业在不同发展阶段中&#xff0c;会使用到不同的管理系统&#xff0c;或产生不同的业务场…

react 使用 Reducer 和 Context 进行纵向扩展

Reducer 允许您合并组件的状态更新逻辑。上下文允许您将信息深入传递到其他组件。您可以将 reducer 和 context 组合在一起&#xff0c;以管理复杂屏幕的状态。 将减速器与上下文相结合 在 reducer 简介中的此示例中&#xff0c;状态由 reducer 管理。reducer 函数包含所有状…

LLM提示词编写技巧-prompt必知必会

LLM大模型提示词编写技巧 提示词的构成要素基础技巧添加明确的语法分解任务指定输出结构 进阶技巧少样本学习 Few Shot零样本学习zero shot思维链提示 CoTCO-STAR框架 高阶技巧自动推理并生成工具 ART推理行动 ReACT 好用的提示词示例绘制工作流程图编写技术博客 参考资料 提示…

热红外传感器

热红外传感器 一、热红外测温原理二、热红外传感器三、MLX90640-D55(MLX90640-BAB)测试 一、热红外测温原理 自然界中当物体的温度高于 绝对零度 时&#xff0c;由于它内部 热运动 的存在,就会不断地向四周辐射电磁波&#xff0c;其中就包含了波段位于0.75&#xff5e;100μm …

K8S认证|CKA题库+答案| 14. 排查故障节点

14、排查集群中的故障节点 您必须在以下Cluster/Node上完成此考题&#xff1a; Cluster Master node Worker node wk8s master …

Java核心面试基础

1.1核心知识 1.1.1 数据类型 Java中的数据类型可以分为两大类&#xff1a;基本数据类型&#xff08;Primitive Data Types&#xff09;和引用数据类型&#xff08;Reference Data Types&#xff09; 基本数据类型 基本数据类型是Java语言中内置的、不可再分的数据类型。Java…

LLMjacking:针对云托管AI大模型服务的新型攻击

Sysdig威胁研究团队(TRT)观察到一种新型攻击&#xff0c;命名为LLMjacking。它利用窃取的云凭证&#xff0c;对托管在云上的十个大型语言模型(LLM)服务发起攻击。 这些凭证是从一个流行的目标获得&#xff0c;即运行着一个存在漏洞的Laravel版本&#xff08;CVE-2021-3129&…

常见算法(1)

1.基本查找/顺序查找 核心&#xff1a;从0索引之后挨个查找 实现代码&#xff1a; public class test {public static void main(String [] arg) throws ParseException {int[] arr {121,85,46,15,55,77,63,49};int number55;System.out.println(bashi(arr,number));}publi…

Controller层常用注解

1. RestController 这是一个复合注解&#xff0c;在controller层加上此注解&#xff0c;定义返回的数据都是json格式 2. RequestBody 1&#xff09;前端向后端发送的是json数据&#xff0c;此注解可以将json主动封装成java bean&#xff0c;示例 public void save(RequestBo…

QT使用特点汇总

一.Qt的历史及功能介绍 Qt 最早在1991年由挪威的两位程序员 Eirik Chambe-Eng 和 Haavard Nord 开发&#xff0c;他们在1994年创立 Trolltech 公司&#xff08;奇趣科技&#xff09;正式经营软件业务。 Qt 的第一个公众预览版于1995年面世&#xff0c;之后在2008年被诺基亚收购…

【编译原理复习笔记】正则表达式与自动机

正则表达式 正则表达式是一种用来描述正则语言的更紧凑的表达方法 e.g. r a ( a ∣ b ) ∗ ( ϵ ∣ ( . ∣ ) ( a ∣ b ) ) ra(a|b)^*(\epsilon|(.|\\_ )(a|b)) ra(a∣b)∗(ϵ∣(.∣)​(a∣b)) 正则表达式可以由较小的正则表达式按照特定的规则递归地构建。每个正则表达式定义…

window与linux常用操作

目录 linux用户相关linux挂载网络共享文件wsl相关docker相关配置打包镜像导出镜像导入镜像window清理wsl和docker空间window查看网络中计算机的ipv4linux用户相关 添加新用户sudo adduser --home /home/<用户名> <用户名>查看权限id <用户名>添加权限sudo us…

综述 | 走向图对比学习:综述与展望

【摘要】近年来&#xff0c;图的深度学习在各个领域取得了显著的成功。然而&#xff0c;对带注释的图形数据的依赖仍然是一个很大的瓶颈&#xff0c;因为它的成本过高且耗费时间。为了应对这一挑战&#xff0c;图的自监督学习(SSL)得到了越来越多的关注&#xff0c;并取得了重大…

群晖搭建网页版Linux Ubuntu系统并实现远程访问

文章目录 1. 下载Docker-Webtop镜像2. 运行Docker-Webtop镜像3. 本地访问网页版Linux系统4. 群晖NAS安装Cpolar工具5. 配置异地访问Linux系统6. 异地远程访问Linux系统7. 固定异地访问的公网地址 docker-webtop是一个基于Docker的Web桌面应用&#xff0c;它允许用户通过浏览器远…

二十五、openlayers官网示例CustomOverviewMap解析——实现鹰眼地图、预览窗口、小窗窗口地图、旋转控件

官网demo地址&#xff1a; Custom Overview Map 这个示例展示了如何在地图上增加一个小窗窗口的地图并跟随着地图的旋转而旋转视角。 首先加载了一个地图。其中 DragRotateAndZoom是一个交互事件&#xff0c;它可以实现按住shift键鼠标拖拽旋转地图。 const map new Map({int…

客户端Web资源缓存

为了提高Web服务器的性能,其中的一种可以提高Web服务器性能的方法就是采用缓存技术。 1.缓存 1.1.什么是缓存&#xff1f; 如果某个资源的计算耗时或耗资源&#xff0c;则执行一次并存储结果。当有人随后请求该资源时&#xff0c;返回存储的结果&#xff0c;而不是再次计算。…