在农村工作的朋友向我发来求助,他们有一项年度任务,就是需要走访全村的村民。并且每走访一户需要登记,登记的内容须有照片为佐证。他走访完了,照片也拍了,但是在把照片粘贴进规定的登记模板(word)的时候犯难了。一般的村有七八百户村民,相当于要把七八百张照片一张一张插入word文档的表格中,这得粘贴到猴年马月才搞完,而且,每张图片的大小不一,粘贴进去后还要调整大小十分麻烦和费时。在网上搜索了相关资料以后,我有了自己的解决方案。
首先假设我们有50张图片和一个“走访登记表”:
虽然登记表是word格式的,但是我们可以把它复制到EXCEL表中,做成EXCEL格式的表格,打印出来的效果其实都是一样的。
大概的思路是这样的,因为微软的EXCEL中可以识别部分的HTML代码,那么我们可以批量生成<table>和<img>标签的代码,然后复制粘贴到EXCEL表格中,图片就会自动贴上去。
接下来,我们新建一个EXCEL文件,在这个文件上进行代码的生成操作。
首先有一个前提,就是只能用微软的EXCEL才可以使用HTML代码,WPS的不行。所以,我们用微软的EXCEL软件打开新建的表格文件,新建以下列:
其中姓名列,从走访登记表中把户主一栏的姓名,按原有顺序粘贴。
“图片文件夹”列复制需要插入的照片所在的文件目录:
图片索引为公式自动生成,其公式为:IFERROR(LEFT(E2,FIND(".",E2)-1),"")。其逻辑是从“图片文件名”这一列中获取不含后缀的文件名,因为图片的文件名已经按照其姓名重命名,我们可以通过图片的文件名和户主的姓名进行匹配。
“图片文件名”我们可以用批处理命令来获取,新建一个批处理文件(注意用TXT文件编辑时,编码要存为ANSI格式),内写以下代码:
DIR /B > 照片文件名.txt
pause
点击运行后,就会把当前文件夹下的文件名全部读取存入“照片文件名.txt”文件中。
打开该文件,将获取的文件名复制到EXCEL“图片文件名”这一列下。
后面“图片长” 和“图片高”即为要插入图片的大小,一般来说与需要插入位置的单元格一样大小。在目标单元格单击网格线就能得到单元格的像素尺寸:
将该数据填入“图片高”和“图片长”两列中。
接下最后一行,我们用公式拼接成代码,该单元格公式为:
我们最终想要的代码是这样子的:
把代码中的几个参数替换成对应的单元格,形成如下公式:
IFERROR("<table ><img src="""&C2&"\"&VLOOKUP(B2,D:E,2,FALSE)&""""&" width="""&F2&""""&" height="""&G2&""""&">",")
全部往下复制填充,就得到了批量插入的代码:
复制这些代码,先粘贴在任意的TXT文件中,再从TXT文件中复制
在走访登记表中对应的“走访图片”第一个单元格,右键选择“选择性粘贴....”
在弹出对话框中选择“Unicode文本”
神奇的一幕发生了,所有图片均按照设置的大小粘贴进了对应的单元格。
这是,我们还可以通过“Ctrl+A” 选择所有的图片进行放大缩小和调整位置的操作。要注意,图片批量粘贴后,单元格的框线会消失,需要重新设置,图片比单元格略小会比较美观一些。
需要注意的是,通过提前设置图片大小的方式粘贴图片,会对图片进行压缩,从而导致 看不清。如果只是为了打印,对图片清晰度没有很高要求的话,可以这样做。但是,如果是需要图片上的信息,比如粘贴的图片是健康码、行程码之类的,这种做法就不合适了。
但是也有解决方案,那就是在设置图片大小的时候,把图片设置大一点,比如按照单元格尺寸乘以10倍,先把图片粘贴进去:
保存关闭文件,然后再用WPS打开。在WPS打开的界面中,选择所有图片,从工具栏直接设置图片大小,设置成自己想要的尺寸。
这时候,我们点击其中一张图片,会出现一个放大工具:
点击它,就能看到完整的清晰的原图。
本次分享到此结束。文中有关的批处理和EXCEL演示文件可从以下链接下载: