def __init__(self, anzahl, ligaebene, liganame): self.anzahl = anzahl self.ligaeben = ligaebene self.Ligaa = [] self.Liganame = liganame self.Spielplan = [] spieltag_nr = 1 # aus data zu Objekten for i in range(0, sheet.nrows, 8): spieler = [] if liganame == data[i][0]: for j in range(0, 8, 1): Array = [ data[i + j][3], data[i + j][4], data[i + j][5], data[i + j][6], 0, 0, 0 ] for k in range(8, sheet.ncols, 1): Array.append(data[i + j][k]) spieler.append(Array) team_a = Verein(data[i][1], data[i][2], spieler, 0, 0, 0, 0, 0, 0) self.Ligaa.append(team_a) spielplan = self.spielplanGenerator(anzahl) self.menu(spielplan, spieltag_nr) # self.alterung() # aus Objekten zu Excel try: wb = xw.Book("Input.xlsx") sht = xw.sheets("Tabelle1") print("Moment,speichern.....") for i in range(0, len(self.Ligaa) * 8, 8): sht.range((i + 1, 1)).value = self.Liganame sht.range((i + 1, 2)).value = self.Ligaa[int(i / 8)].Name for j in range(0, 8, 1): sht.range((i + j + 1, 4)).value = self.Ligaa[int(i / 8)].Spieler[j] wb.save() # speichern, da sonst Änderungen nicht geladen werden wb.close() except: print("Bitte Input-Datei schließen, und mit 0 bestätigen") eing = input() wb = xw.Book("Input.xlsx") sht = xw.sheets("Tabelle1") print("Moment,speichern.....") for i in range(0, len(self.Ligaa) * 8, 8): sht.range((i + 1, 1)).value = self.Liganame sht.range((i + 1, 2)).value = self.Ligaa[int(i / 8)].Name for j in range(0, 8, 1): sht.range((i + j + 1, 4)).value = self.Ligaa[int(i / 8)].Spieler[j] wb.save() # speichern, da sonst Änderungen nicht geladen werden wb.close()
def __init__(self, team_a, team_b, zeile, SpieltagNr): self.TeamA = team_a self.TeamB = team_b self.zeile = zeile self.SpieltagNr = SpieltagNr self.ergeb = [[(0) for c in range(0, 16)] for r in range(0, 7)] print(team_a.Name + " - " + team_b.Name) # 2 zufälige Spieler nicht da # team_a ersatz: List[Any] = [] rd = random.randrange(0, 8) ersatz.append(team_a.Spieler[rd]) team_a.Spieler.pop(rd) rd = random.randrange(0, 7) ersatz.append(team_a.Spieler[rd]) team_a.Spieler.pop(rd) # team_b ersatz2 = [] rd = random.randrange(0, 8) ersatz2.append(team_b.Spieler[rd]) team_b.Spieler.pop(rd) rd = random.randrange(0, 7) ersatz2.append(team_b.Spieler[rd]) team_b.Spieler.pop(rd) for j in range(0, 6, 1): # Namen und Alter eintragen self.ergeb[j][0] = "(" + str(int( team_a.Spieler[j][2])) + ")" + str(team_a.Spieler[j][0]) self.ergeb[j][15] = "(" + str(int( team_b.Spieler[j][2])) + ")" + str(team_b.Spieler[j][0]) # Tagesform, beeinflusst Gesamtergebnis Spieler hrand_a = np.random.normal(1000, 30, 1) grand_a = np.random.normal(1000, 30, 1) for i in range(1, 5, 1): hrand = np.random.normal(1000, 70, 1) self.ergeb[j][i] = int(team_a.Spieler[j][1] * (hrand_a / 1000) * (hrand / 1000) / 4) # Ergebnis Spieler self.ergeb[j][5] += self.ergeb[j][i] grand = np.random.normal(1000, 70, 1) self.ergeb[j][i + 10] = int(team_b.Spieler[j][1] * (grand_a / 1000) * (grand / 1000) / 4) # Ergebnis Spieler self.ergeb[j][10] += self.ergeb[j][i + 10] # SP Spieler if self.ergeb[j][i + 10] > self.ergeb[j][i]: self.ergeb[j][9] += 1 elif self.ergeb[j][i + 10] == self.ergeb[j][i]: self.ergeb[j][9] += 0.5 # MP Spieler if self.ergeb[j][9] > 2: self.ergeb[j][8] = 1 elif self.ergeb[j][9] == 2: if self.ergeb[j][10] > self.ergeb[j][5]: self.ergeb[j][8] = 1 elif self.ergeb[j][10] == self.ergeb[j][5]: self.ergeb[j][8] = 0.5 # für statistikTeam, Anzahl Spiele und Gesamtholz hochzählen, Schnitt berechnen team_a.Spieler[j][4] += self.ergeb[j][5] team_a.Spieler[j][5] += 1 team_a.Spieler[j][6] = team_a.Spieler[j][4] / team_a.Spieler[j][5] team_a.Spieler[j].append(self.ergeb[j][5]) team_b.Spieler[j][4] += self.ergeb[j][10] team_b.Spieler[j][5] += 1 team_b.Spieler[j][6] = team_b.Spieler[j][4] / team_b.Spieler[j][5] team_b.Spieler[j].append(self.ergeb[j][10]) # Punkte Heim # SP Spieler self.ergeb[j][6] = 4 - self.ergeb[j][9] # MP Spieler self.ergeb[j][7] = 1 - self.ergeb[j][8] # Gesamtholz Mannschaft self.ergeb[6][5] += self.ergeb[j][5] self.ergeb[6][10] += self.ergeb[j][10] # MP Gesamt self.ergeb[6][7] += self.ergeb[j][7] self.ergeb[6][8] += self.ergeb[j][8] # SP Gesa,t self.ergeb[6][6] += self.ergeb[j][6] self.ergeb[6][9] += self.ergeb[j][9] # MP für Gesamtholz if self.ergeb[6][5] > self.ergeb[6][10]: self.ergeb[6][7] += 2 elif self.ergeb[6][5] == self.ergeb[6][10]: self.ergeb[6][7] += 1 self.ergeb[6][8] += 1 else: self.ergeb[6][8] += 2 # Excel-Export try: sht = xw.sheets(str(SpieltagNr)) # TODO macht Programm langsam for i in range(0, len(self.ergeb)): for j in range(0, len(self.ergeb[i])): sht.range((i + 1 + zeile, j + 1)).value = self.ergeb[i][j] except: print("Bitte Input-Datei schließen!") # Tabellenpunkte if self.ergeb[6][7] > self.ergeb[6][8]: team_a.sieg(self.ergeb[6][7], self.ergeb[6][6], self.ergeb[6][5]) team_b.niederlage(self.ergeb[6][8], self.ergeb[6][9], self.ergeb[6][10]) elif self.ergeb[6][7] == self.ergeb[6][8]: team_a.unentschieden(self.ergeb[6][7], self.ergeb[6][6], self.ergeb[6][5]) team_b.unentschieden(self.ergeb[6][8], self.ergeb[6][9], self.ergeb[6][10]) else: team_b.sieg(self.ergeb[6][8], self.ergeb[6][9], self.ergeb[6][10]) team_a.niederlage(self.ergeb[6][7], self.ergeb[6][6], self.ergeb[6][5]) # nicht bereite Spieler wieder anhängen team_a.Spieler.append(ersatz[0]) team_a.Spieler.append(ersatz[1]) team_b.Spieler.append(ersatz2[0]) team_b.Spieler.append(ersatz2[1])
def main(): xw.sheets('data').activate() xw.Range('A1', index=False).value = df xw.sheets('grouped_data').activate() xw.Range('A1', index=False).value = groupedData
def main(): xw.sheets('Hoja1').activate() xw.Range('A1').value = u'Hola! Ya estás usando Python!' xw.Range('A2').value = u'El directorio de trabajo actual es:' xw.Range('A3').value = os.getcwd()
def process(): #%% import numpy as np import pandas as pd import os import xlwings as xw # wb=xw.Book.caller() sh_mapping = xw.sheets('mapping') sh_db = xw.sheets('Dashboard') driver_source = sh_db.range('driver_source').value t = read_as_plain_table(driver_source + '.mat') t['value'] = np.real(t['value']) l = t.loc[:, ['DriverID']].drop_duplicates().set_index(['DriverID']) r = t.pivot(index='DriverID', columns='parameter', values='value') t = l.merge(r, left_index=True, right_index=True) tdriver = t.copy() # series of checks # all(tmapping['DriverID'].isin(tdriver['DriverID'])) t = sh_mapping.range('a1').options(pd.DataFrame, expand='table').value t = t.merge(tdriver, how='left', right_index=True, left_on='DriverID') t = t.reset_index() def get_curve_type(rf): if rf in ('FinAA', 'GovBBB', 'IndBBB'): return 'CS' elif rf in ('GlobalEquityFactor'): return 'EQ' else: second = rf.split('.')[1] third = rf.split('.')[2] if second == 'Yield': return 'IR' elif second == 'Exchange': return 'FX' elif second in ['EquityIndex', 'Equity']: return 'EQ' elif second == 'ParCreditSpread': return 'CS' elif second == 'Commodity' or third == 'Com': return 'Com' t['CurveType'] = t['RiskFactorID'].apply(lambda x: get_curve_type(x)) t['g1Ord1'] = 0 t['g1Ord2'] = 0 t['g1Transform'] = t['model_id'].apply( lambda x: 'LogNormShift' if x == 'EV-MR' else 'LogNorm' if x == 'GBM' else 'Norm' if x == 'CS1' else 'LogNorm' if x == 'CS2' else 'ERROR') t['g1MeanFunc'] = t['model_id'].apply( lambda x: 'StandardLogNormMR' if x == 'EV-MR' else 'LogNormDrift' if x == 'GBM' else 'NormMR' if x == 'CS1' else 'LogNormMR' if x == 'CS2' else 'ERROR') def calculate_m(model, a, b): if model == 'EV-MR': return np.exp(-b / a) elif model == 'CS1': return 9999 else: return 0 t['g1Param_m'] = t.apply( lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1) t['g1Param_m'] = t.apply( lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1) def calculate_d(model, a): if model == 'EV-MR': return -a elif model == 'CS1': return 9999 else: return 0 t['g1Param_d'] = t.apply( lambda x: calculate_m(x['model_id'], x['a'], x['b']), axis=1) t['g1PerAnnumRF'] = 365 t['g1Param_s2'] = 0 t['g1Param_s3'] = 0 t['g1Floor'] = '-infinity' t['g1IdxRFs'] = np.cumsum(np.ones_like(t.index)) def calculate_beta(CurveType, beta): if CurveType in ['CS', 'EQ']: return beta elif CurveType in ['IR', 'FX', 'Com']: return 1 t['g1Betas'] = t.apply(lambda x: calculate_beta(x['CurveType'], x['beta']), axis=1) qm_rf = t.copy() # xw.view(tdriver,xw.sheets('data')) xw.view(qm_rf, xw.sheets('Qm_risk_factor'))
cells_text.append([s.api.text for s in row]) # df生成 df = pd.DataFrame(cells_text[1:], dtype=object, columns=cells_text[0], index=None) # 余計なカラム行を削除 print('Remove unnecessary columns.') df = df[df[start_work_time_column_name] != start_work_time_column_name] # 残業時間列を生成 print('Create overtime data.') join_ex = lambda x: ':'.join(x[0]) if len(x) != 0 else "" df_zangyo = df[over_work_time_column_name].str.findall( '(\d{1,2})h(\d{1,2})m').apply(join_ex) df[over_work_time_column_name] = df_zangyo # 出力 print('Output to daily report sheet.') input_sheet = xw.sheets(input_sheet_name) input_sheet.range(start_work_time_range).options( index=False, header=False).value = df[start_work_time_column_name] input_sheet.range(end_work_time_range).options( index=False, header=False).value = df[end_work_time_column_name] input_sheet.range(over_work_time_range).options( index=False, header=False).value = df[over_work_time_column_name] print('--- End.')
def ExcelReadtoList(workbook_path='', row_size=2000, col_size=150, sheet=1, visible=True): """This Reads all values in the Workbook and Saves them in a Dict""" app = xw.App(visible=visible, add_book=False) wb = app.books.open(workbook_path) #wb.app.visible(True) #xw.App(visible=visible) #xw.Application(wb).visible = visible # Iterate over Sheets with Dictionary Results = {} # Final Result Result = {} # Row, Col and Sheet Initial Values endRow = row_size endCol = col_size sheetNo = sheet while True: # Iterate over all the Rows and Cols to obtain the fartest elemets in x and y try: carrier = wb.sheets(sheetNo).name except: wb.close() app.quit() print( 'Completed! Be noted maximum of %d rows and %d columns have been tested!!!' % (endRow, endCol)) #xw.App(visible=True) #xw.Application(wb).visible = True return Result # Return Dictionary print("Read: ", carrier) # quit() working_sheet = xw.sheets(sheetNo) # type: xw.Sheet values = working_sheet.range((1, 1), (endRow, endCol)).value # print(values) Results[carrier] = values maxCol = 1 for i in range(0, endRow): countCol = endCol - 1 for j in range(endCol - 1, -1, -1): if Results[carrier][i][j] != None: break else: countCol -= 1 if maxCol < countCol: maxCol = countCol maxRow = 1 for i in range(0, endCol): countRow = endRow - 1 for j in range(endRow - 1, -1, -1): if Results[carrier][j][i] != None: break else: countRow -= 1 if maxRow < countRow: maxRow = countRow Result[carrier] = working_sheet.range((1, 1), (maxRow + 1, maxCol + 1)).value sheetNo += 1