カテゴリー: サンプル

  • 【一覧】セルの書式設定オプション

    セルの書式設定では基本的なコードの書き方について紹介しましたが、ここでは引数がExcel設定画面のどこに対応しているか、どんな種類があるかを紹介します。ご自身でコードを書かれる際の引数確認用としてご活用ください。

    1.フォントオプション

    まずはフォントオプションについてです。フォントオプションは引数が多いので、各引数が書式設定画面のどこに対応するのか、次の画像でご確認ください。

    ⑤underlineには4種類あり、それぞれ下図のように定数が割り振られています。

    また色コードは「色の設定」から調べることが出来ますが、次に紹介する塗りつぶし設定も同じ方法になります。

    フォントオプション設定例:
    ws[“A1”].font = Font(name=’HGPゴシックE’, size=14, bold=True, italic=True, underline=’double’, strike=True, color=’00FF0000′)

    2.塗りつぶしオプション

    セルを単色塗りつぶしに設定する際は、patternTypeにsolidを設定し、fgColorで先ほどと同じように設定したい色コードを調べて定義します。

    塗りつぶしオプション設定例:
    ws[“A2”].fill = PatternFill(patternType=’solid’, fgColor=’00FF0000′)

    3.配置オプション

    配置:Alignmentの基本構造と定数は以下のようになっています。

    配置オプション設定例:
    ws[“A3”].alignment = Alignment(horizontal=’right’, vertical=’top’, wrap_text=True)

    4.終わりに

    今回は使用頻度の多いセルの書式設定オプションの適応箇所、種類を紹介しました。罫線の設定は選択肢が多いので、別の記事で改めて紹介していこうと思います。

  • 【サンプル】表の書式

    Excelで作成した表の書式設定について紹介しましたが、ここではいくつか書式を変えてみようと思います。枠線に関してはそれだけでコードが長くなるため別記事で紹介しているのでそちらをごらんください。


    1.アウトプット

    まずは今回紹介する表とコードを紹介します。画像左側のように文字と枠線が引かれている状態から2行目の書式を変更します。

    from openpyxl import load_workbook
    from openpyxl.styles import Font, PatternFill, Alignment
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/表作成.xlsx')
    ws = wb["表"]
    
    
    #B2~F2の表題を水色で塗りつぶし
    for col in range(2,7):
        ws.cell(row=2, column=col).fill = PatternFill(patternType='solid', fgColor='B8CCE4')
    
    
    #B2を太文字
    ws["B2"].font = Font(bold=True)
    
    
    #C2~F2を赤文字
    for col in range(3,7):
        ws.cell(row=2, column=col).font = Font(color='00FF0000')
    
    
    #C2~F2の左右位置を真ん中揃え
    for col in range(3,7):
        ws.cell(row=2, column=col).alignment = Alignment(horizontal='center', vertical='center')
    
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/表作成.xlsx')

    2.コードの説明

    今回自分が普段よく使う書式設定を紹介しましたが、他の書式も設定で変えられます。ここでは一連のコードの流れを理解してもらえればと思います。

    縦一列、横一列をまとめて書式を適用させる場合はfor文を利用しています。
    また表の中身のように縦横複数の範囲に適用させる場合は、for文の中にfor文を入れることでまとめて適用させることができます。

    3.終わりに

    今回は表の書式を設定するコードのサンプルを紹介しました。1つ1つ設定のコードを書くため全体のボリュームは多いですが、それぞれの設定方法は単純なので、このページで書き方につまずくことが無くなる人が増えたら嬉しいです。

  • 【サンプル】表の枠線

    Excelで表を作成する際に枠線に一部に基本の枠線以外を使うと意外と面倒だったりするので、数種類の線種を含めた表作成のコードを紹介します。
    いつも作る表の形が決まっている方は参考にしてください。


    1.アウトプット

    まずは今回紹介する表とコードを紹介します。自分が良く使う外枠を太線、1行目の下線を二重線にした形で作りました。

    from openpyxl import Workbook
    from openpyxl.styles import Border, Side
    
    Workbook()
    wb = Workbook()
    ws = wb.active
    
    
    #列(col)、行(row)の始点、終点の定義(以下はB2~F7までを指定)
    col_start = 2
    col_end = 6
    row_start = 2
    row_end = 7
    
    #-------線種定義-------
    
    #パターンA:4辺全て細線
    thin_border = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
    
    
    #パターンB:1辺だけ太線のセルを左辺、右辺、上辺、下辺それぞれ作成
    thick_left = Border(left=Side(style='thick'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thin'))
    thick_right = Border(left=Side(style='thin'), right=Side(style='thick'), top=Side(style='thin'), bottom=Side(style='thin'))
    thick_top = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thick'), bottom=Side(style='double'))
    thick_bottom = Border(left=Side(style='thin'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thick'))
    
    
    #パターンC:角2辺が太線のセルを左上、右上、左下、右下それぞれ作成
    thick_ltop = Border(left=Side(style='thick'), right=Side(style='thin'), top=Side(style='thick'), bottom=Side(style='double'))
    thick_rtop = Border(left=Side(style='thin'), right=Side(style='thick'), top=Side(style='thick'), bottom=Side(style='double'))
    thick_lbottom = Border(left=Side(style='thick'), right=Side(style='thin'), top=Side(style='thin'), bottom=Side(style='thick'))
    thick_rbottom = Border(left=Side(style='thin'), right=Side(style='thick'), top=Side(style='thin'), bottom=Side(style='thick'))
    
    
    #-------表作成-------
    #パターンAを使い全て細線の表作成
    for row in range(row_start, row_end+1):
            for col in range(col_start, col_end+1):
                cell = ws.cell(row=row, column=col)
                cell.border = thin_border
    
    
    #パターンBを使い外枠の左辺、右辺が太線の表作成
    for row in range(row_start, row_end+1):
        ws.cell(row=row, column=col_start).border = thick_left
        ws.cell(row=row, column=col_end).border = thick_right
    
    
    #パターンBを使い外枠の上辺、下辺が太線の表作成
    for col in range(col_start, col_end+1):
        ws.cell(row=row_start, column=col).border = thick_top
        ws.cell(row=row_end, column=col).border = thick_bottom
    
    
    #パターンCを使い外枠の2辺が太線の作成
    ws.cell(row=row_start, column=col_start).border = thick_ltop
    ws.cell(row=row_start, column=col_end).border = thick_rtop
    ws.cell(row=row_end, column=col_start).border = thick_lbottom
    ws.cell(row=row_end, column=col_end).border = thick_rbottom
    
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/表作成.xlsx')

    2.表作成の工程

    見た目は簡単な表ですが、ずいぶんと長いコードになってしまいました。コードが長いので表作成の工程を説明すると、
    細線のグラフ作成→外枠の左右、上下の辺を太線→四隅の角を太線
    の手順で作成した表を重ねていくことで目的の形を作っています。

    範囲指定の定義や関数化することでもっとスッキリしたコードにできるかもしれませんが、定義する範囲をセル番号をそのまま書き出せば良かったり、表を分解してそれぞれの線種を定義することで形を変えやすかったりと

    メリット
     ・作りが単純
     ・カスタマイズが容易
    デメリット
     ・コードが長い

    と言った特徴があります。ただし、表作成の頻度が少ない自分としてはカスタマイズが簡単な方が毎回作り方を調べて理解しなくていいので、この形をテンプレートとして利用しています。

    3.終わりに

    今回は表を作成するコードのサンプルを紹介しました。コードが長く手間なので、たまに表を作成する人がコードを調べると逆に時間がかかるかもしれないので、今回紹介したコードを活用してもらえると嬉しいです。