python-自动篇-办公-用Excel画画

这篇具有很好参考价值的文章主要介绍了python-自动篇-办公-用Excel画画。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码

# coding: utf-8

from PIL import Image
from xlsxwriter.workbook import Workbook


class ExcelPicture(object):
    FORMAT_CONSTRAINT = 65536

    def __init__(self, pic_file, ratio=0.5):
        self.__pic_file = pic_file

        self.__ratio = ratio
        self.__zoomed_out = False

        self.__formats = dict()

    # 缩小图片
    def zoom_out(self, _img):
        _size = _img.size
        _img.thumbnail((int(_img.size[0] * self.__ratio), int(_img.size[1] * self.__ratio)))

        self.__zoomed_out = True

    # 对颜色进行圆整
    def round_rgb(self, rgb, model):
        return tuple([int(round(x / model) * model) for x in rgb])

    # 查找颜色样式,去重
    def get_format(self, color):
        _format = self.__formats.get(color, None)

        if _format is None:
            _format = self.__wb.add_format({'bg_color': color})
            self.__formats[color] = _format

        return _format

    # 操作流程
    def process(self, output_file='_pic.xlsx', color_rounding=False, color_rounding_model=5.0):
        # 创建xlsx文件,并调整行列属性
        self.__wb = Workbook(output_file)
        self.__sht = self.__wb.add_worksheet()
        self.__sht.set_default_row(height=9)
        self.__sht.set_column(0, 5000, width=1)

        # 打开需要进行转换的图片
        _img = Image.open(self.__pic_file)
        print        ('Picture filename:', self.__pic_file)

        # 判断是否需要缩小图片尺寸
        if self.__ratio < 1:
            self.zoom_out(_img)

        # 遍历每一个像素点,并填充对应的颜色到对应的Excel单元格
        _size = _img.size
        print('Picture size:', _size)
        for (x, y) in [(x, y) for x in range(_size[0]) for y in range(_size[1])]:
            _clr = _img.getpixel((x, y))

            # 如果颜色种类过多,则需要将颜色圆整到近似的颜色上,以减少颜色种类
            if color_rounding: _clr = self.round_rgb(_clr, color_rounding_model)

            _color = '#%02X%02X%02X' % _clr
            self.__sht.write(y, x, '', self.get_format(_color))

        self.__wb.close()

        # 检查颜色样式种类是否超出限制,Excel2007对样式数量有最大限制
        format_size = len(self.__formats.keys())
        if format_size >= ExcelPicture.FORMAT_CONSTRAINT:
            print('Failed! Color size overflow: %s.' % format_size)
        else:
            print            ('Success!')
            print            ('Color: %s' % format_size)
            print            ('Color_rounding:', color_rounding)
            if color_rounding:
                print            ('Color_rounding_model:', color_rounding_model)


if __name__ == '__main__':
    r = ExcelPicture('111.jpg', ratio=0.5)
    r.process('0407.xlsx', color_rounding=True, color_rounding_model=5.0)

所遇问题

ModuleNotFoundError: No module named ‘xlsxwriter’

python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift
如果错误仍然存​​在,请获取您的 Python 版本并确保您使用正确的 Python 版本安装包。

pip3.11 install xlsxwriter

python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift

FileNotFoundError: [Errno 2] No such file or directory: ‘111.jpg’

python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift
需要将图片111和excel放到根目录下
python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift

效果

python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift
python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift

附件

图片

图片改名为111
python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift
python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift

excel

excel改名为0427
python-自动篇-办公-用Excel画画,# python自动化办公篇,python,excel,swift文章来源地址https://www.toymoban.com/news/detail-818782.html

到了这里,关于python-自动篇-办公-用Excel画画的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包