Python 居然可以在 Excel 中画画你知道吗

导语:

用 Python 读取图片的像素值,然后输出到 Excel 表格中,最终形成一幅像素画,也就是电子版的十字绣了。

基本思路

实现这个需求的基本思路是读取这张图片每一个像素的色彩值,然后给 excel 里的每一个单元格填充上颜色。既然要读取图片,那就需要用到 Pillow 库,操作 Excel 需要用到 openpyxl 库,先把这两个库安装好。

pip3 install openpyxl
pip3 install Pillow

色值转换

从图片读取的像素块色值是 RGB 值,而 openpyxl 向 Excel cell 内填充颜色是十六进制色值,因此咱们先写一个 RGB 和十六进制色值转换的一个函数。

def rgb_to_hex(rgb):
    rgb = rgb.split(',')
    color = ''
    for i in RGB:
        num = int(i)
        color += str(hex(num))[-2:].replace('x', '0').upper()
    return color

excel 的单元格默认是长方形,修改为正方形才不会使图片变形

if h == 1:
  _w = cell.column
  _h = cell.col_idx
  # 调整列宽
  worksheet.column_dimensions[_w].width = 1

# 调整行高
worksheet.row_dimensions[h].height = 6

这里用到了双重for循环,外层是`width`,里层是`height`,是一列一列的填充颜色,因此判断`if h == 1`,避免多次调整列宽。

图片转换

有了色值转换函数,接下来要做的操作就是逐行读取图片的 RGB 色值,之后将 RGB 色值转换为十六进制色值填充到 Excel 的 cell 中即可。

def img2excel(img_path, excel_path):
    img_src = Image.open(img_path)
    # 图片宽高
    img_width = img_src.size[0]
    img_height = img_src.size[1]

    str_strlist = img_src.load()
    wb = openpyxl.Workbook()
    wb.save(excel_path)
    wb = openpyxl.load_workbook(excel_path)
    cell_width, cell_height = 1.0, 1.0

    sheet = wb["Sheet"]
    for w in range(img_width):
        for h in range(img_height):
            data = str_strlist[w, h]
            color = str(data).replace("(", "").replace(")", "")
            color = rgb_to_hex(color)
            # 设置填充颜色为 color
            fille = PatternFill("solid", fgColor=color)
            sheet.cell(h + 1, w + 1).fill = fille
    for i in range(1, sheet.max_row + 1):
        sheet.row_dimensions[i].height = cell_height
    for i in range(1, sheet.max_column + 1):
        sheet.column_dimensions[get_column_letter(i)].width = cell_width
    wb.save(excel_path)
    img_src.close()

最后再来个入口函数,就大功告成啦~

if __name__ == '__main__':
    img_path = '/Users/xyz/Documents/tmp/03.png'
    excel_path = '/Users/xyz/Documents/tmp/3.xlsx'
    img2excel(img_path, excel_path)

惊艳时刻

激动的心,颤抖的手,来看下最终效果咋样。

怎么样是不是觉得有那么一丝丝韵味呢...

总结

好啦今日代码分享就到这了,喜欢的记得收藏噢~

