uniapp - 微信小程序JSON数据导出表格(XLSX)

这篇具有很好参考价值的文章主要介绍了uniapp - 微信小程序JSON数据导出表格(XLSX)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

uniapp-微信小程序导出表格(XLSX)

这篇文章苦于,后端没有提供下载接口,前端的小伙伴自己要处理Json数据的情况下

用到了,由Sheet.js出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,用于多种电子表格格式的解析器和编写器。

这里只说明xlsx导出 其他导出,自行测试,sheet.js占用空间大,最好还是让后端提供接口!

ps:只做了微信小程序测试,其他平台自测!文章来源地址https://www.toymoban.com/news/detail-567300.html

<template>
	<view><button @click="exportClick()">导出</button></view>
</template>

<script>
import * as XLSX from '@/utils/xlsx.core.min.js' //xlsxjs文件路径
export default {
	data() {
		return {}
	},
	mounted() {
		console.log(XLSX)
	},
	methods: {
		/**
		 * 导出事件
		 */
		exportClick() {
			const header = ['date', 'defaultType', 'device']
			const headerName = { date: '相识日期', defaultType: '类型', device: '姓名' }
			const ExcelData = [{ date: '2022-02-02', defaultType: '御姐', device: '学姐' }, { date: '2022-02-03', defaultType: '萝莉', device: '学妹' }]
			this.json2Excel(ExcelData, header, headerName, '海王表')
		},
		/**
		 * json转化xlsx
		 * @param {Object} data 数据
		 * @param {Object} header header为数据源属性名
		 * @param {Object} headerName 表头文案
		 * @param {Object} fileName 文件名 ps:这里我写死了 可自行修改
		 */
		json2Excel(data, header, headerName, fileName) {
			let wopts = {
				bookType: 'xlsx',
				bookSST: false,
				type: 'binary',
			}
			let workBook = {
				SheetNames: ['Sheet1'],
				Sheets: {},
				Props: {},
			}
			const newData = [headerName, ...data]
			// 1.XLSX.utils.json_to_sheet(data)接受一个对象数组并返回一个基于对象关键字自动生成的“标题”的工作表
			//默认的列顺序由使用Object.keys的字段的第一次出现确定
			// 2.将数据放入对象workBook的Sheets中等待输出
			//加了一句skipHeader:true,这样就会忽略原来的表头
			workBook.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(newData, { header: header, skipHeader: true })
			// 3.XLSX.write()开始编写ExceL表格
			// 4.changeData()将数据处理成需要的输出的格式
			console.log(this.changeData(XLSX.write(workBook, wopts)))
			let time = new Date().getTime()
			const StrData = this.changeData(XLSX.write(workBook, wopts))
			const fs = wx.getFileSystemManager() //获取全局唯一的文件管理器
			fs.writeFile({
				filePath: wx.env.USER_DATA_PATH + `/海王表${time}.xlsx`, // wx.env.USER_DATA_PATH 指定临时文件存入的路径,后面字符串自定义
				data: StrData,
				encoding: 'binary', //二进制流文件必须是 binary
				success(res) {
					uni.hideLoading()
					wx.openDocument({
						// 打开文档
						filePath: wx.env.USER_DATA_PATH + `/海王表${time}.xlsx`, //拿上面存入的文件路径
						showMenu: true, // 显示右上角菜单
						success: function(res) {},
						fail: function() {
							uni.showToast({
								title: `打开失败`,
								icon: 'error',
								duration: 2000,
							})
						},
					})
				},
			})
		},
		/**
		 * 将数据处理成需要的输出的格式
		 * @param {Object} s XLSX输入
		 */
		changeData(s) {
			//如果存在ArrayBuffer对象(es6)最好采用该对象
			if (typeof ArrayBuffer !== 'undefined') {
				//1.创建一个字节长度为s.length的内存区域
				let buf = new ArrayBuffer(s.length)
				//2.创建一个指向buf的Unit8视图,开始于字节0,直到缓冲区的末尾
				let view = new Uint8Array(buf)
				//3.返回指定位置的字符的Unicode编码
				for (let i = 0; i != s.length; ++i) {
					view[i] = s.charCodeAt(i) & 0xff
				}
				return buf
			} else {
				let buf = new Array(s.length)
				for (let i = 0; i != s.length; ++i) {
					buf[i] = s.charCodeAt(i) & 0xff
				}
				return buf
			}
		},
	},
}
</script>

