vue3中预览Excel文件
1.前言
有时候项目中需要预览Excel文件,特别是对于.xls格式的Excel文件许多插件都不支持,经过尝试,最终有三种方案可以实现.xlsx和.xls格式的Excel文件的预览,各有优缺点
2.luckyexcel插件
2.1说明
该插件优点在于能保留源文件的样式和保留图片,缺点在于只支持.xlsx,无法编辑更改(可能是我没有去查找资料),适用于需要保留样式只用于预览不用于编辑的场景
2.2使用过程
2.2.1安装
npm install luckyexcel
2.2.2引入
引入方式有两种
(1)使用CDN引入
<script src="https://cdn.jsdelivr.net/npm/luckyexcel/dist/luckyexcel.umd.js"></script>
这个路径意思是会拉取到最新的luckysheet代码,但是如果Luckysheet刚刚发布,jsdelivr网站可能还没来得及从npm上同步过去,故而使用这个路径还是会拉到上一个版本,我们推荐您直接指定版本。
<script src="https://cdn.jsdelivr.net/npm/luckysheet@2.1.12/dist/luckysheet.umd.js"></script>
(2)本地静态文件方式引入
先从luckyexcel项目中获静态资源用https://gitcode.com/gh_mirrors/lu/Luckyexcel
在public文件夹中新建luckyexcel文件夹,将静态资源全部放入该文件夹中
两种引入方式前提都已说明,下面开始引入
在项目入口文件index.html中引入
// 实用CDN方式引入-拉取最新代码<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="renderer" content="webkit"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link rel="icon" href="/favicon.ico"><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/css/pluginsCss.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/plugins.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/css/luckysheet.css' /><link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/assets/iconfont/iconfont.css' /><script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/plugins/js/plugin.js"></script><script src="https://cdn.jsdelivr.net/npm/luckysheet@latest/dist/luckysheet.umd.js"></script><title>kanno</title>
</head>
// 使用静态文件方式引入
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="renderer" content="webkit"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><link rel="icon" href="/favicon.ico"><link rel='stylesheet' href='/luckyexcel/plugins/css/pluginsCss.css' /><link rel='stylesheet' href='/luckyexcel/plugins/plugins.css' /><link rel='stylesheet' href='/luckyexcel/css/luckysheet.css' /><link rel='stylesheet' href='/luckyexcel/assets/iconfont/iconfont.css' /><script src="/luckyexcel/plugins/js/plugin.js"></script><script src="/luckyexcel/luckysheet.umd.js"></script><title>kanno</title>
</head>
2.2.3使用
<template><div id="luckysheet" ref="luckysheet" style="width:100%;height:100%;position: absolute;left: 0;top: 0;z-index: 0;" ></div>
</template><script setup>
import LuckyExcel from 'luckyexcel'
import { ref, reactive, computed, onMounted, onUnmounted } from 'vue';
const props = defineProps({excelUrl: {default:'',type: String}
});// const emit = defineEmits([]);
let { excelUrl } = toRefs(props)onMounted(()=>{viewOpen('Excel文件')
})
async function viewOpen(fileName) {const data = await fetchBlob(excelUrl.value);console.log("excelUrl.value",excelUrl.value);if (!data) {console.log("无法获取文件数据");return;}LuckyExcel.transformExcelToLucky(data, function (exportJson, luckysheetfile) {if (!exportJson || exportJson.sheets == null || exportJson.sheets.length == 0) {console.log("出错了");return;}if (window.luckysheet) {window.luckysheet.destroy();}window.luckysheet.create({data: exportJson.sheets,title: fileName,userInfo: exportJson.info?.creator,container: 'luckysheet', // 设定DOM容器的idshowtoolbar: false, // 是否显示工具栏showinfobar: false, // 是否显示顶部信息栏showstatisticBar: false, // 是否显示底部计数栏sheetBottomConfig: false, // sheet页下方的添加行按钮和回到顶部按钮配置allowEdit: false, // 是否允许前台编辑enableAddRow: false, // 是否允许增加行enableAddCol: false, // 是否允许增加列sheetFormulaBar: false, // 是否显示公式栏enableAddBackTop: false, // 返回头部按钮showsheetbar: false, // 是否显示底部sheet页按钮showsheetbarConfig: {add: false,menu: false}});});
}async function fetchBlob(url) {try {const response = await fetch(url);if (!response.ok) throw new Error("Network response was not ok.");return await response.blob();} catch (error) {console.error("Failed to fetch blob:", error);return null;}
}
</script>
2.2.4效果
3.微软在线查看excel文件
3.1说明
微软在线查看excel是使用iframe嵌入微软查看的页面,有点在于开发简单,能支持.xlsx和.xls格式,缺点在于无法编辑(可能通过注册微软账号可以进行编辑)和限制文件大小在5M以下,需要文件能通过链接访问,适用于小文件查看
3.2使用
<iframe id="iframeId" scrolling="no" frameborder="0" width="100%" height="118%"style="margin-top: -80px;"></iframe>
let iframeId = document.getElementById('iframeId')
iframeId.src = `https://view.officeapps.live.com/op/view.aspx?src=` + encodeURIComponent(data.data.fileUrl) // 微软网页
3.3代码说明
Your request has been blocked. This could be due to several reasons.是微软用来在线查看excel文件的网页;encodeURIComponent()方法是用来解析文件地址,无需引入
3.4效果展示
4.使用XLSX插件
4.1说明
XLSX支持.xlsx和.xls格式的Excel文件的预览,能通过js方法来更改excel表格,可操作性好,缺点在于不能保留源文件样式、渲染出来的表格和源文件有出入,适用于简单表格文件的预览
4.2安装
npm install xlsx
4.3引入使用
<template><div :id="'excelDom'+id" style="width: 100%;height: 100%;overflow: auto;"></div>
</template><script setup>
import * as XLSX from "xlsx";
import axios from "axios";
import { ref, reactive, computed, onMounted, onUnmounted } from 'vue';
const props = defineProps({excelUrl: {default: '',type: String},id:{default: 1,type: Number}
});// const emit = defineEmits([]);
let { excelUrl,id } = toRefs(props)// Excel显示
getFileObjectFromUrl(excelUrl.value, function (file) {loadExcelAndRender(file);
});
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;let fileName = new Date().getTime()// 创建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) {let excelDom = document.getElementById('excelDom'+id.value);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 }); // 只渲染第一个sheetexcelDom.innerHTML = html; // 将HTML渲染到指定的div中// 动态添加细线表格样式const table = excelDom.querySelector('table');if (table) {// 设置表格整体样式table.style.borderCollapse = 'collapse'; // 合并边框table.style.width = '100%'; // 宽度占满容器table.style.fontSize = '12px'; // 字体大小table.style.lineHeight = '1.5'; // 行高table.style.textAlign = 'center'; // 文字居中table.style.border = '1px solid #ddd'; // 外边框细线// 设置表头样式const thead = table.querySelector('tr');if (thead) {thead.style.backgroundColor = '#f2f2f2'; // 表头背景颜色thead.style.fontWeight = 'bold'; // 表头字体加粗thead.style.whiteSpace = 'nowrap'; // 防止内容换行,确保宽度自适应}// 设置单元格样式const cells = table.querySelectorAll('td, th');cells.forEach(cell => {cell.style.border = '1px solid #ddd'; // 细线边框cell.style.padding = '5px'; // 内边距});// 为所有非表头的 td 添加点击事件const tds = table.querySelectorAll('tbody td'); // 获取 tbody 中的 tdtds.forEach((td) => {td.addEventListener('click', () => {// 清除所有单元格的背景色tds.forEach(cell => {cell.style.backgroundColor = ''; // 清除背景色});// 为当前点击的单元格设置背景色td.style.backgroundColor = '#cfe2ff'; // 设置背景色为浅蓝色// 计算行号和列号const row = td.parentNode.rowIndex; // 获取行号(从 0 开始)const col = td.cellIndex; // 获取列号(从 0 开始)});});}};reader.readAsArrayBuffer(file);} catch (error) {console.error('Error loading or rendering Excel:', error);}
}</script>
相关文章:
vue3中预览Excel文件
1.前言 有时候项目中需要预览Excel文件,特别是对于.xls格式的Excel文件许多插件都不支持,经过尝试,最终有三种方案可以实现.xlsx和.xls格式的Excel文件的预览,各有优缺点 2.luckyexcel插件 2.1说明 该插件优点在于能保留源文件…...
VsCode和AI的前端使用体验:分别使用了Copilot、通义灵码、iflyCode和Trae
1、前言 大杂烩~每次开发一行代码,各个AI争先恐后抢着提供帮助 备注:四款插件都需要先去官网注册账号,安装好之后有个账号验证。 2、插件详解 2.1、AI分析的答案 GitHub Copilot 定位:老牌 AI 代码补全工具,深度集成…...
【问题排查】easyexcel日志打印Empty row!
问题原因 日志打印I/O 操作开销(如 Log4j 的 FileAppender)会阻塞业务线程,直到日志写入完成,导致接口响应变慢 问题描述 在线上环境,客户反馈导入一个不到1MB的excel文件,耗时将近5分钟。 问题排…...
若依框架SpringBoot从Mysql替换集成人大金仓(KingBase)数据库
一、安装人大金仓数据库 1、下载 前往人大金仓数据库下载自己想要的版本(建议下载Mysql兼容版)人大金仓官网,点击服务与支持,点击安装包下载 点击软件版本,选择数据库 选择合适的版本,点击下载࿰…...
Graph Representation Learning【图最短路径优化/Node2vec/Deepwalk】
文章目录 Q1:网络性质:1.数据读取与邻接表构建:2.基本特征和连通性: 算法思路:1. 广度优先搜索(BFS)标记前驱:2. 回溯生成所有最短路径: 实验结果:复杂度分析: Q2&#x…...
ZYNQ Overlay硬件库使用指南:用Python玩转FPGA加速
在传统的FPGA开发中,硬件设计需要掌握Verilog/VHDL等硬件描述语言,这对软件开发者而言门槛较高。Xilinx的PYNQ框架通过Overlay硬件库彻底改变了这一现状——开发者只需调用Python API即可控制FPGA的硬件模块,实现硬件加速与灵活配置。本文将深入探讨ZYNQ Overlay的核心概念、…...
Git基础使用方法与命令总结
Git 是一个分布式版本控制系统,用于跟踪代码或文件的修改历史。以下是 Git 的基础使用方法和常用命令,适合快速上手: 1. 安装与配置 安装 Git 下载地址:https://git-scm.com/downloads(支持 Windows/macOS/Linux&…...
rust语言,与c,go语言一样也是编译成二进制文件吗?
是的,Rust 和 C、Go 一样,默认情况下会将代码编译成二进制可执行文件(如 ELF、PE、Mach-O 等格式),但它们的编译过程和运行时特性有所不同: 1. Rust(类似 C,直接编译为机器码&#x…...
从银行排队到零钱支付:用“钱包经济学”重构Java缓存认知
"当你的系统还在频繁访问数据库银行时,聪明的开发者早已学会用钱包零钱策略实现毫秒级响应——本文将用理财思维拆解缓存设计精髓,教你如何让代码学会小额快付的架构艺术。" 【缓存】作为程序员必须理解的概念之一,让我们用 「钱…...
Json rpc 2.0比起传统Json在通信中的优势
JSON-RPC 2.0 相较于直接使用传统 JSON 进行通信,在协议规范性、开发效率、通信性能等方面具有显著优势。以下是核心差异点及技术价值分析: 一、结构化通信协议,降低开发成本 传统 JSON 通信需要开发者自定义数据结构和处理逻辑,…...
无缝部署您的应用程序:将 Jenkins Pipelines 与 ArgoCD 集成
在 DevOps 领域,自动化是主要目标之一。这包括自动化软件部署方式。与其依赖某人在部署软件的机器上进行 rsync/FTP/编写软件,不如使用 CI/CD 的概念。 CI,即持续集成,是通过代码提交创建工件的步骤。这可以是 Docker 镜像&#…...
网络安全-等级保护(等保) 2-5-1 GB/T 25070—2019 附录B (资料性附录)第三级系统安全保护环境设计示例
################################################################################ 文档标记说明: 淡蓝色:时间顺序标记。 橙色:为网络安全标准要点。 引用斜体:为非本文件内容,个人注解说明。 加粗标记:…...
精准掌控张力动态,重构卷对卷工艺设计
一、MapleSim Web Handling Library仿真和虚拟调试解决方案 在柔性材料加工领域,卷对卷(Roll-to-Roll)工艺的效率与质量直接决定了产品竞争力。如何在高动态生产场景中实现张力稳定、减少断裂风险、优化加工速度,是行业长期面临的…...
怎么使用python进行PostgreSQL 数据库连接?
使用Python连接PostgreSQL数据库 在Python中连接PostgreSQL数据库,最常用的库是psycopg2。以下是详细的使用指南: 安装psycopg2 首先需要安装psycopg2库: pip install psycopg2 # 或者使用二进制版本(安装更快) pi…...
SQL Server权限设置的几种方法
SQL Server 的权限设置是数据库安全管理的核心,正确配置权限可以有效防止数据泄露、误操作和恶意篡改。下面详细介绍 SQL Server 权限设置的方法,涵盖从登录名创建到用户授权的完整流程。 一、权限设置的基本概念 SQL Server 的权限体系主要包括以下几…...
Neo4j(一) - Neo4j安装教程(Windows)
文章目录 前言一、JDK与Neo4j版本对应关系二、JDK11安装及配置1. JDK11下载2. 解压3. 配置环境变量3.1 打开系统属性设置3.2 新建系统环境变量3.3 编辑 PATH 环境变量3.4 验证环境变量是否配置成功 三、Neo4j安装(Windows)1. 下载并解压Neo4j安装包1.1 下…...
idea启用lombok
有lombok的项目在用idea打开的时候会提示启用lombok,但是。。。不小心就落下了...
uniapp婚纱预约小程序
uniapp婚纱预约小程序,这套设计bug很多,是一个半成品,一个客户让我修改,很多问题,页面显示不了,评论不能用,注册不能用,缺少表,最后稍微改一下,但是也有小问题…...
基于OpenCV的SIFT特征匹配指纹识别
文章目录 引言一、概述二、关键代码解析1. SIFT特征提取与匹配2. 指纹身份识别3. 姓名映射 三、使用示例四、技术分析五、完整代码六、总结 引言 指纹识别是生物特征识别技术中最常用的方法之一。本文将介绍如何使用Python和OpenCV实现一个简单的指纹识别系统,该系…...
Vue3 加快页面加载速度 使用CDN外部库的加载 提升页面打开速度 服务器分发
介绍 CDN(内容分发网络)通过全球分布的边缘节点,让用户从最近的服务器获取资源,减少网络延迟,显著提升JS、CSS等静态文件的加载速度。公共库(如Vue、React、Axios)托管在CDN上,减少…...
C++23:ranges::iota、ranges::shift_left和ranges::shift_right详解
文章目录 引言ranges::iota定义与功能使用场景代码示例 ranges::shift_left定义与功能使用场景代码示例 ranges::shift_right定义与功能使用场景代码示例 总结 引言 C23作为C编程语言的一个重要版本,为开发者带来了许多新的特性和改进。其中,ranges::io…...
Spring 框架中适配器模式的五大典型应用场景
Spring 框架中适配器模式的应用场景 在 Spring 框架中,适配器模式(Adapter Pattern)被广泛应用于将不同组件的接口转化为统一接口,从而实现组件间的无缝协作。以下是几个典型的应用场景: 1. HandlerAdapter - MVC 请…...
【Unity】 HTFramework框架(六十五)ScrollList滚动数据列表
更新日期:2025年5月16日。 Github 仓库:https://github.com/SaiTingHu/HTFramework Gitee 仓库:https://gitee.com/SaiTingHu/HTFramework 索引 一、ScrollList滚动数据列表二、使用ScrollList1.快捷创建ScrollList2.ScrollList的属性3.自定义…...
Android SwitchButton 使用详解:一个实际项目的完美实践
Android SwitchButton 使用详解:一个实际项目的完美实践 引言 在最近开发的 Android 项目中,我遇到了一个需要自定义样式开关控件的需求。经过多方比较,最终选择了功能强大且高度可定制的 SwitchButton 控件。本文将基于实际项目中的使用案…...
【C++ 基础数论】质数判断
质数判断 质数:对于所有大于 1 的自然数而言,如果该数除 1 和自身以外没有其它因数 / 约数,则该数被称为为质数,质数也叫素数。 如何判定一个数是否为质数呢? 一个简单的方法是 试除法 : 对于一个数 n&…...
【数据结构】手撕AVL树(万字详解)
目录 AVL树的概念为啥要有AVL树?概念 AVL树节点的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左双旋 AVL树的查找AVL树的验证end AVL树的概念 为啥要有AVL树? 在上一章节的二叉搜索树中,我们在插入节点的操作中。有可能一直往一边插…...
Chrome代理IP配置教程常见方式附问题解答
在网络隐私保护和跨境业务场景中,为浏览器配置代理IP已成为刚需。无论是访问地域限制内容、保障数据安全,还是管理多账号业务,掌握Chrome代理配置技巧都至关重要。本文详解三种主流代理设置方式,助你快速实现精准流量管控。 方式一…...
SpringBoot + Shiro + JWT 实现认证与授权完整方案实现
SpringBoot Shiro JWT 实现认证与授权完整方案 下面博主将详细介绍如何使用 SpringBoot 整合 Shiro 和 JWT 实现安全的认证授权系统,包含核心代码实现和最佳实践。 一、技术栈组成 技术组件- 作用版本要求SpringBoot基础框架2.7.xApache Shiro认证和授权核心1.…...
深入解析VPN技术原理:安全网络的护航者
在当今信息化迅速发展的时代,虚拟私人网络(VPN)技术成为了我们在互联网时代保护隐私和数据安全的重要工具。VPN通过为用户与网络之间建立一条加密的安全通道,确保了通讯的私密性与完整性。本文将深入解析VPN的技术原理、工作机制以…...
OceanBase 的系统变量、配置项和用户变量有何差异
在继续阅读本文之前,大家不妨先思考一下,数据库中“系统变量”、“用户变量”以及“配置项”这三者之间有何不同。如果感到有些模糊,那么本文将是您理清这些概念的好帮手。 很多用户在使用OceanBase数据库中的“配置项”和“系统变量”&#…...
ReinboT:通过强化学习增强机器人视觉-语言操控能力
25年5月来自浙大和西湖大学的论文“ReinboT: Amplifying Robot Visual-Language Manipulation with Reinforcement Learning”。 视觉-语言-动作 (VLA) 模型通过模仿学习在一般机器人决策任务中展现出巨大潜力。然而,训练数据的质量参差不齐通常会限制这些模型的性…...
MySQL联表查询:多表关联与嵌套查询指南
引言 各位数据库爱好者们好!今天我们要挑战MySQL查询技能的高阶关卡——复杂查询 🚀。在真实业务场景中,数据往往分散在多个表中,就像拼图的各个碎片,只有掌握了多表查询的"拼图技巧",才能将它们…...
QBasic 一款古老的编程语言在现代学习中的价值(附程序)
QBasic(Quick Beginner’s All-purpose Symbolic Instruction Code)是微软公司于 1991 年推出的一款简单易学的编程语言,作为BASIC语言的变种,它曾广泛应用于教育领域和初学者编程入门。尽管在当今Python、Java等现代编程语言主导…...
基于Backtrader库的均线策略实现与回测
本文将通过Python语言和强大的Backtrader库,详细介绍如何实现一个基于均线的简单交易策略,并进行历史数据的回测。将一步步构建这个策略,从数据获取、策略定义到回测结果分析,帮助你深入理解并掌握这一过程。 一、环境配置与库安装 1.1 安装必要的Python库 确保你已经安…...
Elasticsearch 分词与字段类型(keyword vs. text)面试题
Elasticsearch 分词与字段类型(keyword vs. text)面试题 🔍 目录 基础概念底层存储查询影响多字段聚合与排序分词器实战排查总结基础概念 💡 问题1:Elasticsearch 中的 keyword 和 text 类型有什么区别? 👉 查看参考答案 对比项keywordtext分词(Analysis)❌ 不进…...
Java 后端给前端传Long值,精度丢失的问题与解决
为什么后端 Long 类型 ID 要转为 String? 在前后端分离的开发中,Java 后端通常使用 Long 类型作为主键 ID(如雪花算法生成的 ID)。但如果直接将 Long 返回给前端,可能会导致前端精度丢失的问题,特别是在 J…...
【C++】 —— 笔试刷题day_29
一、排序子序列 题目解析 一个数组的连续子序列,如果这个子序列是非递增或者非递减的;这个连续的子序列就是排序子序列。 现在给定一个数组,然后然我们判断这个子序列可以划分成多少个排序子序列。 例如:1 2 3 2 2 1 可以划分成 …...
高光谱遥感图像处理之数据分类的fcm算法
基于模糊C均值聚类(FCM)的高光谱遥感图像分类MATLAB实现示例 %% FCM高光谱图像分类示例 clc; clear; close all;%% 数据加载与预处理 % 加载示例数据(此处使用公开数据集Indian Pines的简化版) load(indian_pines.mat); % 包含变…...
衡量 5G 和未来网络的安全性
大家读完觉得有帮助记得关注和点赞!!! 抽象 在当今日益互联和快节奏的数字生态系统中,移动网络(如 5G)和未来几代(如 6G)发挥着关键作用,必须被视为关键基础设施。确保其…...
【Vite】前端开发服务器的配置
定义一些开发服务器的行为和代理规则 服务器的基本配置 server: {host: true, // 监听所有网络地址port: 8081, // 使用8081端口open: true, // 启动时自动打开浏览器cors: true // 启用CORS跨域支持 } 代理配置 proxy: {/api: {target: https://…...
文章记单词 | 第85篇(六级)
一,单词释义 verb /vɜːrb/- n. 动词wave /weɪv/- v. 挥手;波动;挥舞 /n. 波浪;波;挥手add /d/- v. 增加;添加;补充说liberal /ˈlɪbərəl/- adj. 自由的;开明的;慷…...
通过实例讲解螺旋模型
目录 一、螺旋模型的核心概念 二、螺旋模型在电子商城系统开发中的应用示例 第 1 次螺旋:项目启动与风险初探...
(面试)Android各版本新特性
Android 6.0 (Marshmallow, API 23) 运行时权限管理:用户可在应用运行时动态授予或拒绝权限,取代安装时统一授权4。Doze模式与应用待机:优化后台耗电,延长设备续航5。指纹识别支持:原生API支持指纹身份验证。 Android…...
如何有效的开展接口自动化测试?
🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、简介 接口自动化测试是指使用自动化测试工具和脚本对软件系统中的接口进行测试的过程。其目的是在软件开发过程中,通过对接口的自动化测试来提高测…...
当 PyIceberg 和 DuckDB 遇见 AWS S3 Tables:打造 Serverless 数据湖“开源梦幻组合”
引言 在一些大数据分析场景比如电商大数据营销中,我们需要快速分析存储海量用户行为数据(如浏览、加购、下单),以进行用户行为分析,优化营销策略。传统方法依赖 Spark/Presto 集群或 Redshift 查询 S3 上的 Parquet/O…...
泰迪杯特等奖案例深度解析:基于MSER-CNN的商品图片字符检测与识别系统设计
(第四届泰迪杯数据挖掘挑战赛特等奖案例全流程拆解) 一、案例背景与核心挑战 1.1 行业痛点与场景需求 在电商平台中,商品图片常包含促销文字(如“3折起”“限时秒杀”),但部分商家采用隐蔽文字误导消费者(如“起”字极小或位于边角)。传统人工审核效率低(日均处理量…...
开发工具指南
后端运维场用工具 工具文档简介1panel安装指南运维管理面板网盘功能介绍网盘jenkins可以通过1panel 进行安装jpom辅助安装文档后端项目发布工具...
将 Element UI 表格元素导出为 Excel 文件(处理了多级表头和固定列导出的问题)
import { saveAs } from file-saver import XLSX from xlsx /*** 将 Element UI 表格元素导出为 Excel 文件* param {HTMLElement} el - 要导出的 Element UI 表格的 DOM 元素* param {string} filename - 导出的 Excel 文件的文件名(不包含扩展名)*/ ex…...
图像对比度调整(局域拉普拉斯滤波)
一、背景介绍 之前刷对比度相关调整算法,找到效果不错,使用局域拉普拉斯做图像对比度调整,尝试复现和整理了下相关代码。 二、实现流程 1、基本原理 对输入图像进行高斯金字塔拆分,对每层的每个像素都针对性处理,生产…...
【控制波形如何COPY并无痛使用】
控制波形如何COPY并无痛使用 波形分析思路概况记录波形 波形分析 通过逻辑分析仪可以解析到设备的控制波形,在一些对于电机控制类的设备上显得尤为重要。通过分析不同波形,将PWM的波形存储到程序中得以实现,并建立合理的数据结构。 思路概…...