Exemplo n.º 1
0
        private void SaveXLS(Patient patient)
        {
            if (patient.results.Count > 0)
            {
                try
                {
                    // Открываем приложение
                    application = new Microsoft.Office.Interop.Excel.Application
                    {
                        DisplayAlerts = false
                    };

                    // Файл шаблона
                    const string template = "resources/template.xlt";

                    // Открываем книгу
                    workBook = application.Workbooks.Open(Path.Combine(Environment.CurrentDirectory, template));

                    // Получаем активную таблицу
                    worksheet = workBook.ActiveSheet as Worksheet;

                    // Записываем данные
                    //worksheet.Range["A2"].Value = DateTime.Now;
                    worksheet.Range["A1"].Value = "Название сеанса";
                    worksheet.Range["B1"].Value = "Дата";
                    worksheet.Range["C1"].Value = "Продолжительность";
                    worksheet.Range["D1"].Value = "Горизонтальное отклонение";
                    worksheet.Range["E1"].Value = "Горизонтальное отклонение (динамика)";
                    worksheet.Range["F1"].Value = "Вертикальное отклонение";
                    worksheet.Range["G1"].Value = "Вертикальное отклонение (динамика)";
                    worksheet.Range["H1"].Value = "Попадания";
                    worksheet.Range["I1"].Value = "Промахи";
                    worksheet.Range["J1"].Value = "Баллы";
                    worksheet.Range["K1"].Value = "Комментарий";
                    for (int i = 0; i < patient.results.Count; i++)
                    {
                        worksheet.Range["A" + (i + 2).ToString()].Value = patient.results[i].Name;
                        worksheet.Range["B" + (i + 2).ToString()].Value = patient.results[i].Date.ToShortDateString() + " " + patient.results[i].Date.ToShortTimeString();
                        worksheet.Range["C" + (i + 2).ToString()].Value = patient.results[i].Length.ToString();
                        worksheet.Range["D" + (i + 2).ToString()].Value = patient.results[i].HorDev.ToString();
                        worksheet.Range["E" + (i + 2).ToString()].Value = patient.results[i].HorDevDin.ToString();
                        worksheet.Range["F" + (i + 2).ToString()].Value = patient.results[i].VerDev.ToString();
                        worksheet.Range["G" + (i + 2).ToString()].Value = patient.results[i].VerDevDin.ToString();
                        worksheet.Range["H" + (i + 2).ToString()].Value = patient.results[i].Hit.ToString();
                        worksheet.Range["I" + (i + 2).ToString()].Value = patient.results[i].Miss.ToString();
                        worksheet.Range["J" + (i + 2).ToString()].Value = patient.results[i].Balls.ToString();
                        worksheet.Range["K" + (i + 2).ToString()].Value = patient.results[i].Comment;
                    }
                    bufar = patient.AverageResult();
                    worksheet.Range["A" + (patient.results.Count + 4).ToString()].Value = "Средний результат";
                    worksheet.Range["C" + (patient.results.Count + 4).ToString()].Value = bufar.Length.ToString();
                    worksheet.Range["D" + (patient.results.Count + 4).ToString()].Value = bufar.HorDev.ToString();
                    worksheet.Range["E" + (patient.results.Count + 4).ToString()].Value = bufar.HorDevDin.ToString();
                    worksheet.Range["F" + (patient.results.Count + 4).ToString()].Value = bufar.VerDev.ToString();
                    worksheet.Range["G" + (patient.results.Count + 4).ToString()].Value = bufar.VerDevDin.ToString();
                    worksheet.Range["H" + (patient.results.Count + 4).ToString()].Value = bufar.Hit.ToString();
                    worksheet.Range["I" + (patient.results.Count + 4).ToString()].Value = bufar.Miss.ToString();
                    worksheet.Range["J" + (patient.results.Count + 4).ToString()].Value = bufar.Balls.ToString();
                    worksheet.Range["K" + (patient.results.Count + 4).ToString()].Value = bufar.Comment;
                    bufbr = patient.BestResults();
                    worksheet.Range["A" + (patient.results.Count + 5).ToString()].Value = "Лучший результат";
                    worksheet.Range["C" + (patient.results.Count + 5).ToString()].Value = bufbr.Length.ToString();
                    worksheet.Range["D" + (patient.results.Count + 5).ToString()].Value = bufbr.HorDev.ToString();
                    worksheet.Range["E" + (patient.results.Count + 5).ToString()].Value = bufbr.HorDevDin.ToString();
                    worksheet.Range["F" + (patient.results.Count + 5).ToString()].Value = bufbr.VerDev.ToString();
                    worksheet.Range["G" + (patient.results.Count + 5).ToString()].Value = bufbr.VerDevDin.ToString();
                    worksheet.Range["H" + (patient.results.Count + 5).ToString()].Value = bufbr.Hit.ToString();
                    worksheet.Range["I" + (patient.results.Count + 5).ToString()].Value = bufbr.Miss.ToString();
                    worksheet.Range["J" + (patient.results.Count + 5).ToString()].Value = bufbr.Balls.ToString();
                    worksheet.Range["K" + (patient.results.Count + 5).ToString()].Value = bufbr.Comment;
                    //сохранение
                     SaveFileDialog sfd = new SaveFileDialog();
                    sfd.Filter = "Таблица результатов пациентов (*.xls)|*.xls";
                    sfd.FileName = patient.Name + "_результаты" + ".xls";
                    if (sfd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                        workBook.SaveAs(sfd.FileName);

                    //закрытие процесса
                    if (application != null)
                    {
                        int excelProcessId = -1;
                        GetWindowThreadProcessId(application.Hwnd, ref excelProcessId);

                        Marshal.ReleaseComObject(worksheet);
                        workBook.Close();
                        Marshal.ReleaseComObject(workBook);
                        application.Quit();
                        Marshal.ReleaseComObject(application);

                        application = null;
                        // Прибиваем висящий процесс
                        try
                        {
                            Process process = Process.GetProcessById(excelProcessId);
                            process.Kill();
                        }
                        finally { }
                    }
                }
                catch (Exception)
                {
                    MessageBox.Show("Произошла непредвиденная ошибка, попробуйте ещё раз", "Внимание");
                }
            }
        }
Exemplo n.º 2
0
 //загрузка информации
 private void FinishShowInfo(Patient patient)
 {
     try
     {
         //создание файла
         if (!((patient.currentSession != -1 && patient.currentSession < patient.sessions.Count)
             && (patient.currentLevel != -1 && patient.currentLevel < patient.levels.Count)))
         {
             MessageBox.Show("Ошибка создания файла, возможно невыбраны какие-то параметры", "Внимание");
             return;
         }
         pictureBoxFinishLoading.Image = Gamma.Properties.Resources.loading;
         pictureBoxFinishLoading.Visible = true;
         //создание файла
         SaveFileDialog sfd = new SaveFileDialog();
         InnerData.Write("buf.gsf", new InnerData(patient));
         //запуск лаунчера
         Process visual = new Process();
         visual.StartInfo.FileName = "gammaLauncher.exe";
         visual.StartInfo.Arguments = string.Format("-load \"{0}\"", "buf.gsf");
         visual.Start();
         visual.WaitForExit();
         //удаление файла
         if (File.Exists("buf.gsf"))
             File.Delete("buf.gsf");
         //считывание результатов
         if (File.Exists(resultsFile))
             ResultsToPatients();
         else
         {
             MessageBox.Show("Невозможно считать файл результатов, возможно сеанс не завершен или файл поврежден", "Внимание");
             return;
         }
         pictureBoxFinishLoading.Image = null;
         pictureBoxFinishLoading.Visible = false;
         MessageBox.Show("Поздравляем с успешным окончанием сеанса", "Внимание");
         //вывод результатов на панель
         patient = patientsList.patients[patientsList.currentPatient];
         textBoxFinishPacient.Text = patient.Name;
         if (patient.results.Count > 0)
         {
             textBoxFinishBalls.Text = patient.results[patient.results.Count - 1].Balls.ToString();
             listViewFinishCurrentResult.Items.Clear();
             listViewFinishCurrentResult.Items.Add(new ListViewItem(new string[] {patient.results.Count.ToString(),
             patient.results[patient.results.Count - 1].Name + " " + patient.results[patient.results.Count - 1].Date.ToString(),
             patient.results[patient.results.Count - 1].Length.ToString(),
             patient.results[patient.results.Count - 1].HorDev.ToString(),
             patient.results[patient.results.Count - 1].HorDevDin.ToString(),
             patient.results[patient.results.Count - 1].VerDev.ToString(),
             patient.results[patient.results.Count - 1].VerDevDin.ToString(),
             patient.results[patient.results.Count - 1].Hit.ToString(),
             patient.results[patient.results.Count - 1].Miss.ToString(),
             patient.results[patient.results.Count - 1].Balls.ToString()
         }));
             listViewFinishResults.Items.Clear();
             listViewFinishResults.Items.Add(new ListViewItem(new string[] {
             "Среднее по сеансам",
             patient.AverageResult().Length.ToString(),
             patient.AverageResult().HorDev.ToString(),
             patient.AverageResult().HorDevDin.ToString(),
             patient.AverageResult().VerDev.ToString(),
             patient.AverageResult().VerDevDin.ToString(),
             patient.AverageResult().Hit.ToString(),
             patient.AverageResult().Miss.ToString(),
             patient.AverageResult().Balls.ToString()
         }));
             listViewFinishResults.Items.Add(new ListViewItem(new string[] {
             "Лучшее по сеансам",
             patient.BestResults().Length.ToString(),
             patient.BestResults().HorDev.ToString(),
             patient.BestResults().HorDevDin.ToString(),
             patient.BestResults().VerDev.ToString(),
             patient.BestResults().VerDevDin.ToString(),
             patient.BestResults().Hit.ToString(),
             patient.BestResults().Miss.ToString(),
             patient.BestResults().Balls.ToString()
         }));
         }
         else
         {
             MessageBox.Show("Не обнаружено ни одного результата. Возможно, был поврежден файл данных", "Внимание");
         }
     }
     catch(Exception)
     {
         MessageBox.Show("Во время запуска или выполнения сеанса произошла ошибка, попробуйте еще раз или запустите сеанс из отдельного файла.", "Внимание");
     }
 }
Exemplo n.º 3
0
 //загрузка информации в окно
 private void ResultsShowInfo(Patient patient)
 {
     resPatient = patient;
     textBoxResultsPatient.Text = patient.Name;
     textBoxResultsPacientDoneSessions.Text = patient.results.Count.ToString() + " сеансов";
     if (patient.results.Count >= 1)
     {
         int time = 0;
         for (int i = 0; i < patient.results.Count; i++)
         {
             time += patient.results[i].Length;
         }
         int minutes = time / 60;
         time -= minutes * 60;
         textBoxResultsPacientDoneTime.Text = minutes.ToString() + "мин " + time.ToString() + "сек";
         textBoxResultsPacientFirst.Text = patient.results[0].Date.ToString();
         textBoxResultsPacientsLatest.Text = patient.results[patient.results.Count - 1].Date.ToString();
         //среднее и максимальное
         listViewResultsSum.Items.Clear();
         listViewResultsSum.Items.Add(new ListViewItem(new string[] {
             "Среднее по сеансам",
             patient.AverageResult().Length.ToString(),
             patient.AverageResult().HorDev.ToString(),
             patient.AverageResult().HorDevDin.ToString(),
             patient.AverageResult().VerDev.ToString(),
             patient.AverageResult().VerDevDin.ToString(),
             patient.AverageResult().Hit.ToString(),
             patient.AverageResult().Miss.ToString(),
             patient.AverageResult().Balls.ToString()
         }));
         listViewResultsSum.Items.Add(new ListViewItem(new string[] {
             "Лучшее по сеансам",
             patient.BestResults().Length.ToString(),
             patient.BestResults().HorDev.ToString(),
             patient.BestResults().HorDevDin.ToString(),
             patient.BestResults().VerDev.ToString(),
             patient.BestResults().VerDevDin.ToString(),
             patient.BestResults().Hit.ToString(),
             patient.BestResults().Miss.ToString(),
             patient.BestResults().Balls.ToString()
         }));
         //список
         listViewResults.Items.Clear();
         for (int i = 0; i < patient.results.Count; i++)
         {
             listViewResults.Items.Add(new ListViewItem(new string[] {
                 (i+1).ToString(),
                 patient.results[i].date.ToString() + " '" + patient.results[i].name +"'",
                 patient.results[i].Length.ToString(),
                 patient.results[i].HorDev.ToString(),
                 patient.results[i].HorDevDin.ToString(),
                 patient.results[i].VerDev.ToString(),
                 patient.results[i].VerDevDin.ToString(),
                 patient.results[i].Hit.ToString(),
                 patient.results[i].Miss.ToString(),
                 patient.results[i].Balls.ToString()
             }));
         }
     }
 }