到了这里,关于uniapp - 微信小程序JSON数据导出表格(XLSX)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • uniapp微信小程序系列(2)pages.json实用配置详解

    本篇主要介绍其中几个实用的配置: 1. 配置应用级别样式、tabBar样式 2. 配置前端页面路由、分包路由 3. 配置easycom全局组件(组件无需import引入直接使用) 创建一个包含首页、我的两个tabBar模块的应用布局,配置参数如下: 详细配置功能,请参考配置后的注释 以下配置中

    2023年04月08日
    浏览(66)
  • 前端基于XLSX实现数据导出到Excel表格,以及提示“文件已经被损坏,无法打开”的解决方法

    一、vue实现导出excel 1、前端实现 xlsx是一个用于读取、解析和写入Excel文件的JavaScript库。它提供了一系列的API来处理Excel文件。使用该库,你可以将数据转换为Excel文件并下载到本地。这种方法适用于在前端直接生成Excel文件的场景。 更多介绍可参见官网 1、安装xlsx依赖 2、引

    2024年01月23日
    浏览(77)
  • 关于UniApp启动到微信小程序工具提示找不到app.json

    第一种情况 在  uni-app  开发中使用  vue-cli-plugin-uni  插件创建项目时,如果出现找不到  app.json  的错误,可能是以下原因导致的: 项目根目录下缺少  pages  和  globalStyle  目录。 app.json  文件中配置的  pages  和  globalStyle  字段对应的目录必须存在,如果不存在或者目录

    2024年02月12日
    浏览(59)
  • vue3前端excel导出;组件表格,自定义表格导出;Vue3 + xlsx + xlsx-style

    当画面有自定义的表格或者样式过于复杂的表格时,导出功能可以由前端实现 1. 使用的插件 : sheet.js-xlsx 文档地址:https://docs.sheetjs.com/ 中文地址:https://geekdaxue.co/read/SheetJS-docs-zh/README.md xlsx-style:https://www.npmjs.com/package/xlsx-style 2. 安装引用 安装插件-vue3 引用插件 3. 组件表格

    2024年04月26日
    浏览(38)
  • uniapp项目(微信小程序)配置miniprogramRoot,解决报错未找到app.json、未找到sitemap.json等问题

    前段时间有粉丝私信,说自己的微信小程序在开发者工具中报错:“在项目根目录未找到app.json”,如图: 我以为这是他个人的问题,就直接说了解决方案,并建议用uniapp之类的框架开发,更关注业务,结果周六日我用最新版hbuilder创建了vue3项目,部署的时候,报了同样的错

    2024年02月11日
    浏览(43)
  • uniapp使用微信开发工具打开微信小程序运行[ app.json 文件内容错误] app.json: 在项目根目录未找到 app.json

    这是 uniapp 项目 还未转成微信小程序 需要转换一下     重点:   首先一定要有 unpackage文件夹   如果没有的需要到HBuilder X 编译一下 编译完,可以看到如下目录既可以了

    2024年02月07日
    浏览(50)
  • 前端导出表格 修改样式(xlsx-style)用法

            xlsx-style 修改样式的机制  就是选中哪一行,那一列或者哪一个  然后去修改  比如表格最左上角的一个格子 坐标是 (0, 0) 下标  也可以叫做  A1 选中之后   可以修改其样式  1. 下载依赖   首先下载依赖到项目 2. 引入到项目 3. 创建导出表格         为什么

    2024年02月13日
    浏览(48)
  • 微信小程序中下载xlsx文件

    var storeSessionKey = uni.getStorageSync(\\\"storeSessionKey\\\");                 var that = this;                 uni.request({                     url: that.$api + \\\'/openapi/storeAdmin/exportSalesData?activityId=\\\' + that.params                         .activityId, // 替换为服务器端的文件下载接口

    2024年02月06日
    浏览(40)
  • 微信小程序---表格的制作并展示云数据库中的数据

    微信小程序并没有表格组件,可能是官方考虑到,在前端开发中,表格的嵌套性太多,用DIV代码会比较简洁就没有实现吧。没有现成的组件可以使用,针对这个问题,目前有两种解决方案: 1)内嵌 h5页面,(毕竟 h5 的 table组件 众多,但是各个参数都需要配置,比较麻烦)

    2024年02月16日
    浏览(42)
  • 微信小程序:表格中更改输入框的值,实时获取表格全部数据,点击按钮更改数据库指定项数据

    样例: 样式展示 数据库中原始第一条数据  修改表格第一行的数量: 数据库结果     核心代码 wxml ①wx:for:执行循环将数组数据展示出来 ②在某一单元格加上input样式 ③在input中绑定:文本框改变事件,并且绑定data-index便于知道改变的具体是哪一行的数据 wxss js ①变更in

    2024年02月16日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包