private void btnGetJVData_Click(object sender, EventArgs e) { if (this.textBox1.Text == "") { System.Media.SystemSounds.Asterisk.Play(); int num2 = (int)MessageBox.Show("保存するフォルダを選択してください。"); cOperateForm.enableButton(); return; } clsTrain cTrain = new clsTrain(this); // 出馬表の読み込み if (checkBox2.Checked) { if (cTrain.GetRaceCardFile(this.textBox1.Text) == "") { cOperateForm.enableButton(); return; } } var sw = new System.Diagnostics.Stopwatch(); sw.Start(); DateTime dt = DateTime.Now; string strlogS; strlogS = dt.ToString("HH:mm:ss") + " 調教データ取得開始しました。"; this.rtbData.Text = strlogS; cOperateForm.disableButton(); bool isReal = false; int index1 = 0; int index2 = 0; string str1 = System.Windows.Forms.Application.StartupPath + "\\"; string str2 = "Template.xlsx"; string str3 = "Template"; DateTime datetimeTarg = this.dateTimePicker1.Value; string str4 = datetimeTarg.ToString("yyyyMMdd"); List <string> stringList1 = new List <string>(); List <List <List <string> > > stringListListList = new List <List <List <string> > >(); List <string> stringList2 = new List <string>(); List <List <string> > stringListList1 = new List <List <string> >(); List <List <cRaceUma> > cRaceUmaListList = new List <List <cRaceUma> >(); List <cRaceUma> cRaceUmaList = new List <cRaceUma>(); int num1 = 0; int rowWrite = 1; OperateCSV operateCsv = new OperateCSV(); Microsoft.Office.Interop.Excel.Application appExl = null; Workbook wbCSV = null; Workbook wbTemplate = null; Worksheet wsCSV = null; Worksheet wsTemplate = null; string text = this.textBox1.Text; this.prgDownload.Maximum = 100; this.prgDownload.Value = 0; //if (this.isRunRaceReal(datetimeTarg)) //{ // isReal = true; //} // リアルタイムデータか判別する VBAと挙動が異なる TimeSpan timeSpan = new TimeSpan(7, 0, 0, 0); if (datetimeTarg > DateTime.Now - timeSpan) { isReal = true; } if (!this.isRunRace(datetimeTarg)) { System.Media.SystemSounds.Asterisk.Play(); int num3 = (int)MessageBox.Show("エラー"); cOperateForm.enableButton(); return; } List <string> placeInfoX; if (isReal) { placeInfoX = this.GetPlaceInfoReal(datetimeTarg); } else { placeInfoX = this.GetPlaceInfoX(datetimeTarg); } if (placeInfoX.Count == 0) { System.Media.SystemSounds.Asterisk.Play(); int num4 = (int)MessageBox.Show("エラー:会場が取得できません。"); cOperateForm.enableButton(); return; } foreach (string collplace in placeInfoX) { List <List <string> > raceNumInfoX = this.GetRaceNumInfoX(datetimeTarg, collplace); stringListListList.Add(raceNumInfoX); foreach (List <string> stringList3 in raceNumInfoX) { this.rtbData.Text = "出走馬取得中... " + collplace.Replace("競馬場", "") + Strings.StrConv(stringList3[0], VbStrConv.Wide, 0); List <cRaceUma> raceUmaX = this.GetRaceUmaX(datetimeTarg, collplace, stringList3[0]); cRaceUmaListList.Add(raceUmaX); ++num1; this.prgDownload.Value = 33 * num1 / (12 * placeInfoX.Count); } } this.prgDownload.Value = 33; this.rtbData.Text = "調教データ取得中"; List <string> tyoukyouDataAllX = this.GetTyoukyouDataAllX(datetimeTarg); appExl = new Microsoft.Office.Interop.Excel.Application(); appExl.Visible = false; wbCSV = appExl.Workbooks.Add(System.Type.Missing); wsCSV = wbCSV.ActiveSheet; wbTemplate = appExl.Workbooks.Open(Path.GetFullPath(str1 + str2)); wsTemplate = wbTemplate.Sheets[str3]; this.prgDownload.Value = 66; foreach (List <List <string> > stringListList2 in stringListListList) { foreach (List <string> stringList3 in stringListList2) { this.rtbData.Text = placeInfoX[index2].Replace("競馬場", "") + Strings.StrConv(stringList3[0], VbStrConv.Wide, 0) + ".csv\n" + (object)(index1 + 1) + " / " + (object)num1; // テンプレートシートの値の削除 wsTemplate.Cells[1, 1].ClearContents(); wsTemplate.Cells[1, 2].ClearContents(); Range usedRangeTemp = wsTemplate.UsedRange; object cell1 = wsTemplate.Cells[3, 1]; object cell2 = wsTemplate.Cells[usedRangeTemp.Rows.Count, 12]; Range rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.ClearContents(); // 調教データを反映 string[,] arrDataTyokyou; double[,] arrdblDataTyokyou; long cntRow = this.PutTyoukyouDataAllX(datetimeTarg, tyoukyouDataAllX, cRaceUmaListList[index1], out arrDataTyokyou, out arrdblDataTyokyou); cell1 = wsTemplate.Cells[3, 1]; cell2 = wsTemplate.Cells[3 + cntRow - 1, 3]; rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.Value = arrDataTyokyou; cell1 = wsTemplate.Cells[3, 4]; cell2 = wsTemplate.Cells[3 + cntRow - 1, 12]; rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.Value = arrdblDataTyokyou; // ファイル名の入力 wsTemplate.Cells[1, 1] = "TrainData_" + datetimeTarg.ToString("yyyyMMdd") + "_" + placeInfoX[index2].Replace("競馬場", "") + "_" + stringList3[0]; wsTemplate.Cells[1, 2] = stringList3[1]; string str5 = placeInfoX[index2].Replace("競馬場", "") + Strings.StrConv(stringList3[0], VbStrConv.Wide, 0) + ".csv"; // 小数点の表示 usedRangeTemp = wsTemplate.UsedRange; cell1 = wsTemplate.Cells[3, 5]; cell2 = wsTemplate.Cells[3 + cntRow - 1, 12]; rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.NumberFormatLocal = "0.0"; // 昇順ソート cell1 = wsTemplate.Cells[3, 1]; cell2 = wsTemplate.Cells[3 + cntRow - 1, 12]; rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.Sort(wsTemplate.Cells[3, 12], XlSortOrder.xlAscending); // 結果の反映 cell1 = wsTemplate.Cells[2, 152]; cell2 = wsTemplate.Cells[22, 158]; rangeTemp = wsTemplate.Range[cell1, cell2]; rangeTemp.Copy(); wsCSV.Cells[rowWrite, 1].PasteSpecial(XlPasteType.xlPasteValues); rowWrite += 22; // 個別ファイル出力 if (checkBox1.Checked) { cell1 = wsTemplate.Cells[3, 1]; cell2 = wsTemplate.Cells[3 + cntRow - 1, 12]; rangeTemp = wsTemplate.Range[cell1, cell2]; object[,] arrTmp = rangeTemp.Value; operateCsv.ConvertObjectToCsv(arrTmp, text + str5); } //appExl.DisplayAlerts = false; //wbTemplate.Save(); //appExl.DisplayAlerts = true; ++index1; this.prgDownload.Value = 66 + 34 * index1 / num1; //break; } ++index2; //break; } string str6 = "c" + str4 + ".csv"; appExl.DisplayAlerts = false; wbCSV.SaveAs(text + str6, 6); wbCSV.Close(System.Type.Missing, System.Type.Missing, System.Type.Missing); wbTemplate.Save(); wbTemplate.Close(System.Type.Missing, System.Type.Missing, System.Type.Missing); appExl.DisplayAlerts = true; appExl.Quit(); Marshal.ReleaseComObject(wsTemplate); Marshal.ReleaseComObject(wbTemplate); Marshal.ReleaseComObject(wsCSV); Marshal.ReleaseComObject(wbCSV); Marshal.ReleaseComObject(appExl); dt = DateTime.Now; this.rtbData.Text = strlogS; this.rtbData.Text += "\n"; this.rtbData.Text += dt.ToString("HH:mm:ss") + " " + str4 + "調教データ取得完了しました。"; this.AxJVLink1.JVClose(); System.Media.SystemSounds.Asterisk.Play(); this.prgDownload.Value = 100; System.Threading.Thread.Sleep(500); // 調教データ反映 if (checkBox2.Checked) { cTrain.ReflectTrainMain(); dt = DateTime.Now; this.rtbData.Text += "\n"; this.rtbData.Text += dt.ToString("HH:mm:ss") + " " + str4 + "調教データ反映完了しました。"; this.AxJVLink1.JVClose(); System.Media.SystemSounds.Asterisk.Play(); } cOperateForm.enableButton(); sw.Stop(); TimeSpan ts = sw.Elapsed; this.rtbData.Text += $"\n処理時間:{(ts.Minutes*60) + ts.Seconds}秒"; }
private void button5_Click(object sender, EventArgs e) { clsTrain cTrain = new clsTrain(this); cTrain.ReflectTrainMain(); }