バタイユゲーム支援ツールに会戦固有情報を設定するpythonプログラムを
改修したので、変更概要を以下にメモしておく。
1.改修概要
(1)ユニット基本情報を設定する処理を追加した。
(2)ユニット基本情報は会戦毎に数が変動するので、必要な数だけ設定する。
2.改修内容
(1)基本情報は下図枠内のユニットカウンターを見つけて、コピー範囲を決める。
(2)砲兵情報はユニット種別を見て別シートにコピーする。
→砲撃処理の時に検索データ数を抑える為。例)基本情報141に対して砲兵情報は19で済む。
<個人的な感想>
pythonは使いやすいと改めて実感した。
プログラムソースを下記に示す。(EXCELシートにendofdataを追加した改訂版)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import xlwings as xw | |
#支援ツールのあるディレクトリと名称を設定 | |
dir_name = 'D:\WORK\\temp\BatailleWK' | |
tool_name= 'D:\WORK\\temp\BatailleWK\Bataille.xlsm' | |
#外部データのファイル名、シート名、コピー範囲、支援ツールのシート名を設定 | |
#(注意事項)ゲームに応じて外部データのシート名称(2列目のデータ)を変更 | |
table_name =[['moralesheet','Gross','A1:i50','部隊モラル表'], | |
['Carresheet','Berlin','A1:S39','方陣表'], | |
['Enviroment','Gross','A1:E75','環境表'], | |
['Reinforce','Blanken','A1:G75','増援表'], | |
['RFtroop','Blanken','A1:AO49','部隊別表'], | |
['Nation','1813','A1:I50','def'], | |
['Fireffect','1813','A1:C70','frdef'], | |
['moraleaddr','Berlin','L1:Q21','def'], | |
['UnitInfo_1813Grossbeeren_FrV2R1','accu','A1:O300','Frica'], | |
['UnitInfo_1813Grossbeeren_PrV2R1','accu','A1:O300','Alica'] | |
] | |
endofdata=['++++++++++++++++++++ End of Data ++++++++++++++++++++', | |
None,None,None,None,None,None,None, | |
None,None,None,None,None,None,None] #データの終わりが見て分かるようにする為 | |
#支援ツールを開く | |
wb0=wx.Book(tool_name) | |
#外部データを支援ツールにコピー | |
for i in range(len(table_name)): | |
file_name=dir_name+'\\'+table_name[i][0]+'.xlsx' | |
wb1=wx.Book(file_name) | |
sheet1=wb1.sheets[table_name[i][1]] | |
if table_name[i][1]=="accu": | |
inum=int(sheet1.range("K1").value) #ユニットカウンター | |
txt_num="A1:O"+str(inum) | |
my_values =sheet1.range(txt_num).options(ndim=2).value | |
my_values.append(endofdata) | |
sheet0=wb0.sheets[table_name[i][3]] | |
sheet0.range('A1').value = my_values | |
alist=[] | |
alist.append(my_values[0]) | |
a_num=2 | |
for j in range(1,inum): | |
if my_values[j][9]=="2art": | |
alist.append(my_values[j]) | |
a_num+=1 | |
alist[0][10]=a_num | |
alist.append(endofdata) | |
if table_name[i][3]=="Frica": | |
sheet1=wb0.sheets['Frart'] | |
else: | |
sheet1=wb0.sheets['Alart'] | |
sheet1.range('A1').value = alist | |
else: | |
my_values =sheet1.range(table_name[i][2]).options(ndim=2).value | |
sheet0=wb0.sheets[table_name[i][3]] | |
sheet0.range(table_name[i][2]).value = my_values | |
wb1.close() | |
#支援ツールをセーブして閉じる | |
wb0.save(path=None) | |
app = xw.apps.active | |
app.kill() |