只需轻轻生龙活虎键,清理冗余
分类:计算机编程

整理文档,搜刮出一个yii2中dropDownList实现二级和三级联动写法的代码,稍微整理精简一下做下分享。

最近同事需要对一份报告进行整理,一共有80个报告约9000多行放在一个txt文件中。虽然每份报告的格式比较类似,但其中部分字段对应的数量依旧会有差别。所以真要靠人工来做,无疑会是一件费时费力的并且是很枯燥的工作。据说如果有了这个程序,可以减少60%的工作量!那么为了我以后的下午茶,自然应该去尝试一下不是么?

这个文章我会更新下去,直到项目重构完毕。

图片 1无论是上班族还是学生党,应该都有被繁多琐碎的文件困扰过的经历吧。" style="width:60%;margin:1rem auto">

 ['index'], 'method' => 'get', ]); ?>  field->dropDownList(Helper::courseCateMap(), ['prompt' => yii::t('backend', 'Please select course cate')]) ?> field->dropDownList(Helper::courseMap, ['prompt' => yii::t('backend', 'Please select first course cate')])?> field->dropDownList(Helper::personMap, ['prompt' => yii::t('backend', 'Please select person')]) ?>  页面嵌套js '.yii::t('backend', 'Please select course').'");//二级显示目录标签 $("#classsearch-person_id").html("'.yii::t('backend', 'Please select person').'");//三级显示目录标签 if  { getCourse;//查询二级目录的方法 getPerson;//查询三级目录的方法 }}); function getCourse{ var href = "'.Url::to.'";//请求的地址 $.ajax({ "type" : "GET", "url" : href, "data" : {cocateId : cocateId,type : "course"},//所需参数和类型 success : function { $("#classsearch-course_id").append;}function getPerson{ var href = "'.Url::to.'";//同上 $.ajax({ "type" : "GET", "url" : href, "data" : {cocateId : cocateId,type : "person"},//所需参数和类型 success : function { $("#classsearch-person_id").append;} ';$this->registerJs;?>

不过既然是费时费力又枯燥的工作,自然就应该交给代码去解决。毕竟,我坚信任何的科学技术就是为了让人类偷懒而存在的。那么就先切入正题,先上GitHub的项目地址。欢迎批评指点。

图片 2

{"type":1,"value":"今天世超想找一个之前下载过的文件,打开下载文件夹直接看懵了。。。

这个是ajax自己声明的控制器:

GitHub项目:report-maker

图片 3

图片 4

 $val) { $_tmp .= "{$val}"; } echo $_tmp; }

项目分析

就问你们怕不怕?嗯?怕不怕

图片、文档、安装程序等各类东西大杂烩,想找个东西跟大海捞针似的。。

Helper.php 封装好的类文件 可以单独建立文件 在配置中引用 :

既然准备要上代码了,作为一个狂热的前端爱好者,自然首选Node.js了。这一个项目主要的目的就是将txt文件中的内容按照一定的规则转化为固定格式的表格并导出为Excel。那么重点就可以分为下面两步了。

开始在公司SVN拿到项目的时候,少了很多文件。我怀疑是路径问题,导致没有传上去,然而这些都是没有关系,我用了的码云!机智。

不止是下载文件夹,很多人常用文件夹都挤满了各色文件。

select('cocate_id,cocate_name')->all(); $_data = ArrayHelper::map, 'cocate_id', 'cocate_name'); return $_data; } //声明查询的方法 二级 public static function courseMap { $condition['cocate_id'] = $cocateId; $_data = Course::find()->select('course_id,course_name')->where; $_data = ArrayHelper::map, 'course_id', 'course_name'); return $_data; } //声明查询的方法 三级 public static function personMap($percateId, $cocateId = 0) { $shopId = Yii::$app->user->identity->shop_id; $condition = []; if  { $condition['shop_id'] = $shopId; } if  { $condition['percate_id'] = $percateId; } if  { $condition['cocate_ids'] = intval; } $_data = Person::find()->select('person_id,person_name')->where; $_data = ArrayHelper::map, 'person_id', 'person_name'); return $_data; } } ?>

Excel文件的生成 txt内容的整理

图片 5

有些人为了省事,连桌面也不放过。。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

1. Excel文件的生成

图片 6

图片 7

Excel文件自然是寻找可以依赖的模块了。找了一圈,发现js-xlsx这一个模块。虽然看起来很复杂,但其实只要提供好表头和内容就可以,其余只是对于内容数据整理的固定模板。

WTF!WTF!WTF!!!

不得不说,随便乱放一时爽,要找文件哭得惨。

相关教程可以参考下面这篇,讲的比较详细所以这里就不多做赘述了。

少年你...经历过绝望吗??????很丑陋到处有机关,处处有陷阱。不过嘛,人都是有感情滴,整天看着他,既然逃避不了,那就把他变美,变和谐!

