uniapp app 导出excel 表格

news2024/11/17 6:36:00

直接复制运行   

<template>
	<view>
		<button @click="tableToExcel">导出一个表来看</button>
		<view>{{ successTip }}</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				successTip: ''
			}
		},
		methods: {
			uuid() {
				return 'xxx-xxx-xxx'.replace(/[xy]/g, c => {
					var r = Math.random() * 16 | 0,
						v = c == 'x' ? r : (r & 0x3 | 0x8)
					return v.toString(16)
				})
			},

			tableToExcel() {
				// 要导出的json数据
				const jsonData = [{
						name: '科比',
						phone: '123456',
						email: '科比@163.com'
					},
					{
						name: '科比',
						phone: '123456',
						email: '科比@163.com'
					},
					{
						name: '科比',
						phone: '123456',
						email: '科比@163.com'
					},
					{
						name: '科比',
						phone: '123456',
						email: '科比@163.com'
					},
				]
				// 列标题
				let worksheet = 'sht1'
				let str =
					'<tr><td style="text-align: center">姓名</td><td style="text-align: center">电话</td><td style="text-align: center">邮箱</td></tr>'
				// 循环遍历,每行加入tr标签,每个单元格加td标签
				for (let i = 0; i < jsonData.length; i++) {
					str += '<tr>'
					for (let item in jsonData[i]) {
						// 增加\t为了不让表格显示科学计数法或者其他格式
						str += `<td>${jsonData[i][item] + '\t'}</td>`
					}
					str += '</tr>'
				}
				// 下载的表格模板数据

				let template = `<html xmlns:o="urn:schemas-microsoft-com:office:office" 
        xmlns:x="urn:schemas-microsoft-com:office:excel" 
        xmlns="http://www.w3.org/TR/REC-html40">
        <head><!--[if gte mso 9]><xml encoding="UTF-8"><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet>
        <x:Name>${worksheet}</x:Name>
        <x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>
        </x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]-->
        </head><body><table>${str}</table></body></html>`
				// 下载模板
				// #ifdef APP-PLUS
				this.appExportFile(template)
				// #endif
				// 下载模板
				// #ifdef MP-WEIXIN
				this.wxExportFile(template)
				// #endif
			},

			// 导出文件到手机 fileData:要写入到文件的数据,返回参数为文档路径
			appExportFile(fileData, documentName = '项目Excel文件') {
				// PUBLIC_DOCUMENTS: 程序公用文档目录常量
				plus.io.requestFileSystem(plus.io.PUBLIC_DOCUMENTS, fs => {
					let rootObj = fs.root,
						fullPath = rootObj.fullPath
					console.log('开始导出数据********')
					// 创建文件夹
					rootObj.getDirectory(documentName, {
						create: true
					}, dirEntry => {
						// 创建文件,防止重名
						let fileName = 'excel' + this.uuid() + '.xlsx'
						dirEntry.getFile(fileName, {
							create: true
						}, fileEntry => {
							fileEntry.createWriter(writer => {
								writer.onwritestart = res => console.log('正在导出')
								//  /storage/emulated/0指的就是系统路径
								let pathStr = fullPath.replace('/storage/emulated/0', '')
								// 成功导出数据
								writer.onwrite = res => {
									// 文件路径
									let filePath = res.target.fileName
									uni.hideLoading()
									setTimeout(() => {
										console.log('成功导出')
										this.successTip = `文件位置:${filePath}`

										uni.openDocument({
											filePath,
											success: res => console
												.log('打开文档成功'),
											fail: err => console.log(
												err)
										})
									}, 500)
								}
								// 写入内容
								writer.write(fileData)
							}, err => console.log(err.message))
						})
					})
				})
			},

			wxExportFile(template, documentName = '项目Excel文件') {
				const fs = wx.getFileSystemManager()
				// 创建文件名字, 防止重名
				let filePath = wx.env.USER_DATA_PATH + '/' + (documentName + this.uuid()) + '.xls'
				fs.writeFile({
					filePath,
					data: template,
					encoding: 'utf8',
					success: res => {

						wx.openDocument({
							filePath,
							showMenu: true, //是否显示右上角菜单
							success: res => console.log('打开文档成功。文件位置', filePath),
							fail: err => console.log(err)
						})
					},
					fail: err => console.info(err)
				})
			}
		}
	}
