当前位置: 首页 > news >正文

前端vue3获取excel二进制流在页面展示

excel二进制流在页面展示

  • 安装xlsx
  • 在页面中定义一个div来展示html数据
  • 定义二进制流请求接口
  • 拿到数据并展示

安装xlsx

npm install xlsx
import * as XLSX from 'xlsx';

在页面中定义一个div来展示html数据

 <div class="file-input" id="file-input" v-html="excelData"></div>

定义二进制流请求接口

export function getExcel(data: any) {return axios({url: 'xxx',method: 'post',responseType: 'blob',data,headers: {'Content-Type': 'application/json','Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'}});
}

拿到数据并展示

const excelData = ref(null)const dealFile = () => {let params = {}getExcel(params).then(async (res: any) => {loading.value = falseconst blob = new Blob([res.data], {type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'})const arrayBuffer = await blob.arrayBuffer()const workbook = await XLSX.read(arrayBuffer, {type: 'array'})const sheetName = workbook.SheetNames[0]const worksheet = workbook.Sheets[sheetName]console.log('worksheet   ', worksheet)try {if (worksheet) {const html = XLSX.utils.sheet_to_html(worksheet, {header: `<style>.xlsx-table {border-collapse: collapse;width: 100%;margin: 1rem 0;box-shadow: 0 0 10px rgba(0,0,0,0.1);}.xlsx-table th, .xlsx-table td {border: 1px solid #e0e0e0;padding: 10px 12px;text-align: left;min-width: 150px;}.xlsx-table th {background-color: #f5f7fa;font-weight: 600;color: #333;min-width: 150px;}.xlsx-table tr:nth-child(even) {background-color: #f9f9f9;}.xlsx-table tr:hover {background-color: #f1f5f9;}</style>`})excelData.value = html.replace('<table', '<table class="xlsx-table"');} else {excelData.value = '<div style="text-align: center;height:200px;line-height: 200px">暂无数据</div>'}} catch (error) {excelData.value = '<div style="text-align: center;height:200px;line-height: 200px">暂无数据</div>'}})
}
http://www.xdnf.cn/news/1130761.html

相关文章:

  • Promise与Axios:异步编程
  • sqli-labs靶场通关笔记:第23关 注释符过滤
  • React -自定义hooks - 封装双向数据绑定
  • 自动控制原理知识地图:舵轮、路径与导航图
  • 2025年C++后端开发高频面试题深度解析:线程安全LRU缓存设计与实现
  • C# StringBuilder源码分析
  • 2025年Java最新社招面试八股文+技术场景题(金九银十)
  • Hadoop架构演进:从1.0到2.0的深度对比与优化解析
  • Hadoop(二)
  • QT技巧之快速搭建串口收发平台
  • Taro.getRandomValues() 用法详解
  • 有哪些好用的原型设计软件?墨刀、Axure等测评对比
  • Elasticsearch+Logstash+Kibana部署
  • Taro.eventCenter 用法详解与实战
  • 深入核心:理解Spring Boot的三大基石:起步依赖、自动配置与内嵌容器
  • 【Qt+error】error: use of undeclared identifier ‘MainWindow
  • uniapp各端通过webview实现互相通信
  • qt 中英文翻译 如何配置和使用
  • Spring AI 系列之十三 - RAG-加载本地嵌入模型
  • 在 CentOS 8 上彻底卸载 Kubernetes(k8s)
  • k8s之持久化存储流程
  • JavaScript 异步编程的终极指南:从回调到 Promise、Async/Await
  • 深入解析Linux进程地址空间与虚拟内存管理
  • vivo S30评测:用设计诠释科技,以性能书写情怀
  • 电脑安装 Win10 提示无法在当前分区上安装Windows的解决办法
  • openEuler 22.03 LTS Rootless Docker 安装指南
  • Apache IoTDB(1):时序数据库介绍与单机版安装部署指南
  • 免费MCP服务:Excel CSV 转 JSON MCP by WTSolutions 文档
  • 计算机网络:(九)网络层(下)超详细讲解互联网的路由选择协议、IPV6与IP多播
  • 微服务中token鉴权设计的4种方式