Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

pythonでExcelデータを作成 (クロスステッチデータを作る 第3回)

本日の課題と目標
印刷したい (何使おうか?) Excelを使おう
新しいExcelファイルを作る
罫線を引く
フォントの設定 (文字の大きさを変更)
セルの大きさを変更
データの保存


はじめに
前回のcv2.kmeans関数の戻り値2であるラベル番号をExcelに表示させると、クロスステッチの図案が出来そうです。ラベルに対応した色も表みたいにして出したいです。今回はExcelファイルを作成してセルの大きさを調整し罫線を引くところまでです。


Excelファイル作成のプログラム

import openpyxl
from openpyxl.styles.borders import Border, Side
from openpyxl.styles import Font


size_x = 20
size_y = 10

# 新しいファイルを作成
book = openpyxl.Workbook()
# シートの指定
sheet = book.active

# 罫線(外枠)を設定
border = Border(top=Side(style='thin'), 
            bottom=Side(style='thin'), 
            left=Side(style='thin'),
            right=Side(style='thin'))
# 罫線とフォント
for i in range(size_y):
    for j in range(size_x):
        # 罫線を引く
        sheet.cell(row=i + 1 ,column=j + 1).border = border
        # 文字の大きさを変更
        sheet.cell(row=i + 1 ,column=j + 1).font = Font(size=7)

# セルの幅・高さを変更
# 行の高さを変更
for i in range(size_y):
    sheet.row_dimensions[i + 1].height = 12
# 列の幅を変更
for j in range(size_x):
    # openpyxl.utils.get_column_letterを使って列「1」を 列「A」に変換
    sheet.column_dimensions[openpyxl.utils.get_column_letter(j + 1)].width = 2

# ブックの保存
book.save('テスト.xlsx')


解説
openpyxl をインストール(しなくて大丈夫でした)
罫線を引く
Excelで罫線を引く時のようにセルを範囲指定して外枠と十字に罫線を引けないか調べましたがわからなかったので、今回は一つのセル毎に外枠の罫線を引き、横の数と縦の数分同じ処理をしました。
フォントのサイズを設定
上の処理と同時に一つのセル毎にフォントのサイズを設定しました。
セルの高さと幅を変更
セルの幅では、openpyxl.utils.get_column_letter() を使ってアルファベットから数字へ変換しました。

今回使った openpyxlのメソッド一覧
罫線:
シート変数.cell(セル番号).border
フォント:
シート変数.cell(セル番号).font
セルの高さ:
シート変数.row_dimensions[行].height
セルの幅
シート変数.column_dimensions[列].width


参考サイト

cell.メソッド いろいろ


保存ファイル
lesson23.py


文責:Luke