到此这篇关于Python 居然可以在 Excel 中画画你知道吗的文章就介绍到这了,更多相关Python Excel画画内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python数据处理-导入导出excel数据

    目录 一.xlwt库将数据导入Excel 1.将数据写入一个Excel文件 2.定制Excel表格样式 3.元格对齐 4.单元格的背景色 5.单元格边框 二.xlrd库读取Excel中的数据 1.读取Excel文件 2.工作表的相关操作 3.处理时间数据 前言: Python的一大应用就是数据分析了,而数据分析中,经常碰到需要处理Excel数据的情况.这里做一个Python处理Excel数据的总结,基本受用大部分情况.相信以后用Python处理Excel数据不再是难事儿! 一.xlwt库将数据导

  • 教你用python将数据写入Excel文件中

    目录 一.导入excel表格文件处理函数 二.创建excel表格类型文件 三.在excel表格类型文件中建立一张sheet表单 四.自定义列名 五.将列属性元组col写进sheet表单中 六.将数据写进sheet表单中 七.保存excel文件 附:Python读取Excel文件数据 总结 将数据写入Excel文件中,用python实现起来非常的简单,下面一步步地教大家. 一.导入excel表格文件处理函数 import xlwt 注意,这里的xlwt是python的第三方模块,需要下载安装才能使

  • 利用Python中xlwt模块操作excel的示例详解

    目录 一.安装 二.创建表格并写入 三.设置单元格样式 四.设置单元格宽度 五.设置单元格背景色 六.设置单元格内容对齐方式 七.单元格添加超链接 八.单元格添加公式 九.单元格中输入日期 十.合并行和列 十一.单元格添加边框 一.安装 pip install xlwt 二.创建表格并写入 import xlwt # 创建一个workbook并设置编码 workbook = xlwt.Workbook(encoding = 'utf-8') # 添加sheet worksheet = workb

  • python怎么使用xlwt操作excel你知道吗

    目录 总结 一.安装 pip install xlwt 二.创建表格并写入 import xlwt # 创建一个workbook并设置编码 workbook = xlwt.Workbook(encoding = 'utf-8') # 添加sheet worksheet = workbook.add_sheet('飞兔小哥') # 写入excel, 参数对应 行, 列, 值 worksheet.write(1,0, label = '我爱autofelix') # 保存 workbook.save

  • Python实现读取excel中的图片功能

    目录 一.读取excel文件 二.读取excel中的图片 (1)使用zipfile模块 (2)使用openpyxl读取 三.对读取的图片进行处理 补充 一.读取excel文件 我们先来看看如何读取excel文件,读取excel文件的方式很多.这里选择openpyxl模块,安装语句如下: pip install openpyxl 我们还需要用到一些其它模块,具体如下: pip install pyzbar pip install pillow pip install numpy 下面我们就可以开始

  • 利用Python操作excel表格的完美指南

    目录 主旨 环境 安装模块 新建excel 单元格写入数据 合并单元格 居中显示 修改字体和颜色 总结 主旨 在日常工作中,我们会经常且频繁的使用excel表格,那么我们是否可以通过python来操作excel表格,让其自动化的来代替我们的工作呢?比如涉及到的居中.合并单元格.修改字体颜色等. 环境 linux 服务器一台,亦或者windows10电脑一台python3.7.1版本,python3.x的都可以 安装模块 操作excel需要用到的模块是“xlwt”,我们需要使用python中的pi

  • python写入Excel表格的方法详解

    目录 一.写入Excel数据 二.项目:更新一个电子表格 2.1 案例需求 2.2 案例源码 总结 一.写入Excel数据 週用openpyxl也提供了一些方法写入数据,这意味着你的程序可以创建和编辑电子表格文件.利用Python创建一个包含几千行数据的电子表格是非常简单的. 週用openpyxl.Workbook()函数,创建一个新的空Workbook对象 本章节所有代码均在jupyter notebook中完成 创建一个新的工作簿对象 import openpyxl wb = openpyx

  • Python 居然可以在 Excel 中画画你知道吗

    导语: 用 Python 读取图片的像素值,然后输出到 Excel 表格中,最终形成一幅像素画,也就是电子版的十字绣了. 基本思路 实现这个需求的基本思路是读取这张图片每一个像素的色彩值,然后给 excel 里的每一个单元格填充上颜色.既然要读取图片,那就需要用到 Pillow 库,操作 Excel 需要用到 openpyxl 库,先把这两个库安装好. pip3 install openpyxl pip3 install Pillow 色值转换 从图片读取的像素块色值是 RGB 值,而 open

  • python 合并多个excel中同名的sheet

    大家好~ 老Amy来啦!已经n久没有给大家输出关于办公自动化的文章了-为什么呢?罗列原因: 太忙!(被领导"压榨") 太忙!(没有额外的精力揣测大家办公的需求) 太忙!(持续吃瓜中) 然鹅,一位朋友的困惑成为了我这种"麻木状态"的终结者,他提出需求如下: 想不断尝试的老Amy,开启了思考模式:"我要怎么实现这个需求呢?". 不用着急,首先我们来分析数据本身. 分析数据特征如下: 数据所在路径 C:\Users\logic\Desktop\myte

  • python使用xlrd实现检索excel中某列含有指定字符串记录的方法

    本文实例讲述了python使用xlrd实现检索excel中某列含有指定字符串记录的方法.分享给大家供大家参考.具体分析如下: 这里利用xlrd,将excel中某列数据中,含有指定字符串的记录取出,并生成用这个字符串命名的txt文件 import os import xlrd,sys # input the excel file Filename=raw_input('input the file name&path:') if not os.path.isfile(Filename): rais

  • python制作爬虫并将抓取结果保存到excel中

    学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候,搜索Python,或者是PHP等等的岗位信息,其实是向服务器发出相应请求,由服务器动态的响应请求,将我们所需要的内容通过浏览器解析,呈现在我们的面前. 可以看到我们发出的请求当中,FormData中的kd参数,就代表着向服务器请求关键词为Python的招聘信息. 分析比较复杂的页面请求与响应信息,

  • 基于python实现在excel中读取与生成随机数写入excel中

    具体要求是:在一份已知的excel表格中读取学生的学号与姓名,再将这些数据放到新的excel表中的第一列与第二列,最后再生成随机数作为学生的考试成绩. 首先要用到的数据库有:xlwt,xlrd,random这三个数据库. 命令如下: import xlwt import xlrd import random 现有一份表格内容如下图: 现在我们需要提取这其中的B1-C14. (提示:在对这份电子表格进行操作的时候,要使用到这个电子表格的地址,即表格的储存位置.) excel=xlrd.open_w

  • Python实现将json文件中向量写入Excel的方法

    本文实例讲述了Python实现将json文件中向量写入Excel的方法.分享给大家供大家参考,具体如下: 有一个需要是将已经向量化的页面的数据中的向量写入Excel中用于展示,工作很简单,这里简单复习一下Excel文件写的工作,试验中使用的json文件内容如下: 复制代码 代码如下: [ {"vector": [0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0

  • 使用Python和xlwt向Excel文件中写入中文的实例

    Python等工具确实是不错的工具,但是有时候不管是基础的Python还是Python的软件包都让我觉得对中文不是很亲近.时不时地遇到一点问题很正常,刚刚在写Excel文件的时候就又遇到了这样的问题. 为了能够说明情况,假设我想把当前文件夹中所有的文件名称全都写入到Excel文件中. 当前的目录信息如下: grey@DESKTOP-3T80NPQ:/mnt/e/01_workspace/01_docs/02_blog/2017年/08月$ ls -l total 1464 -rwxrwxrwx

  • python向已存在的excel中新增表,不覆盖原数据的实例

    每月需更新某个excel表格,进行两项操作,且不覆盖原有的sheet: 1. 在原来的excel表中新增sheet 2. 往原有的excel表中的某张sheet新增内容 基于python3,使用xlrd,xlwt,具体代码如下,亲测有效,希望对大家有帮助,谢谢! import xlwt import xlrd from xlutils.copy import copy #打开需要操作的excel表 wb=xlrd.open_workbook(path) #复制原有表 newb=copy(wb)

  • Python向Excel中插入图片的简单实现方法

    本文实例讲述了Python向Excel中插入图片的简单实现方法.分享给大家供大家参考,具体如下: 使用Python向Excel文件中插入图片,这个功能之前学习xlwt的时候通过xlwt模块实现过.那时候是在公司做的尝试,印象中插入的图片最终缩小为了一个单元格,同时由于公司的加密系统如此实现了图片插入的Excel文件不能够再次打开. 这次试用XlsxWriter这个模块,推测这个模块应该是具有比xlwt强大的多的功能.代码实现如下: #!/usr/bin/python # -*- codding:

  • python 读取txt中每行数据,并且保存到excel中的实例

    使用xlwt读取txt文件内容,并且写入到excel中,代码如下,已经加了注释. 代码简单,具体代码如下: # coding=utf-8 ''' main function:主要实现把txt中的每行数据写入到excel中 ''' ################# #第一次执行的代码 import xlwt #写入文件 import xlrd #打开excel文件 fopen=open("e:\\a\\bb\\a.txt",'r') lines=fopen.readlines() #新

随机推荐