微信小程序复制就好-JS工具eval5,用JS替换VBA处理Excel数据
微信小程序有个限制,不能用eval()函数或者new function函数。就是动态执行代码不行。网上搜了一下有个eval5,作为替换
具体查看:
eval5: 基于 TypeScript 编写的 JavaScript 解释器,支持完整 ES5 语法
小程序eval/Function终极替代方案:eval5 | 微信开放社区--这里有小程序版本和案例
--本人基于eval5,写了个复制就是结果的工具。(微信小程序名字,复制就好)
需求:Excel处理数据有缺陷,特别是公示不够多,字符串切分比较麻烦。比如一个 123abc甲乙123de;这样一个包含数字和字符的,中文的,要提取数字,提取字母,相对而言比较累。
解决方案:用JS公式来解决。
可编程的js轻量解决工具就来了,借鉴小程序的复制功能(输入),粘贴功能(输出)就可以方便获取输入数据(复制),处理数据后,输出(粘贴)。
对于普通用户来说,就是复制粘贴等于完成。对于会编程的,还可以修改公式,自己写公式来解决个性化的需求。
下面已经编辑了以下公式:去除字母,去除数字,保留字母,保留数字等公式,后续个性化的需求可以直接处理。比如每次都要替换的,那么写个替换数组,每次都要删除的,写个删除数组。
总结以下 数据处理的基本步骤
1、删除,把不要的信息删除掉
2、替换,把数据标准化,比如有人输入i,其实想输入1,有人输入一,其实就是1;
3、分割处理,字符可以一个一个的处理,判断;
下面是一个案例,用于处理微信接龙的数据,有个高手用excel写了个插件;
开发一个社区团购微信接龙报表自动生成的Excel插件 - yycoding
我认为可以用一些更加轻量的工具处理,当然本身来说用群报数、接龙助手等这种小程序能更好的收集统计信息。
我这里用这个做案例的意思就是,给你一堆有规律但是也有错误的数据,如何能够快速整理并把它结构化;然后导入到excel里边做二次加工,excel的数据透视图还是不错的,展现加打印,自己写一个看起来难度很大。
代码如下:是js写的,可以在小程序中用,let app=this
var result =['ok']let copyStr=app.data.copyStrlet outstr='序号;房号;产品;数量;单价;金额'let colData=[]let value=''let vline=0;let louno='';let lno='';let n1=0let str1='';let num1='';let del=['1号','1-','份','包','*',',','1一','盒','袋',',','。',';']let rp1=['i','I','l','一','二']let rp2=['1','1','1','1','2']let rowData0=copyStr.split("\r\n")for(let i=0;i<del.length;i++){copyStr=replaceall(copyStr,del[i],'')}for(let i=0;i<rp1.length;i++){copyStr=replaceall(copyStr,rp1[i],rp2[i])}let rowData=copyStr.split("\r\n")if(rowData[rowData.length-1]==""){rowData.pop()}console.log(rowData)for(let i=0;i<rowData.length;i++){outstr=outstr+'\r\n'+'\r\n'+rowData0[i]value=rowData[i]n1=value.indexOf('.');vline=value.slice(0,n1);//序号value=value.slice(n1+1);console.log(value)let del2=['先生','女士','小姐']//去掉x先生等,3个字符for(let m=0;m<del2.length;m++){if(value.indexOf(del2[m])!==-1){n1=value.indexOf(del2[m])if(n1-1>0||!isNum(value.charAt(n1-1))){value=replaceall(value,value.charAt(n1-1)+del2[m],'')}}}for(let j=0;j<value.length;j++){//获取房间号lno='';if(!isNum(value.charAt(j))){ if(louno!==''){value=value.slice(j); lno=louno;console.log(value+'aaa'+lno)louno='';break;}}else{louno=louno+''+value.charAt(j);}}for(let j=0;j<value.length;j++){if(!isNum(value.charAt(j))){ if(num1!==''){outstr=outstr+'\r\n'+vline+';'+lno+';'+str1.trim()+';'+num1; str1='';}str1=str1+value.charAt(j);num1='';}else{num1=num1+''+value.charAt(j);}// console.log(str1+'aa'+num1)if(j==value.length-1){outstr=outstr+'\r\n'+vline+';'+lno+';'+str1.trim()+';'+num1;num1='';str1='';}}}console.log(outstr)app.data.outStr=outstr;function replaceall(str, substr, newstr) {var p = -1;var s = 0; while((p = str.indexOf(substr, s)) > -1) {s = p + newstr.length;str = str.replace(substr, newstr);}return str;};function isNum(val){var regPos = /^[0-9]+.?[0-9]*/; if(regPos.test(val)){return true;}else{return false;} };var idx = 1;var timer = setInterval(function(){app.setData({result: result.join(','),idx: idx++});if(idx > 10) {clearInterval(timer);idx = 1;app.setData({isRunning: false});}
}, 200);
result;
复制详细信息里边的数据,点运行,粘贴到excel就是如下的数据
数据结构是 标题行+空格行+原数据行+有结构数据行(可能多行)+空格行
因为最终还是要核对一下数据,毕竟是不规则的数据,程序可能处理不完整
WPS的分列功能用一下。
如果没有问题,把不要行都删除
序号 | 房号 | 产品 | 数量 | 单价 | 金额 |
1 | 904 | 蔬菜 | 1 | ||
2 | 1002 | 牛肉酱 | 1 | ||
2 | 1002 | 白糖 | 1 | ||
2 | 1002 | 鸡蛋 | 1 | ||
3 | 1004 | 白糖 | 1 | ||
3 | 1004 | 牛肉酱 | 1 | ||
3 | 1004 | 盐 | 1 | ||
4 | 503 | 蔬菜 | 1 |
然后用vlookup获取一下单价,金额=单价*数量
序号 | 房号 | 产品 | 数量 | 单价 | 金额 |
1 | 904 | 蔬菜 | 1 | 2 | 2 |
2 | 1002 | 牛肉酱 | 1 | 10 | 10 |
2 | 1002 | 白糖 | 1 | 1 | 1 |
2 | 1002 | 鸡蛋 | 1 | 4 | 4 |
3 | 1004 | 白糖 | 1 | 1 | 1 |
3 | 1004 | 牛肉酱 | 1 | 20 | 20 |
3 | 1004 | 盐 | 1 | 1 | 1 |
4 | 503 | 蔬菜 | 1 | 2 | 2 |
数据透视图
求和项:数量 | 产品 | |||||
房号 | 白糖 | 鸡蛋 | 牛肉酱 | 蔬菜 | 盐 | 总计 |
503 | 1 | 1 | ||||
904 | 1 | 1 | ||||
1002 | 1 | 1 | 1 | 3 | ||
1004 | 1 | 1 | 1 | 3 | ||
总计 | 2 | 1 | 2 | 2 | 1 | 8 |
求和项:金额 | 产品 | |||||
房号 | 白糖 | 鸡蛋 | 牛肉酱 | 蔬菜 | 盐 | 总计 |
503 | 2 | 2 | ||||
904 | 2 | 2 | ||||
1002 | 1 | 4 | 10 | 15 | ||
1004 | 1 | 20 | 1 | 22 | ||
总计 | 2 | 4 | 30 | 4 | 1 | 41 |
微信小程序复制就好-JS工具eval5,用JS替换VBA处理Excel数据相关推荐
- 微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss)
微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss) [1]首先在pages文件夹下创建一个页面文件夹,比如我打算创建个人中心,我创建一个ho ...
- 微信小程序云开发——常用功能2:操作云数据库一键批量导入数据(导入json文件)
微信小程序云开发--常用功能2:操作云数据库一键批量导入数据(导入json文件) 今天我们要添加100条数据.下面的过程是先创建一条记录,然后导出这条数据看json文件中是如何编辑字段的,然后仿照这个 ...
- 微信小程序本地图片在开发工具显示手机预览不显示
微信小程序在设置背景图片时,使用本地路径,手机预览无法显示. 首先检查图片的路径,是否有中文,都没有问题的时候,看插入背景图片格式采用background-image: 即: <view cla ...
- 注册微信小程序下载并使用开发者工具
微信小程序 开发小程序的第一步,你需要拥有一个小程序帐号,通过这个帐号你就可以管理你的小程序. 申请帐号 进入小程序注册页 根据指引填写信息和提交相应的资料,就可以拥有自己的小程序帐号. 在这个小程序 ...
- 微信小程序复制粘贴功能源码
微信小程序点击复制源码 <view class='center_name_copy ' bindtap='copyBtn'>点击复制 </view> </view> ...
- 小程序转义html标签,wxDiscode-微信小程序特殊字符转义符转化工具类
问题 在大部分html或者其它富文本在保存到后台中,为了安全起见需要将一些特殊字符进行转义 但是,请求回来的信息中包涵着这些转义过后的字符,而微信小程序是不能够直接进行反转义成为html特殊字符,所以 ...
- 微信小程序二维码生成工具,后端二维码生成工具类。
微信小程序开发二维码生成工具类 前言 业务背景 设计思路 具体实现 接下来我们进行工具的改造 前言 或许这是你搜寻的第n篇文章来解决你项目中的问题,虽然我不能去替你完全适配你的业务需求,但是我可以给你 ...
- 微信小程序获取客户端IP地址,HTTPS接口(ts\js)
微信小程序获取用户IP地址,HTTPS接口 很简单实用的ip地址接口, 只返回当前ip 接口返回内容格式为: {"ip":"27.211.239.98"} // ...
- 微信小程序----map组件实现(获取定位城市天气或者指定城市天气数据)
效果图 实现原理 采用高德地图微信小程序开发API(getWeather),如果 city 属性的值为空(或者没有city属性),默认返回定位位置的天气数据:如果 city 不为空,则返回 city ...
- php小程序的wxparse.js是什么,微信小程序解析html代码(wxParse工具)
百度网盘:https://pan.baidu.com/s/1LYT7jDedUo428l3BidDQdQ 提取码: q3t3 使用步骤: 1.将下载下来的插件文件夹复制到我们的项目根目录下(其中emo ...
最新文章
- ios程序连接真机调试
- 如何快速分辨一个男人是不是程序员
- Python自动化一--接口测试基础知识,jmeter操作介绍
- 基于多线程队列简单实现mq
- sqlite 导入 mysql_SQLite 数据库的一些基本操作
- visual studio 2015提示IE10未安装
- 安卓学习笔记31:使用自定义视图绘制文本、图形与图像
- 桌面虚拟化之本地模式(离线模式)大比拼
- 这些大学,推迟返校!
- 中国省市地图JSON数据下载
- 27学java能找到工作吗_今年27,想自学Java,转行程序员,请问可行吗?
- 苹果CMS自动定时采集教程
- STM32L0外接32768HZ晶振应该接多大的负载电容才合适
- 【小家java】Java中主线程(父线程)与子线程的通信和联系
- 全球及中国军用海岸雷达行业研究及十四五规划分析报告
- Kalman滤波在温度测量中的应用(含MATLAB仿真)
- 八个典型的大数据应用案例
- Kotlin上的反应式流-SharedFlow和StateFlow
- 瀚高数据库故障诊断指导方案
- Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)