勤怠管理ソフトと連携させたい

解出力をCSVで出力させます。

勤怠管理ソフトがExcelで読めるものであれば、その勤怠管理フォーマットに合わせてCSVで出力させることが可能です。 Pythonを使えば、任意のフォーマットにプログラムすることが出来るので連携が可能になると思います。

なお、Excelで出力する方法もありますが、遅いのでCSVで出力させることをお勧めします。

Pythonポストで記述します。 詳しくは、Pythonポスト処理 をご参照ください。

ポータブルなコードですので、移植は容易です。



求解

ポスト処理を有効にするには、次をチェックする必要があります。



動作例

求解が終了すると、Pythonポスト処理プログラムが起動します。
以下は、今回作成したプログラムでの処理例になります。

CSVファイルを出力するかどうかを尋ねられます。 (煩わしければ、Pythonポスト処理のチェックをオフにすると、Post処理がイネーブルされません。)



保存先を求められるので名前を付けて保存します。



CSVファイルが生成されます。
ExcelでCSVファイルは直接読み込むことが出来ます。



Pythonコード

import sc3
import ctypes
import win32gui, win32con, os
import csv

def output_csv():# Header 1行(今月日付List)後にスタッフ名、シフト....
    filter='csv\0*.csv\0'
    customfilter='Other file types\0*.*\0'
    fname, customfilter, flags=win32gui.GetSaveFileNameW(
    InitialDir=project_file_path, 
    Flags=win32con.OFN_ALLOWMULTISELECT|win32con.OFN_EXPLORER,
    File=project_file_name, DefExt='csv',
    Title='名前を付けて保存',
    Filter=filter,
    CustomFilter=customfilter,
    FilterIndex=0)
    print ('保存ファイル名:', repr(fname))
    print(fname,flags)
    今月名前付き解=[]
    row=0
    list=[]
 
    #Header作成
    list.append('')
    for day in 今月:#今月分のみ出力する
        day_name=daydef[day]
        list.append(day_name)
    今月名前付き解.append(list)
    #Data
    for name in staffdef:
        list=[]
        list.append(name)
                
        for day in 今月:#今月分のみ出力する
            str=shift_solution[row][day]
            list.append(str)
        今月名前付き解.append(list)
        row +=1

    with open(fname, 'w',newline="") as f:#改行なしにする
        writer = csv.writer(f)
        writer.writerows(今月名前付き解)#shift_solution

def output_csv_question():
    MessageBox = ctypes.windll.user32.MessageBoxW
    res=MessageBox(HWND, 'CSVを出力しますか?', 'CSVを出力', 3)#HWNDダイアログを前面に出す
    #print(res)
    if res==7 or res==2:##いいえ、キャンセル
        return False
    output_csv()#CSV出力

def post_main():
    output_csv_question()

プロジェクト

プロジェクトは、以下です。

ダウンロード して、実装の参考にしてください。