但整理是不可能整理的。毕竟定期手动整理不仅麻烦,还贼费时间。。。

参考教程:使用node-xlsx进行excel文件的读写

由于没有处理这种情况的经验,我也并没有去搜索项目重构规划方面知识,按照自己构想来吧。

老实说,文件少的时候还有心情整理一下。但随着文件越来越多,要一口气整理掉真的需要勇气。

2. txt内容的整理

对于这种情况,我所做的第一件事是,将项目内的混乱的类 装到工程内的文件夹中(毕竟产品一直在迭代,加功能,没有时间推倒重构),将滚乱的类,装到工程内文件夹中,打开工程能够更清晰,看起来舒服一些,不会一看就懵逼了。(在项目内创建一个整理文件夹,将所有散落的类都放倒整理文件夹中)

要是文件能够自己整理自己就好了。

解决了Excel导出的问题,文档内容的整理便是这个项目最重要的问题了。最终整理的表格样式以及需要抽出的项目内容已经和同事确认过了。那么接下来就是如何整理了一个有着80个长短不一报告的文件了。

图片 8

就像下面这样:

首先来看看文件的格式,整个文件的格式类似于下面这样。

看起来舒服多了

图片 9没错,这一 “ 痒点 ” 已经被机智的开发者们洞悉并解决了。" style="width:60%;margin:1rem auto">

 Policy Name: policyName1 ……省略中间内容…… Policy Type: Standard  ……省略中间内容…… Client/HW/OS/Pri/CIT: Client1 Client/HW/OS/Pri/CIT: Client2 Client/HW/OS/Pri/CIT: Client3 Client/HW/OS/Pri/CIT: Client4 ……省略多个Client Include: /dir1 Include: /dir2 Include: /dir3 ……省略多个Include Schedule: Schedule1 Type: …… Schedule: Schedule2 Type: …… ……省略多个Schedule Policy Name: policyName2 ……省略中间内容…… ……

在工程内做这些并不会改变项目内文件的位置,仅仅是在工程内看起来舒服。