</script>

  这里用到小程序和app段的api

wx.getFileSystemManager()
获取全局唯一的文件管理器

返回值
FileSystemManager
 

wx.openDocument 预览文件
wx.openDocument({
							filePath,
						showMenu:true, //是否右上角菜单,这样就可以转发给好友了
							success: res => console.log('打开文档成功。文件位置', filePath),
							fail: err => console.log(err)
						})

uniapp 微信小程序 /APP json数据导出excel文件_uniapp导出excel文件_初遇你时动了情的博客-CSDN博客 

 

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

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

相关文章

【面试高高手】—— SpringBoot(11题)

文章目录 1.什么是SpringBoot?2.为什么需要Spring Boot&#xff1f;3.SpringBoot的特征&#xff1f;4.SpringBoot的两个策略是什么&#xff1f;5.说一下SpringBoot的自动装配流程&#xff1f;6.说下什么是 Bean?7.什么是 CSRF 攻击&#xff1f;如何避免&#xff1f;8. Spring…

python ToastNotifier TypeError got Nonetype

这个错误没什么影响&#xff0c;只是在通知结束后会抛出 如果你实在不爽&#xff0c;办法如下&#xff1a; 找到"<你的python安装路径>\Lib\site-packages\win10toast"&#xff0c;里面应该有__main__.py和__init__.py两个文件&#xff0c;打开__init__.py 找到…

人工智能(AI)在产生新创意方面有多出色?

传统智慧一直不太擅长此道。发现新的创业机会、为未满足的需求提供解决方案&#xff0c;以及为新公司命名都是非结构化的任务&#xff0c;似乎不适合由算法来完成。然而&#xff0c;人工智能的最新进展——特别是像ChatGPT这样的大语言模型的出现——正在挑战这种假定。 我们教…

【ES6知识】Promise 对象

文章目录 1.1 概述1.2 静态方法1.3 实例方法1.4 Promise 拒绝事件 1.1 概述 Promise 对象用于表示一个异步操作的最终完成&#xff08;或失败&#xff09;及其结果值。是异步编程的一种解决方案&#xff08;可以解决回调地狱问题&#xff09;。 一个 Promise 对象代表一个在这…

Python实用技术——爬虫(二):爬虫需要使用的库

一&#xff0c;Requests库 1&#xff0c;主要使用方法&#xff1a; 1&#xff09;get&#xff08;&#xff09;方法&#xff1a; 这个Response对象中包含爬虫返回的内容。 除了request方法是基础方法外&#xff0c;其他都是通过调用request方法来实现的。 所以&#xff0c;我…

[React] React高阶组件(HOC)

文章目录 1.Hoc介绍2.几种包装强化组件的方式2.1 mixin模式2.2 extends继承模式2.3 HOC模式2.4 自定义hooks模式 3.高阶组件产生初衷4.高阶组件使用和编写结构4.1 装饰器模式和函数包裹模式4.2 嵌套HOC 5.两种不同的高阶组件5.1 正向的属性代理5.2 反向的继承 6.如何编写高阶组…

使用 Express 设置 GraphQL

使用 Express 设置 GraphQL 在本文中&#xff0c;我们将探讨如何在 Node.js 中设置 Express.js 和 GraphQL。另外&#xff0c;本文还将分享一些基本技巧&#xff0c;以确保我们的服务器已准备好投入实际使用&#xff01; 什么是 GraphQL GraphQL 是 API 的查询语言&#xff…

网络爬虫——urllib(1)

前言&#x1f36d; ❤️❤️❤️网络爬虫专栏更新中&#xff0c;各位大佬觉得写得不错&#xff0c;支持一下&#xff0c;感谢了&#xff01;❤️❤️❤️ 前篇简单介绍了什么是网络爬虫及相关概念&#xff0c;这篇开始讲解爬虫中的第一个库——urllib。 urllib&#x1f36d; …

Windows安装CMake详细教程(附学习资料)

CMake是一个跨平台的开源构建工具&#xff0c;用于自动化管理C项目的构建过程。本教程旨在向初学者介绍如何在Windows操作系统上安装CMake&#xff0c;并提供详细的步骤指导&#xff0c;帮助您顺利开始使用这个强大的工具。 学习资料在文末~ 步骤1&#xff1a;下载CMake安装程…

