当Excel遇上Python

作者: 拉小登 | 来源:发表于2019-04-09 20:51 被阅读30次
    image

    文 | 蛮想,秋叶优秀学员

    说到Excel,你想到的可能就是函数公式,各种数据整理,图表制作,又或者是数据分析。

    我一直认为这就是Excel的顶级应用场景了,也经常拿这些「专业术语」,去吓唬秋叶Office训练营小白们。

    正所谓无巧不成书,故事最精彩的地方,往往是剧情的反转,前两天我就被反转了一次,而且还是个女生。

    image

    玩了10年,我还是第1次看到,身边能有人在Excel画像素画,而且那个人不是我,是一个叫做漫想的女生。

    具体是怎么做的呢?我们来听一听,漫想给我们讲的,Excel遇上Python那点事儿。

    1- Excel像素画原理

    1-读取图片中的RGB值,将其转化成网络色彩,最后还原成RGB值;

    2-将经过处理的RGB值存为文本;

    3-新建Excel,导入文本值;

    4-借助VBA进行填充。

    2- Python读取像素值

    备注:我的python环境为3.6,我用的IDE是pycharm。

    这里如何就不花篇幅介绍如何设置python环境。还没有配的小朋友,可以看这篇文章。

    https://zhuanlan.zhihu.com/p/28789759

    1.安装pillow模块

    PIL(Python Imaging Library)是Python中一个强大的图像处理库,但目前其只支持到Python2.7。pillow是PIL的一个分支,虽是分支但是其与PIL同样也具有很强的图像处理库。

    Pillow的文档:https://pillow.readthedocs.io/en/latest/
    Pillow的github:https://github.com/python-pillow/Pillow

    在windows系统下安装PIL模块:

    方法一:pip安装

    cmd进入你正在运行的python代码文件夹的lib中,即包含有pip.exe文件的文件夹中,代码为:cd 文件夹位置。例如: cd D:\python\untitled\venv\Scripts

    image

    通过以下代码实现安装:

    pip install Pillow
    
    image

    验证一下是否安装成功:

    python
    import PIL
    

    如图就是安装成功了。(我之前安装过了)

    方法二:(不建议)下载pillow

    下载合适文件后,在文件夹中安装,之前有讲过,只要放对了位置就行。

    PIL官方链接:http://pythonware.com/products/pil/

    2.Python实现代码

    通过PIL来读取图像的RGB值,输出到txt文本中。(代码均有备注)

    #coding=utf-8
    from PIL import Image #导入之前安装的包
    imload = Image.open('4.jpg') #加载图像文件,如果之后要实现其他的,可以换图像文件的名称,注意!!该图片需要在同一文件夹下,否则需要绝对或者相对路径
    im = imload.convert("RGB") #转换为RGB的格式
    width = im.size[0] #获取宽度
    height = im.size[1] #获取高度
    demo = open('rgb_4.txt','a')    #为之后生成的值,生成一个txt文件,a是写入文件的意思
    #迭代输出,以行为单位,y在外层
    for y in range(height):
      for x in range(width):
        r,g,b = im.getpixel((x,y))  #这里是重点,用getpixel()方法获取图片像素点的RGB值
        rgb =r,g,b
        demo.write(str(rgb)+ '\t')  #写入文件中,并且rgb之间加入制表符
      demo.write("\n")  #换行则也换行
      demo.close()  #关闭文件
    
    image

    最终,在该python文件下,就可以看到生成的txt文件。

    导出的TXT文件如下:

    image

    3- EXCEL填充单元格

    1.准备TXT文件

    因为前面python中生成的TXT,有括号和空格,需要在读取RGB之前替换为空。

    - 在【打开】中选择该TXT文件导入。此时会出现,【导入文本向导】,前两步都是默认选项,第三步中选择【文本】的形式显示。这里也可以在导入成功后,全选所有表格,在【开始】选项卡中把【格式】全部换成【文本】。

    image

    - 替换查找!!用替换查找把括号去掉!就是CTRL+H,将【(】和【)】替换为空

    - 调整列宽和行高为正方形!注意!这里宽度与行高的单位是不一样的,每列的宽度8.43单位,等于64像素。每行高度15点,等于20像素。总之调整像素一样,就是正方形啦。

    2.VBA实现RGB填充

    右击工作表sheet,选择查看代码,就可以自由的编辑VBA代码了~

    VBA代码:

    Sub Set_RGB()
    Dim r As Range, arr   #定义r
    For Each r In Range("A:AFA")    #注意这里的Range中的“A:AFA”指的是列的位置,这里每次都需要手动修改,所以还是有些麻烦,等过段时间,我再优化一下
      arr = Split(r, ",")     #利用,来分割RGB值
      r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))        #CInt的作用是四舍五入后取整,如果要取整的浮点数小数部分恰好是0.5的情况,则向最接近的偶数取整。
      Next
      End Sub
    
    image

    运行VBA代码,可能会出现越界错误9 ,但是没关系,其实已经生成RGB颜色啦!

    讲解VBA循环语句

    For Each 元素 In 组合
    语句1
    语句2
    语句N
    Next [元素]
    

    最后运行代码,并调整EXCEL界面的大小,就可以看到细节啦~

    image
    image

    越简单的图,实现起来越快捷,效果也越好呀!图片太大了,电脑有可能带不起来哦!

    image
    image
    image
    image

    4- 总结

    是不是从没想过EXCEL也可以实现如此功能?

    其实只要你敢想,你就做的出来。

    多一点耐心,多动手,这份撩妹神器就到手。

    如此撩妹神器,不如现在就上手试一试?程序员特有的浪漫送给你心仪的他/她一副十字绣画吧

    我是拉小登,源于Excel,不只是Excel

    image

    相关文章

      网友评论

        本文标题:当Excel遇上Python

        本文链接:https://www.haomeiwen.com/subject/zchwiqtx.html