从两张Excel表所想到的

前几日,客服妹子发过来几张表,让我给她做下匹配,然后做了,想了,便有了这篇博文,不由感慨,看似简简单单的两张Excel表其实藏着好多东西,记叙如下,与君共勉。

最初的需求:两张表,一张学生信息表,一张学生成绩表,通过准考证号将之关联起来使之完整。

完成需求的四种方法:

第一种方法,通过Navicat for MySQL将两张表导入到mysql中,然后用left join关联,再做导出,方法可行,最后放弃。

第二种方法 ,使用Excel的vlookup函数,由于本人对Excel不熟,未用,但旁边的同事用了,方法可行,但毕竟是手工操作,能不能保证不遗漏数据,存疑。

第三种方法,使用Excel的microsoft query 工具,使用sql语法关联数据,可行,效率太低,放弃。

第四钟方法,coding,做个小程序,匹配数据,这种方法正是现在采用的方式,实现截图如下:

思考问题:

1.为什么一个任务用了四种方法?

答:需求,在需求之初只是两张Excel表,但过后,数据暴涨,变成了给十几个城市的考生做数据匹配,而且通过了解,这种数据对比其实是一项经常性的重复工作,且数据的来源并不是由公司同事录入,数据的格式比较混乱,如信息表里字段叫“姓名”,成绩表了成了“考生姓名”,虽然是同一个东西,但按姓名匹配时,必定要修改字段名称,Excel表格一多,上述的1,2,3种方法效率堪虞,而自己coding,判断字段的时候加个同义词的功能,就能解决,以此得到第一个教训:无论是客户还是同事,面对每一个任务都必须仔细聆听,反复确认,很多人会以为是给同事干活,人家会包容你,但其实是给自己偷懒找个借口,最后偷懒不成,走了弯路,还是自己遭罪。确认需求时,如数据量,任务频率,完成任务时间等等都是很重要的信息。

2.怎么将一个小程序做的专业,为什么要做到专业?[自个儿琢磨的结果,请大神多指教]

答:作为技术,专业与严谨就是立身之本,古语说,不扫一室何以扫天下,一个小程序都不能追求专业,如何指望能做大程序,在这个小程序中,我以三点来说专业:第一,就是刚刚说的字段同义词,很多问题,只要多想一步,就能改变很多;第二,我本来打算使用odbc去连接Excel,但考虑数据格式的不确定性,最后换用NPOI读取数据,虽然工作量增加了,但程序的可用性更好,比如在读取Excel数据的时候,我会把基准表的style一并读取,匹配导出后将样式在还原过去,当同事拿到结果的时候,都不用调整表格的style,虽是细节,但每一个细节都很重要;第三,在匹配的时候,我是在循环里面调用DataTable的select方法,但后面一查,这种方法效率很低,引用他人专业的批语如下:

在数据填充完成之后,设置主键要比在填充数据之前设置主键效率要高的多。设置主键之后,比较了在有无主键的情况下,DataTable.Select 方法在仅对主键字段进行过滤时的性能,结果表明,在仅对主键进行检索时,设置主键之后使用DataTable.Select 方法会比没有主键的情况下的检索速度会快非常多。在相同条件下,如果仅需要查找某一条记录,使用DataTable.Rows.Find会比DataTable.Select快很多。在某些需要频繁操作DataTable查询的时候,要避免在循环体内调用DataTable.Select方法,采用将DataTable转换为等价的Dictionary结构,能够有效解决由于键值重复导致不能创建主键的问题,并且Dicitonary的采用哈希表的方式查找能够极大地提高查询效率。

后来与需求向比对,每一个Excel表的数据量不超过1000条,对于程序性能的影响可忽略不计,也就没有更改程序,但对于程序性能的考虑应成为每一个程序员coding时的下意识考虑,因为这就是素养,必须牢记在心。

3.程序之外的思考。

答:在小程序写好后,由于数据的来源太乱,很多考生找不到相关信息,客服的妹子说最好能用准考证号+身份证号作双关联,思考过之后,程序不动,因为到了这一阶段,准考证号与身份证号都是考生的唯一依据,如果要做双关联,就表示之前的流程出了差错,在此时,你不应是个程序员,而是与客服妹子一起找出问题的原因,向公司提出建议,改善流程,杜绝此类问题的发生,这虽是超出了工作岗位的范畴,但你心里必须清明,什么事是防微杜渐,什么事是敷衍塞责,做哪一种人,决定了你的发展。

4.更多的思考,怎样做个好员工?

1.给公司带来利益
2.不断思考,优化工作流程,给公司文化与流程结构带来积极的影响
3.构建知识库给公司知识库带来积极的影响
4.分享,给公司同事带来利益
5.做好上述的每一步,自然也会给自己带来利益与发展

昨天看到一段话,深有感触,与诸君共勉:

只简单完成老板交代的任务永远只有最多60分,切实明白了老板想要的,并完成了业务需求的算70分,充分挖掘老板想要的能为团队或老板分忧的才能到80分。