SW利用点光源来校核

先要建立坐标系&#xff0c;然后查这个坐标系的绝对坐标 然后删除其他光源&#xff0c;把环境光源降低最小 最后添加点光源&#xff0c;位置在之前查的坐标点

在Windbg中设置断点追踪打开软件远程调试开关的模块

目录 1、Windbg动态调试 2、在Windbg中设置断点 2.1、在函数入口处设置断点 2.2、在函数内部某一行上设置断点 3、设置断点跟踪对打开远程调试开关接口的调用 3.1、编写演示代码 3.2、在Windbg中设置调用SetRemoteDebugOn接口的断点进行跟踪 4、最后 VC常用功能开发汇总…

线上Vue项目访问其他服务器接口(宝塔平台配置解决)

前端本地解决跨域问题非常简单&#xff0c;配置代理即可&#xff0c;线上需要配置nginx&#xff0c;宝塔给我们更简单的配置方式&#xff1a;反向代理。 登录进宝塔页面&#xff0c;选择网站&#xff0c;点击网站名&#xff0c;选择反向代理 点击添加反向代理 注意&#xff…

基于Springboot实现餐厅点餐系统演示【项目源码+论文说明】分享

基于Springboot实现餐厅点餐系统演示 摘要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff…

resources(static与templates)

static "static"目录用于存放静态资源文件&#xff0c;例如HTML、CSS、JavaScript、图像等。 springboot整合了springmvc的拦截功能。拦截了所有的请求。默认放行的资源是&#xff1a;resources/static/ 目录下所有静态资源。&#xff08;不走controller控制器就能…

【开发篇】十一、SpringBoot缓存底层实现技术的切换为Ehcache、Redis、Memcached

文章目录 0、补充&#xff1a;数据淘汰策略1、切换为Ehcache2、切换为Redis3、切换为memcached--安装与启停4、切换为memcached--整合 SpringBoot提供了缓存的统一整合接口&#xff0c;方便缓存技术的开发与管理&#xff1a; GenericJCacheEhcacheHazelcastInfinispanCouchbase…

《视觉 SLAM 十四讲》V2 ——第3讲

关于本笔记的说明&#xff1a; 最好跟着 原书 整理个人笔记&#xff0c;他人笔记仅适合参考部分内容。 ———————— B站链接 高翔博客链接 百度网盘链接&#xff1a;https://pan.baidu.com/s/1VsrueNrdqmzTvh-IlFBr9Q 提取码&#xff1a;vfhe github源码链接V2 《视觉…

OpenCV读取图像时按照BGR的顺序HWC排列,PyTorch按照RGB的顺序CHW排列

OpenCV读取RGB图像 在OpenCV中&#xff0c;读取的图片默认是HWC格式&#xff0c;即按照高度、宽度和通道数的顺序排列图像尺寸的格式。我们看最后一个维度是C&#xff0c;因此最小颗粒度是C。 例如&#xff0c;一张形状为2562563的RGB图像&#xff0c;在OpenCV中读取后的格式…

阿里云服务器方升架构、自研硬件、AliFlash技术创新

阿里云服务器技术创新&#xff1a;服务器方升架构及自研硬件、自研存储硬件AliFlash和阿里云异构计算加速平台&#xff0c;阿里云百科分享阿里云服务器有哪些技术创新&#xff1a; 目录 服务器技术创新 服务器方升架构及自研硬件 自研存储硬件AliFlash 阿里云异构计算加速…

进入k8s下mysql docker容器,设置慢查询开关

服务器账号信息&#xff1a;wps/kingsoft 进入mysql容器&#xff1a; kc exec -ti -n kube-public mysql-0 -- bash 访问数据库&#xff1a; mysql -h10.13.83.171 -uhuangweiheng -phuangweiheng_password; 数据库超管&#xff1a;root/wpsepmysql sudo service mysql r…

QQ农场怀旧版搭建(附带搭建完成示例)

QQ农场搭建 示例均在宝塔面板搭建搭建完成网站,欢迎━(&#xff40;∀)ノ亻!大家种种菜 http://farm.dreamlove.top/如果不出意外应该会一直续费下去,毕竟linux服务器便宜很多~ 所需依赖 mysql 5.5 php 5.4 nginx 1.22下载农场文件并安装好了依赖 下载地址1:https://cloudr…