WPS宏编辑器读取身份证信息到电子表格

解决的实际问题

接访时,需要登记来访人的身份证信息,包括:姓名、性别、年龄、住址、身份证号码。在纸质表格中登记完一个人需要几分钟时间,有时候人数较多的时候需要花费更多的时间完成登记。登记完后,因为手写字迹潦草的原因,不便于识别;也不便于统计、检索。

设计这么一个WPS带宏的电子表格,依托身份证阅读器(本文是高拍仪上集成的身份证阅读器),可以实现3秒钟自动读取身份证上的所有信息并输入电子表格中。

开发环境

操作系统:银河麒麟V10

WPS版本:11.8.2.11653(建议使用较新版本)

具体步骤

01 在WPS表格第一个工作表(Sheet1)中设计好表式,如下图所示:

WPS宏编辑器读取身份证信息到电子表格

02 Alt+F11打开WPS宏编辑器,输入以下代码。

/**
 * getJson 解析JSON数据到WPS表格
 */
function getJson()
{
	//设置采集的网址
	const requestURL = "http://127.0.0.1:38088/card=idcard";
	//设置缓存文件路径,不同WPS版本会生成不同的缓存文件夹
	const tmpFile = "/tmp/wps-ht/tmp_05512cae147b468486000a4c73f8a2f4/card=idcard"

	//打开源工作簿
    var sourceWbook = Workbooks.Open(requestURL);
	//选择源工作簿中的工作表
    var sourceWsheet = sourceWbook.Sheets(1);
    
	//复制源工作表中的所有数据,源工作表中的JSON数据默认放在A1单元格
    var jsonString = sourceWsheet.Range("A1").Value2;
    
    //解析JSON数据
    var jsonObject = JSON.parse(jsonString);
    //提取出身份证信息,完成解析
    var obj = jsonObject.IDCardInfo;
    
    //源工作簿已经完成解析,关闭源工作薄
	sourceWbook.Close(false);
	
	//删除缓存文件
	Kill(tmpFile);
    
    //把解析到的身份证信息输入表格B3-I3单元格    
    var newRowIndex = 3;
    var rowRange = 360;
    
    //逐行遍历,在空行填充解析数据
	for(var i=newRowIndex; i<rowRange; i++){
		//仅根据B列单元格(姓名)判断所在行是否为空
	    txt = Range("B"+i).Value2
	    
	    //高拍仪未放入身份证时,obj为空
		if(obj==null){
			MsgBox("高拍仪未放入身份证,请放入身份证后再进行采集!")
			return;
		}
		
		//根据B列判断所在行为空时,填充数据
	    if(txt==null){
	    		//A列生成序号 
			Range("A"+i).Value2 = i-newRowIndex+1
			//把解析到的身份证信息输入表格B到I列 
		    	Range("B"+i).Value2 = obj.name;
			Range("C"+i).Value2 = obj.sex;
			Range("D"+i).Value2 = obj.nation;
			Range("E"+i).Value2 = obj.birthday;
			Range("F"+i).Value2 = obj.address;
			Range("G"+i).Value2 = obj.cardID;
			Range("H"+i).Value2 = obj.issueOrgan;
			Range("I"+i).Value2 = obj.validStart + "-" + obj.validEnd;
			Console.log(obj.name+":信息采集完毕。");
			return;
		}
	}
}

03 把身份证放入高拍仪(身份证阅读器),点击电子表格中“采集身份证信息”即可采集信息。

注意事项:不同的WPS版本会生成不同的缓存文件夹,请自行更改缓存文件夹路径。路径为:/tmp/wps-ht/

(0)
上一篇 2024年10月24日 上午8:19
下一篇 2024年10月28日 上午9:59

相关推荐

  • (10月5日)凤凰县在集中隔离管控人员中发现1例省外输入新冠肺炎感染者(第4例)

    来源:凤凰县新冠肺炎疫情防控指挥部   发布时间:2022-10-06 02:06:44  凤凰县新冠肺炎疫情防控指挥部 关于我县在集中隔离管控人员中发现1例省外输入新冠肺炎感染者的通告 (2022年10月5日) 2022年10月5日20时,我县在集中隔离管控人员中发现1例省外输入新冠肺炎感染者,系10月4日通告的3例感染者的同行人员,活…

    其他 2022年10月6日
    69900
  • 监控设备分辨率怎么和显示器相匹配?

    木桶效应 在一个监控系统中,最终输出到显示屏的画面效果不仅仅只是由IPC的分辨率决定的,还受到其他不同的因素共同影响。“木桶效应”表示图像清晰度是取决于“木桶”中最低的那块“木板”。而“木桶”主要由四块木板组成,即:摄像头分辨率、录像机性能、录像机输出分辨率、显示器分辨率。这四块板相辅相成,缺一不可,共同决定了画面最终的显示效果。 选择什么分辨率的显示器? …

    2023年2月10日
    2.6K00
  • 国务院关于深入实施“人工智能+”行动的意见

    国务院关于深入实施“人工智能+”行动的意见 国发〔2025〕11号 各省、自治区、直辖市人民政府,国务院各部委、各直属机构: 为深入实施“人工智能+”行动,推动人工智能与经济社会各行业各领域广泛深度融合,重塑人类生产生活范式,促进生产力革命性跃迁和生产关系深层次变革,加快形成人机协同、跨界融合、共创分享的智能经济和智能社会新形态,现提出如下意见。 一、总体要…

    其他 2025年9月1日
    37900
  • 为什么身份证号码复制到电子表格会出错

    Excel单元格常规格式只能输入11个数字,手机号码就是上限了。 超过11个数字就会显示错误,但是单元格内的数值是正确的。 根据测算,15位以内的数字,数值都是正确的。超过15位数,从第16位开始变为0。也就是说如果批量复制身份号码的话,所有身份证号码的后三位都会变成000。 建议复制身份证号码, 单元格格式调成“文本”。

    2022年9月5日
    2.7K00
  • 教育部办公厅关于公布2022—2025学年面向中小学生的全国性竞赛活动的通知

    教监管厅函〔2022〕13号 各省、自治区、直辖市教育厅(教委),新疆生产建设兵团教育局: 根据《教育部办公厅等四部门关于印发〈面向中小学生的全国性竞赛活动管理办法〉的通知》(教监管厅函〔2022〕4号,以下简称《管理办法》)精神,由主办单位自主申报,经组织专家进行评审、公示和复核等程序,确定全国青少年人工智能创新挑战赛等44项竞赛活动为2022—2025学…

    其他 2025年7月15日
    20500

发表回复

登录后才能评论