微信小程序有个限制,不能用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数据相关推荐

  1. 微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss)

    微信小程序学习2:开发工具快速创建页面(pages)的四个文件(.js,.json,.wxml, .wxss) [1]首先在pages文件夹下创建一个页面文件夹,比如我打算创建个人中心,我创建一个ho ...

  2. 微信小程序云开发——常用功能2:操作云数据库一键批量导入数据(导入json文件)

    微信小程序云开发--常用功能2:操作云数据库一键批量导入数据(导入json文件) 今天我们要添加100条数据.下面的过程是先创建一条记录,然后导出这条数据看json文件中是如何编辑字段的,然后仿照这个 ...

  3. 微信小程序本地图片在开发工具显示手机预览不显示

    微信小程序在设置背景图片时,使用本地路径,手机预览无法显示. 首先检查图片的路径,是否有中文,都没有问题的时候,看插入背景图片格式采用background-image: 即: <view cla ...

  4. 注册微信小程序下载并使用开发者工具

    微信小程序 开发小程序的第一步,你需要拥有一个小程序帐号,通过这个帐号你就可以管理你的小程序. 申请帐号 进入小程序注册页 根据指引填写信息和提交相应的资料,就可以拥有自己的小程序帐号. 在这个小程序 ...

  5. 微信小程序复制粘贴功能源码

    微信小程序点击复制源码 <view class='center_name_copy ' bindtap='copyBtn'>点击复制 </view> </view> ...

  6. 小程序转义html标签,wxDiscode-微信小程序特殊字符转义符转化工具类

    问题 在大部分html或者其它富文本在保存到后台中,为了安全起见需要将一些特殊字符进行转义 但是,请求回来的信息中包涵着这些转义过后的字符,而微信小程序是不能够直接进行反转义成为html特殊字符,所以 ...

  7. 微信小程序二维码生成工具,后端二维码生成工具类。

    微信小程序开发二维码生成工具类 前言 业务背景 设计思路 具体实现 接下来我们进行工具的改造 前言 或许这是你搜寻的第n篇文章来解决你项目中的问题,虽然我不能去替你完全适配你的业务需求,但是我可以给你 ...

  8. 微信小程序获取客户端IP地址,HTTPS接口(ts\js)

    微信小程序获取用户IP地址,HTTPS接口 很简单实用的ip地址接口, 只返回当前ip 接口返回内容格式为: {"ip":"27.211.239.98"} // ...

  9. 微信小程序----map组件实现(获取定位城市天气或者指定城市天气数据)

    效果图 实现原理 采用高德地图微信小程序开发API(getWeather),如果 city 属性的值为空(或者没有city属性),默认返回定位位置的天气数据:如果 city 不为空,则返回 city ...

  10. php小程序的wxparse.js是什么,微信小程序解析html代码(wxParse工具)

    百度网盘:https://pan.baidu.com/s/1LYT7jDedUo428l3BidDQdQ 提取码: q3t3 使用步骤: 1.将下载下来的插件文件夹复制到我们的项目根目录下(其中emo ...

最新文章

  1. ios程序连接真机调试
  2. 如何快速分辨一个男人是不是程序员
  3. Python自动化一--接口测试基础知识,jmeter操作介绍
  4. 基于多线程队列简单实现mq
  5. sqlite 导入 mysql_SQLite 数据库的一些基本操作
  6. visual studio 2015提示IE10未安装
  7. 安卓学习笔记31:使用自定义视图绘制文本、图形与图像
  8. 桌面虚拟化之本地模式(离线模式)大比拼
  9. 这些大学,推迟返校!
  10. 中国省市地图JSON数据下载
  11. 27学java能找到工作吗_今年27,想自学Java,转行程序员,请问可行吗?
  12. 苹果CMS自动定时采集教程
  13. STM32L0外接32768HZ晶振应该接多大的负载电容才合适
  14. 【小家java】Java中主线程(父线程)与子线程的通信和联系
  15. 全球及中国军用海岸雷达行业研究及十四五规划分析报告
  16. Kalman滤波在温度测量中的应用(含MATLAB仿真)
  17. 八个典型的大数据应用案例
  18. Kotlin上的反应式流-SharedFlow和StateFlow
  19. 瀚高数据库故障诊断指导方案
  20. Java 微信支付接口(统一下单,异步回调,订单退款,取消订单)

热门文章

  1. idea mac xml注释快捷键
  2. Arduino开发板使用DS3231实时时钟模块的方法
  3. 离线网页制作器(beta1.0)
  4. 穿越回二年级讲CPU工作原理。
  5. 行政区村界线_中国各省界线是如何形成的?古代行政区划界原则
  6. 深入理解JVM虚拟机读书笔记——运行时数据区
  7. 一字之差——手机中的“拼”音输入法和“注”音输入法
  8. MyBatis的下载
  9. java的Jaas授权与鉴权
  10. python 有限域函数库_有限域GF(2^8)内乘法代码实现以及原理