本文不是编程课的广告,只是一次过程分享。请放心食用!
或许基本上没有人会把“编程”和教师这个行业联系起来,如果有,想到的应该也是计算机老师。
其实,在我们的日常工作中会遇到很多需要大量重复执行的任务,如果这个时候能用上编程,那工作效率是会大大提高了。
今天,在钉钉群有群友提出了这样的需求:
后来经过了解,他应该是要把学校物品的信息放进二维码中,帖在物品上,方便随时扫码查看信息。
想要扫码后看到的样子:
在物品列表的xls文档中,可能有几千条数据,如果人工手动来生成二维码,这工作量简直无法想象。
我建议他用代码来实现。由于今天相当清闲,我就顺便帮他弄了~
整体思路
通常在看到这方面需求的时候,我都会在脑海里面构想,用什么语言的代码来实现呢?php?nodejs?python?
今天这个由于是群友需要的,那就需要能快速搭建运行环境,如果运行环境都要搭建半天,那也太不愉快了。所以,这次我选择了python。
python读取文件、下载图片都比较方便,日常用来帮些小忙是很舒心的。
本次任务比较简单,大致思路就是:
- 读取xls表中的数据
- 按行进行循环
- 把每行的内容格式化为需要的文本信息
- 调用二维码生成接口API,生成二维码图片
- 把二维码图片下载到磁盘
我以前也没有用python做过和xls相关的事。所以,只能“面向百度”来编程了。当然,这是建立在有一定语法基础之上。
这不?一搜就出来了,不过这里面有一点明显的错误,需要自己判断并修改过来。
代码实现
把自己不明白的搜索到之后,就可以动手了。
先安装xlrd
库。
pip3 install xlrd
接着,为项目创建文件夹,做好相关规划:
然后,噼里啪啦一阵敲打键盘,run.py中的代码就完成了:
# coding=utf-8 import xlrd import requests def download_img(img_url, name): header = {} # 设置http header,这个和接口有关,本接口无需授权 r = requests.get(img_url, headers=header, stream=True) if r.status_code == 200: open('./img/'+name+".jpg", 'wb').write(r.content) # 将内容写入图片 del r if __name__ == '__main__': # 打开电子表 readbook = xlrd.open_workbook(r'./data.xls') # 读第一张表的数据 sheet = readbook.sheet_by_index(0) # 共有多少行? nrows = sheet.nrows # 从第二行开始,循环读 for i in (1, nrows-1): # 拼凑成文字 tmp = "存放位置:%s\n资产名称:%s\n单位:%s\n价格:%s\n采购时间:%s\n入库时间:%s\n责任处室:%s\n责任人:%s\n使用人:%s\n备注:%s\n" string = tmp % (sheet.cell(i, 0).value, sheet.cell(i, 1).value, sheet.cell(i, 2).value, sheet.cell(i, 3).value, xlrd.xldate.xldate_as_datetime(sheet.cell( i, 4).value, 0), xlrd.xldate.xldate_as_datetime(sheet.cell(i, 5).value, 0), sheet.cell(i, 6).value, sheet.cell(i, 7).value, sheet.cell(i, 8).value, sheet.cell(i, 9).value) # 开始生成二维码 url = "https://api.pwmqr.com/qrcode/create/?url=%s&down=1" % (string) name = sheet.cell(i, 0).value+sheet.cell(i, 1).value download_img(url, name) print("%s 生成成功!" % (name)) print("全部生成完毕!")
跑起来也是非常流畅的:
我只用了两条数据来进行测试,但相信即使是1000条,也用不了多少时间。
图片用所属教室和物品名来命名,打印时找起来也比较方便。
写在后面
其实,我们日常的工作中会遇到很多棘手的任务,特别是电脑上需要机械化重复操作的任务,如果能用上一些自动化的工具,那就真正释放了双手。
未来已来,多多少少了解一点儿、学习一下,没有坏处。
我一直认为:工具是为我们服务的,作为非专业的我们,不需要把每个软件、每个工具学得那么精通,只需要会使用我们需要的那一部分就可以了。
回想一下,你看过的那些PPT教程、PS教程、excel教程…… 你用过多少?还记得多少呢?
- end -