タグ: python

  • 【基本】セルの書式設定

    openpyxlでセルの書式設定する方法を紹介します。Excelで設定できる項目はopenpyxlでもできますが、すべて紹介するには情報量が多いので、ここでは使う頻度の高いものの基本的な書き方、設定できる種類を紹介して最後にサンプルとして表作成を行ないます。

    1.各設定の書き方

    今回紹介する書式設定は基本的にオブジェクトをインポートしてプロパティを設定と流れが似ているので、まず各プロパティの設定のしかたを書きます。設定値はそれぞれデフォルトの値です。

    #フォント設定:書体、文字サイズ、太文字、斜体、下線、取り消し線、文字色(黒色)
    ws["A1"].font = Font(name='Calibri', size=11, bold=False, italic=False, underline=None, strike=False, color='000000')
    
    
    #塗りつぶし設定:塗りつぶしタイプ、塗りつぶし色
    ws["B1"].fill = PatternFill(patternType=None, fgColor='000000')
    
    
    #罫線設定:左辺、右辺、上辺、下辺すべて設定なし
    ws["C1"].border = Border(left=Side(border_style=None), right=Side(border_style=None),top=Side(border_style=None),bottom=Side(border_style=None))
    
    
    #配置:横位置、縦位置、折り返し表示、縮小して全体表示
    ws["D1"].alignment = Alignment(horizontal='general', vertical='bottom', wrap_text=False, shrink_to_fit=False)
    
    
    #表示形式:使用したい形式の記述のみ(デフォルトの場合記述不要)
    ws["E1"].number_format = 'yyyy/m/d'
    

    2.使用例

    それぞれプロパティには多くの種類がありますが、イメージを掴んでもらうため先にインポートから設定から設定変更、保存までをしたコードと結果を紹介します。

    from openpyxl import load_workbook
    #このページで説明する書式設定に必要なオブジェクトのインポート
    from openpyxl.styles import Font, PatternFill, Border, Side, Alignment
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/書式.xlsx')
    ws = wb["書式設定"]
    
    #------------------------  本記事の紹介部分  ---------------------------
    
    #フォント設定
    ws["A2"].font = Font(name='HGPゴシックE', size=14, bold=True, italic=True, underline='double', strike=True, color='00FF0000')
    
    
    #塗りつぶし設定
    ws["C2"].fill = PatternFill(patternType='solid', fgColor='00FF0000')
    
    
    #罫線設定
    ws["E2"].border = Border(left=Side(border_style='thin'), right=Side(border_style='double'),top=Side(border_style='dashDot'),bottom=Side(border_style='hair'))
    
    
    #配置
    ws["G2"].alignment = Alignment(horizontal='right', vertical='top', wrap_text=True)
    ws["G3"].alignment = Alignment(horizontal='left', vertical='center', shrink_to_fit=True)
    
    
    #表示形式
    ws["I3"].number_format = 'yyyy"年"m"月"d"日"'
    ws["I4"].number_format = 'yyyy/m/d'
    
    
    #---------------------------------------------------------------------------
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/書式.xlsx')

    上記のコードが正常に実行されると画像のように各種設定が変更されます。他の線種や色の設定も出来ますので、それらについても今後情報を追記していこうと思います。

    3.終わりに

    今回はセルの書式設定変更のイメージを掴んでもらうため、各設定の書き方や実行結果を紹介しました。今後他の種類や実践的な使い方(繰返し文を利用して表題の色を変えた表の作成など)も紹介していきたいと思います。

  • 【基本】セルの操作

    openpyxlでのセルの操作方法を紹介します。セルの値を別シートや別ファイルに書き写す場合に、今回紹介するセルの値の取得・書き込みはいわゆるコピー&ペーストとして使います。書き方が何通りかありややこしいので、サンプルコードと実行後の画面と共に紹介します。

     

     

    1.セルの値の取得

    シートの取得と同じようにセルの取得にも方法がいくつかあります。

    方法書き方例特徴
    aセルの番地で指定cell1 = ws[“C1”]・セルの指定が分かりやすい
    b列と行を引数で指定cell2 = ws.cell(row=1, column=3)・繰返し文を使うことで複数のセルを一度に処理できる
    c「b」で引数名を省略cell3 = ws.cell(1, 3)・コードが短くて済む
    ・慣れていないと間違えやすい
    上記3種類はすべて「C1」セルを指定

    セルの取得方法を紹介しましたが、実際にプログラムを書く際にはセルの”値”の取得をよく使います。上記のセルの取得だと指定したセルの番地情報を取得してしまい、Excelに入力することはほとんどありません。セルの値の取得だとセル内にある数値もしくは文字列を取得します。

    セルの値を取得するにはセルの取得コードの終わりに「.value」を書きます。セル取得コードの書き方は先ほど紹介したどの方法でも構いません。実際の使用例はセルの書き込みとあわせて次で紹介します。

    #セルの取得とセルの値の取得
    cell = ws["A2"]
    cell-value = ws["A2"].value
    
    #それぞれの出力結果(「操作」シートのA2に4月と入力されている場合)
    print(cell)        #出力結果: <Cell '操作'.A2>
    print(cell-value)     #出力結果:4月

     

    2.セルの書き込み・削除

    先ほどまでの取得だと変数にデータを「格納」しただけですので、データをExcelへ「出力」する必要があります。コピー&ペーストで言うと取得がコピー、書き出しがペーストとなります。

    書き込み方法は、「書き込みたいセル番地.value = 取得した値」と値を代入するだけです。

    ここまで紹介してきた内容を実行する場合のコードと結果は次のようになります。

    from openpyxl import load_workbook
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')
    ws = wb["操作"]
    
    #セルの値の取得
    cell_a = ws["A2"].value
    cell_b = ws.cell(row=3, column=1).value
    cell_c = ws.cell(4, 1).value
    
    
    #セルの書き込み
    ws["C2"].value = cell_a
    ws.cell(row=3, column=3).value = cell_b
    ws.cell(4, 3).value = cell_c
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/セル操作.xlsx')

    プログラムを実行して対象ファイルを開くと画像のように、A列の入力内容がC列に書き込まれています。パターンa~cとありますが、「1.セルの値の取得」で紹介した3パターンの書き方すべてを試しています。

    また今回指定したセル.valueに値を代入しましたが、以下のように代入値に「None」と書くと入力内容が削除されます。

    #セルの値の削除
    ws["C2"].value = None
    ws.cell(row=3, column=3).value = None
    ws.cell(4, 3).value = None

     

    3.終わりに

    Excel上で値の取得、書き込み、削除の紹介をしました。これらの操作はExcelを編集するうえで頻繁に使うので慣れておきましょう。書き方については3通り紹介しましたが、すべて覚える必要はありません。しかしパターンaはシンプルで覚えやすいですが、パターンb、パターンcは複数行を繰り返し文で操作する際に便利なので、後者の使い方に慣れておくことをオススメします。

  • 【基本】シートの操作

    エクセルを編集する上でシート操作を使うことは多いと思います。なのでここではopenpyxlでできるシート操作をいくつか紹介したいと思います。

     

    1.シートの取得

    シートの取得とは操作するシートを指定することです。シートの取得方法は以下の3通りがあります。

    方法書き方例特徴
    aシート名を指定a = wb[“3月”]・書き方が分かりやすい
    ・シートの順番が変わっても変更不要
    bインデックスで指定wb.worksheets[4]・シート名に左右されない
    ・シート番号は0からカウントされることに注意
    cアクティブシートを取得c = wb.active自由度は低いが簡単

    次の画像は最後に「6月」シートをアクティブにしていた場合の以下のコード実行結果です。

    from openpyxl import load_workbook
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')
    #パターンa
    a = wb["3月"]
    a.cell(row = 1, column = 1).value = "パターンa"
    #パターンb:インデックス番号に「4」を指定しているので、0,1,2,3,4となり左から5番目の「5月」シートを取得
    b = wb.worksheets[4]
    b.cell(row = 1, column = 1).value = "パターンb"
    #パターンc:ファイルを閉じる直前に選択していた「6月」シートを取得
    c = wb.active
    c.cell(row = 1, column = 1).value = "パターンc"
    wb.save('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')

    正しく実行されると指定したシートに文字が入力されます。

     

    2.シートの作成

    新規シートはcreate_sheet()で作り、()内の引数titleにシート名を書きます。
    例として「1.シートの取得」で使用したファイルに「7月」シートを作成すると次のようになります。

    from openpyxl import load_workbook
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')
    #新たに「7月」シート作成
    d = wb.create_sheet(title="7月")
    wb.save('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')

     

    3.シートの削除

    シートを削除したい場合はremove()です。Excelファイルを新しく作成した際に初期からある「Sheet1」を消したい場合などに使用します。ここでは「2.シートの作成」で作った「7月」シートを削除してみます。

    from openpyxl import load_workbook
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')
    #削除するシート名を指定
    wb.remove(wb["7月"])
    wb.save('C:/Users/1/Desktop/python/openpyxl/シート操作.xlsx')

     

    4.終わりに

    操作したいシート取得の書き方シートの作成・削除コマンドの使い方を紹介しました。新しくExcelファイルを作成するうえで、これらの操作は使用頻度が多いのでよく覚えておきましょう。

  • 【基本】インストールからブックの作成・保存

    PythonでExcelを操作するのにメジャーなopenpyxl。このページではopenpyxlのインストールから基本となるブックの作成・保存までの方法を書いていきます。

    1.ライブラリのインストール

    まず準備としてPythonでExcel操作に必要なライブラリ(openpyxl)をインストールするため、以下のコマンドを実行してください。実行してエラーメッセージが出なければインストール成功です。

    pip install openpyxl

    2.ブックの新規作成・保存

    インストールが終わったところで、ここからは実際にExcelファイルを作成して操作していきます。Excelで操作するオブジェクトはブック(Excelファイル)、シート、セルの3つとなります(下図参照)。

    Excelファイルを操作する際には主に、「新しいファイルを作成・編集して名前を付けて保存」「すでにあるデータを開いて編集・上書き保存」の2通りがありますが、まずは「新しいファイルを作成・編集して名前を付けて保存」の方法を紹介します。

    以下のコードを実行してください。

    正しく実行されると指定した場所に自分で設定したファイル名のExcelファイルが作成・保存されています。

    使用したコマンドの説明をすると、

    Workbook( ):Excelファイルを新規作成

    Workbook().save(‘C:/Users/…/新規作成.xlsx’):saveコマンドを使い、後述のフォルダに名前を付けて保存

    またコードが長くなり、何度もWorkbook( )を書くことになる場合は、変数に置き換えることで入力の手間を減らすことができます。

    from openpyxl import Workbook
    
    Workbook()
    
    #Workbook()を変数に置き換え
    wb = Workbook()
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/新規作成.xlsx')

    3.既存のブックを保存

    先ほどは新規のエクセルファイルを作りましたが、次は既存のファイルをロードして上書き・別名保存をする方法を紹介します。指定のフォーマットとなるファイルを操作、毎月データを更新する際に便利です。

    上記で作成した新規作成ファイルをロードして上書き保存しています。中身は変えていないのでファイルを開いても違いは分かりませんが、正しく実行されていたら実行前と後でファイルの更新時間が違うので確認してください。

    ファイルの新規作成と違って今回はload_workbookをインポートして、ロードした新規作成ファイルを変数wbに入れ、同じファイル名で保存することで上書き保存しています。

    また下記のように保存時にファイル名を変えることで、上書き保存でなく別名保存することもできます。

    from openpyxl import load_workbook
    
    wb = load_workbook('C:/Users/1/Desktop/python/openpyxl/新規作成.xlsx')
    
    wb.save('C:/Users/1/Desktop/python/openpyxl/上書きファイル.xlsx')

    正しく実行されると画像のように基データはそのままに、元データをロードした別名ファイルが指定した場所に作成・保存されます。

     

    4.終わりに

    openpyxlを使う際の準備としてopenpyxlのインストールの仕方、新規ファイルの作成・保存、既存ファイルのロード・保存の方法を紹介しました。
    openpyelでは他にも様々な操作が可能ですが、基本的には今回紹介した内容を毎回使用するので、書き方を忘れてしまった際の確認用としてもご使用ください。