从两张Excel表所想到的的更多相关文章

  1. 两张Excel表比较,两个for循环比较优化使用Contains

    将一个Excel表中的sheet中的一列导出到List<string>,用一个for循环循环另一张表中的数据,看是否在第一张表中的Contains中

  2. 对比两张Excel表数据差异时,遇到数据雷响不一致

    表A中为文本(有绿色三角符号),表B为数字(没有三角符号),而自动对比时会检查数据类型,怎么办? 执行对比: 得到结果: 这时候要解决类型问题(即绿色三角形标志) 点击灰色区域全选 哪个黄色感叹号可以 ...

  3. vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表

    vlookup函数基本使用--如何将两个Excel表中的数据匹配:excel表中vlookup函数使用方法将一表引到另一表 一.将几个学生的籍贯匹配出来‘ 二.使用查找与引用函数 vlookup 三. ...

  4. 取两张mysql表中分别两个字段相同的值

    看起来有点绕口吧,举个例子吧,如图 两张表,字段名也不同字段gs 和另一张表 gsmc  的有些值是相同的 我们要做的就是把这个相同的值找出来 会写这个sql语句就可以 只写重点 $sql2 = &q ...

  5. Mysql多表查询(两张独立表,一张关系表)

    一.数据库设计 1.三个数据表长这样   其中user表记录用户信息,cat主要记录男女性别,mete表是用户id和性别id的对应关系   2.具体数据如下   二.查询目标 查询出所有性别为“男”的 ...

  6. VBA二次学习笔记(2)——两个Excel表内容比较

    说明(2018-9-3 22:38:58): 1. 就是之前问同事要来的作业,有两个格式一样的Excel文件,一个是正确答案,一个是员工作答的.通过代码将两个文件进行比对,把不同之处列出来. 正文: ...

  7. 记录两张数据库表及Ibatis操作

    建表语句 CREATE TABLE `TS_MopayInvoiceComposition` ( `ID` int(11) NOT NULL AUTO_INCREMENT, `RequestID` i ...

  8. oracle 两张关联表执行更新update

    UPDATE T_ASN_DTL ad1 SET ad1.cf03=( SELECT ac.TH003 FROM "T_ASN_DTL_copy" ac WHERE ac.udf0 ...

  9. 【mybatis】mybatis一条sql更新两张数据表,mybatis关联更新多张数据表

    示例sql: <update id="receipt" parameterType="com.pisen.cloud.luna.ms.security.code.b ...

随机推荐

  1. 在C#中将数字转换成中文

    上篇我们讲了在MSSQL中将数字转换成中文,这篇我们讲讲在C#中将数字转换成中文 下篇将讲一下如何将金额转换成中文金额,废话不多说,具体代码如下: /// <summary> /// 数字 ...

  2. HDU 6108.小C的倍数问题 (2017"百度之星"程序设计大赛 - 初赛(A)1001)

    补完题?不存在的. 这么久了,还是一条咸鱼,看一堆乱七八糟的东西,写一堆没用的水题,一点进步都没有,还是那么菜,菜的掉渣. 这个百毒之星初赛A还会写两道最简单的水题,初赛B一点也不会,菜的难过... ...

  3. Mybatis中的XML中需要用到的转义符号整理

    使用这么久的Mybatis中需要转义的符号整理一下,小结一下: 1.       <         小于符号        < 2.       <=       小于等于     ...

  4. iOS音频的后台播放 锁屏

    初始化AudioSession和基本配置 音频播放器采用的AVPlayer ,在程序启动的时候需要配置AudioSession,AudioSession负责应用音频的设置,比如支不支持后台,打断等等, ...

  5. java程序监控tomcat中部署的项目的状态以及控制某些项目的启动停止

    原文:http://blog.csdn.net/liuyuqin1991/article/details/49280777 步骤如下: ①:首先授权用户使获得这些权限 You can find the ...

  6. 响应头里的"Last-Modified"值是怎么来的?

    1.如图所示,app.js文件得到的响应头的"Last-Modified"数值是:Mon, 09 Sep 2013 09:18:22 GMT 我们查看服务器上的app.js文件的修 ...

  7. iOS:自定义模态动画 --UIPresentationController

    UIPresentationController :展示控制器,是iOS8的一个新特性,用来展示模态窗口的.它是所有模态控制器的管理者. 即: 1> 管理所有Modal出来的控制器 2>  ...

  8. 前端打包利器:webpack工具

    一.什么是WebPack,为什么要使用它? 1.为什要使用WebPack 现今的很多网页其实可以看做是功能丰富的应用,它们拥有着复杂的JavaScript代码和一大堆依赖包.为了简化开发的复杂度,前端 ...

  9. CSDN日报20170413 ——《天天写业务代码的那些年,我们是怎样成长过来的》

    [程序人生]天天写业务代码的那些年,我们是怎样成长过来的 作者:Phodal 比起写业务代码更不幸的是,主要工作是修 Bug , bug , buG , bUg. [Java 编程]Springboo ...

  10. 速查笔记(Linux Shell编程<上>)

    转载自: http://www.cnblogs.com/stephen-liu74/archive/2011/11/01/2202027.html 零.shell中的内部变量: 1.    $?:   ...