{"type":1,"value":"只需选中需要整理的文件,轻轻的一个拖拽,同类文件就会自动归类到文件夹里。

可以看出,每一个段落是以Policy Name为分界的。那么,利用fs.readFile将完整的文件读取进来,作为一个字符串使用split方法进行切割。具体代码如下:

哎呀,很烦,整理文件夹内的类我都不知道要放在哪里。暂且先不管了吧。

像刚才桌面上杂乱无章的图片,就统统被扔进了「 图片 」文件夹。

fs.readFile(filePath, 'UTF-8', function  throw err; // 对文件读取的数据进行处理,首先用 policyName 进行切割 var policyLists = data.split(config.splitRules.policyName); if (policyLists[0] === 'rn') { policyLists.shift(); };

这一部分是前段时间做的了,一方面因为太乱了,不想搞,一动就报错。另一方面也是自己懒癌晚期,实在是有心无力。

图片 10

然后针对数组中每一个元素根据之前文件中所需要项目,使用正则表达式切提取出所需要的内容,然后将提取出的内容组成所需要的数据结构,具体代码如下。其中schedule项目中内容也并非在一行中,所以也同样使用上面的方法进行切割。而对于其他的项目,则通过正则表达式来进行内容的获取。

下面我有动了工程根目录内的文件,之前是这样的

这样整理完,找起东西来简直 So easy 。

 policyLists.forEach { var policyData = policyFormatter(config.splitRules.policyName   policy); excelData.push;/** * 对每一个policy进行整理 使其符合表格插入的形式 * @param {*} policy * { * policyName: String * client: []] * policyType: String * include: [] * schedule[] * scheduleResidence: String * } * */function policyFormatter { var policyNameMatcher = new RegExp(config.splitRules.policyName   "\r\n"), clientMatcher = new RegExp(config.splitRules.client   "([\s\w\d\?\-\.]*)\r\n", "g"), policyTypeMatcher = new RegExp(config.splitRules.policyType   "\-]*)\r\n"), includeMatcher = new RegExp(config.splitRules.include   "([\s/\w\.\\:_\?=\"\*]*)\r\n", "g"); var scheduleLists = policy.split(config.splitRules.schedule).slice, scheduleFormatLists = [], scheduleResidenceMatcher = new RegExp(config.splitRules.scheduleResidence   "]*)\r\n"); scheduleLists.forEach { var scheduleFormat = config.splitRules.schedule   schedule; scheduleFormatLists.push; // console.log; var results = { policyName: policy.match[1].trim(), client: policy.match ? policy.match.join : '', policyType: policy.match[1].trim(), include: policy.match.join, schedule: scheduleFormatLists.join, scheduleResidence: scheduleLists[0].match(scheduleResidenceMatcher)[1].trim() }; // console.dir; return results;}

图片 11

想要实现这一套骚操作当然是需要提前设置的。不过设置起来非常简单,几分钟就能摆平。

主要逻辑处理完以后,把收集到的内容传给excel处理模块,导出成文件就能解决问题了。

贼鸡儿可怕

花上几分钟设置,以后每次整理文件夹都可以一键完成。感觉是不是还不错?~

不过似乎最终如果能导出为Word,似乎更好。看来还有新的改进空间还留着呢。

图片 12

今天世超就给大家介绍这款简单易用的,能够帮助你进行文件分类管理的软件,DropIt 。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

现在这样了

图片 13

图片 14

这个免费软件咱们可以在它的官网直接下载~

应该是这样的

接下来世超手把手教大家怎么实现「 文档归类 」。

在工程文件夹内动,就需要注意一点了,路径问题。 希望有老铁看到我的文章,指点一番,我第一次搞。

打开软件后会看到一个悬浮窗,右键悬浮窗并在配置文件中点击自定义。

创建一个整理文件夹,(因为不知道这些类是在哪用的,暂时存放一下)将散落在工程根目录的类,全部放到整理文件夹内。run一下,会有提示,文件not found ,在工程内

图片 15

图片 16

因为世超这次教大家的是做文档归类的操作,所以就新增的配置文件就叫「 文档归类 」好了。

找一下刚刚移动了的文件,可以直接打开整理文件夹,有哪些,在Xcode中找到,看这个类是否还能读取到,如果没了 直接delete,按照我的逻辑每一个都要查到,完事之后,将整理文件夹add到工程内,运行。可能会报错,arm64的报错。往上的解决方法是在Build Stttings -->  other linker flags 中添加$(inherited) ,我添加了并没有好,想了想,应该还是文件引入的问题。点开 Build Phases  --> compile Sources 将整理文件夹内的类名搜索一边,发现.m文件都有两个,将除了路径在整理文件内的其他的都删除了,再run,基本差不离了。

图片 17

将项目内无用的文件类删掉。不用的类直接从根目录删除,不要在工程列表内删除,否则垃圾无比多。

新增以后,注意切换到文档归类模式。

这样做好之后,暂时的大体整理方面就这样了,后面改动我会陆续更新,我们App有很稳定的用户,用户量还在增加重构不是一朝一夕的事整不好容易影响App正常运营,我会向一些朋友寻求建议也希望有类似经验的老哥指点

在文档归类模式下,咱们来新增协议。这一步是整个流程中最最最关键的一步~

图片 18

图片 19

解释一下,协议其实就是文件整理的规则。

这个协议具体怎么设置呢?

举个栗子,世超想要一键执行这样的操作:将所有的图片都放入名为图片的文件夹。

那么,首先我们就把需要处理的文件后缀写到规则里面,比如:*.jpg;*.png 等。

DropIt 会根据这一标准来筛选出你想要的文件。

软件中提供了大家常用的规则,我们也可以直接选取。

图片 20

接下来选择希望进行的操作,咱们选择:移动。

最后选择整理完成后放入的文件夹,世超一般喜欢使用 %ParentDir% 这一文件夹路径,选好这个文件夹路径以后再加上 /「你想生成的文件夹名称」就 OK 。

可以看到,世超写入了:%ParentDir%图片 。

图片 21

搞定,一个完整的协议设置好了。

执行该命令后,系统会创建一个 「 图片 」文件夹,并且把所有 .jpg 、.png 后缀的文件给丢到这个文件夹中。

以此类推,咱们再建立几条规则,文档、压缩包等各类文件咱们都得囊括。

图片 22

还有一些文件可能你并不想处理、归类掉。所以还要有一条忽略规则,把没有包括在这些规则内的给忽略掉~

图片 23

到这里设置已经全部完成,可以去一键整理归纳文件了。

接下来的内容是额外的扩展。

前面世超提到的是粗犷型整理,而讲究细节的差友可以通过软件中多样的规则、变量,对文件进行精细化分类。

比如图片可以按照图片属性,如图片尺寸等进行归类。

利用筛选器,咱们还能把正文中带有同一关键词的文档放入同一文件夹

图片 24不仅仅是文件,文件夹咱们也可以整理" style="width:60%;margin:1rem auto">

图片 25

{"type":1,"value":"DropIt 可以实现的文件整理姿势很多,世超就说到这,感兴趣的小伙伴自己探索。

老实说,这个软件世超体验下来觉得还挺好用的,唯一让人难受的一点,就是软件的中文翻译非常不直观,给大家增加了一丢丢上手门槛。

不过大家根据世超的流程以及软件的具体说明,操作一次以后肯定能上手的,不用担心~

希望大家都能获得,一键整理文件的快感~

“ 用完桌面干净的鸭批!”

{"type":2,"value":"

本文由澳门新葡8455手机版发布于计算机编程,转载请注明出处:只需轻轻生龙活虎键,清理冗余

上一篇:php常用日期时间函数实例小结_php技巧_脚本之家, 下一篇:没有了
猜你喜欢
热门排行
精彩图文