js和html中,将Excel文件渲染在页面上

ops/2025/1/2 2:05:46/
htmledit_views">

1.如果从后端拿到的数据是文档流

html" title=javascript>javascript">// 从后端接口获取 Excel 文档流
async function fetchExcelFromBackend() {try {// 假设后端接口 URLconst backendApiUrl = `http://local.hct10039.com:18080/recognition/downloadExcel?orderSn=${orderSn}`;const response = await fetch(backendApiUrl);if (!response.ok) {throw new Error('Failed to fetch Excel from backend: ' + response.status);}const blob = await response.blob();const file = new File([blob], 'filename.xlsx', { type: blob.type });loadExcelAndRender(file);} catch (error) {alert('出错了:' + error.message);}
}// 加载并渲染 Excel
async function loadExcelAndRender(file) {try {const reader = new FileReader();reader.onload = function (e) {const data = new Uint8Array(e.target.result);const workbook = XLSX.read(data, { type: 'array' });const firstSheetName = workbook.SheetNames[0];const worksheet = workbook.Sheets[firstSheetName];const html = XLSX.utils.sheet_to_html(worksheet, { id: firstSheetName });document.getElementById('excelDom').innerHTML = html;};reader.readAsArrayBuffer(file);} catch (error) {alert('出错了:' + error.message);}
}// 调用函数从后端接口获取并渲染 Excel
fetchExcelFromBackend();

2.如果从后端拿到的是文件的地址

html" title=javascript>javascript">function getFileObjectFromUrl(url, callback) {var xhr = new XMLHttpRequest();xhr.open('GET', url, true);xhr.responseType = 'blob'; // 重要:设置响应类型为blobxhr.onload = function() {if (this.status === 200) {// 请求成功,this.response包含Blob对象var blob = this.response;// 创建File对象var file = new File([blob], 'filename.xlsx', {type: blob.type});// 调用回调函数,传入File对象callback(file);} else {console.error('Failed to download file:', this.status);}};xhr.onerror = function() {console.error('Request error');};xhr.send();
}
async function loadExcelAndRender(file) {try {const reader = new FileReader();reader.onload = function (e) {const data = new Uint8Array(e.target.result);const workbook = XLSX.read(data, { type: 'array' });const firstSheetName = workbook.SheetNames[0]; // 获取第一个sheet的名称const worksheet = workbook.Sheets[firstSheetName];const html = XLSX.utils.sheet_to_html(worksheet, {id: firstSheetName}); // 只渲染第一个sheetdocument.getElementById('excelDom').innerHTML = html; // 将HTML渲染到指定的div中};reader.readAsArrayBuffer(file);} catch (error) {console.error('Error loading or rendering Excel:', error);}
}

3.效果

4.附加功能

放大缩小和拖拽功能


http://www.ppmy.cn/ops/146083.html

相关文章

【SQL】筛选某一列字段中,截取含有关键词“XX”字段位置的前4个字段,去重后查看字段

最近在查询数据库的一些数据,想要统计表格里有多少公司,发现表格里没有公司这一列,只能从但是有一些标题字段,只能从中筛选。 假设关键词是[公司],我们要在数据库的表格中,找到名为title的列,列…

BOOST 库在缺陷检测领域的应用与发展前景

摘要: 本文深入探讨了 BOOST 库在缺陷检测领域的具体应用,包括图像处理、机器学习以及数据处理等多个方面。详细阐述了 BOOST 库在这些领域中所发挥的关键作用,并分析了其在未来缺陷检测领域的发展前景,旨在为相关研究人员和从业者…

Redis+注解实现限流机制(IP、自定义等)

简介 在项目的使用过程中,限流的场景是很多的,尤其是要提供接口给外部使用的时候,但是自己去封装的话,相对比较耗时。 本方式可以使用默认(方法),ip、自定义参数进行限流,根据时间…

.NET平台用C#通过字节流动态操作Excel文件

在.NET开发中,通过字节流动态操作Excel文件提供了一种高效且灵活的方式处理数据。这种方法允许开发者直接在内存中创建、修改和保存Excel文档,无需依赖直接的文件储存、读取操作,从而提高了程序的性能和安全性。使用流技术处理Excel不仅简化了…

【Unity3D】ECS入门学习(一)导入及基础学习

Unity2019.4.0f1版本 打开PackageManager,开启preview 搜索Entities、Hybrid Renderer插件下载 ECS:Entity Component System 实体:作用唯一ID(世界唯一,ECS有世界概念,每个世界是独立的,你无…

【k8s】在ingress-controlller中Admission Webhook 的作用

介绍1 在 NGINX Ingress Controller 中,Admission Webhook 是一种用于增强 Kubernetes API 请求的机制,它允许你在资源(如 Ingress)被创建或更新之前对这些请求进行验证或修改。具体来说,Admission Webhook 在 NGINX …

无人机搭载rtk技术详解!

一、技术原理 RTK定位定向技术的工作原理基于载波相位差分原理。地面基准站接收来自多颗卫星的信号,并计算其精确位置及载波相位观测值,随后将这些数据通过无线电或移动通信网络实时发送给无人机上的流动站。流动站同时接收来自卫星的信号,并…

Cadence学习笔记 14-15 按模块同步抓取器件_宏观布局

基于Cadence 17.4,四层板4路HDMI电路 更多Cadence学习笔记:Cadence学习笔记 1 原理图库绘制Cadence学习笔记 2 PCB封装绘制Cadence学习笔记 3 MCU主控原理图绘制Cadence学习笔记 4 单片机原理图绘制Cadence学习笔记 5 四路HDMI原理图绘制Cadence学习笔记…