TIM Labs

PythonのopenpypxモジュールでExcelいじり

| コメント(0) | トラックバック(0)
Pythonには、様々なモジュールがある。
それを1つずつ毎週紹介すると何年も話が持ちそうだが、こちらの気力が持ちそうにない。実際、それほどたくさんのモジュールが存在するのだ。

Excelをいじるためのモジュールもいくつかあるようなのだが、今回はopenpyxlを紹介する。

openpyxl Documentationという立派なドキュメントがある。
英語のドキュメントで、311ページもあるので、真面目に読むのは大変だ。

A Python library to read/write Excel 2010 xlsx/xlsm filesがもう少し楽そうなドキュメントである。

実際には、東邦大学理学部のPythonからExcelファイルをいじるopenpyxl
あたりを出発点としてあれこれ探して次のプログラムをでっち上げただけである。


#!/usr/bin/env python

from PIL import Image, ImageColor
import openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter

def coltostr(coltuple):
    r, g, b = coltuple
    a = 255
    return format(((a*256+r)*256+g)*256+b, '08X')

def image2excel(imagefile,excelfile,sheetname):
    im = Image.open(imagefile)
    width, height = im.size
    
    wb = openpyxl.load_workbook(excelfile)
    sheet = wb.get_sheet_by_name(sheetname)
    
    # セルサイズの調整
    for x in range(0,width):
        sheet.column_dimensions[get_column_letter(x+1)].width = 1
    for y in range(0,height):
        sheet.row_dimensions[y+1].height = 5.7
    
    # 画像ファイル ⇒ Excelワークシート
    for x in range(0,width):
        for y in range(0,height):
            colstr = coltostr(im.getpixel((x,y)))
            cell = sheet.cell(row=y+1, column=x+1)
            cell.fill = PatternFill(fill_type='solid',fgColor=colstr)
    
    wb.save(excelfile)
    im.close()

image2excel("アンパン.jpg","アンパン.xlsx","アンパン")

トラックバック(0)

トラックバックURL: http://labs.timedia.co.jp/mt/mt-tb.cgi/657

コメントする

このブログ記事について

このページは、fujiが2017年7月13日 00:00に書いたブログ記事です。

ひとつ前のブログ記事は「Excelで絵が描がいたら...」です。

次のブログ記事は「調布のコンビニで電子パーツを24時間販売」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。