private void ListView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!(ListView.SelectedItem is JudgeInfo a)) { return; } var details = "详情:\n"; if (a.Result != null) { for (var i = 0; i < a.Result.Length; i++) { details += $"#{i + 1} 时间:{a.Timeused[i]}ms,内存:{a.Memoryused[i]}kb,退出代码:{a.Exitcode[i]},结果:{a.Result[i]},分数:{a.Score[i]}\n"; } } details += "\n其他信息:\n" + a.AdditionInfo; JudgeDetails.Text = details; Code.Text = "代码:\n" + (string.IsNullOrEmpty(a.Code) ? a.Code = Connection.GetJudgeCode(a.JudgeId)?.Code ?? string.Empty : a.Code); }
private void Export_MouseDown(object sender, MouseButtonEventArgs e) { var a = (from c in _curJudgeInfo where c.IsChecked select c).ToList(); if (a.Any(i => i.ResultSummary == "Judging...")) { MessageBox.Show("你选择的项目中部分仍在评测,请等待评测完毕再导出", "提示", MessageBoxButton.OK, MessageBoxImage.Information); return; } if (a.Any()) { var sfg = new SaveFileDialog { Title = "保存导出数据:", Filter = "Excel 文件|*.xlsx" }; if (!(sfg.ShowDialog() ?? false)) { return; } var dt = new DataTable("结果"); dt.Columns.Add("姓名"); dt.Columns.Add("题目名称"); dt.Columns.Add("评测描述"); dt.Columns.Add("评测时间"); dt.Columns.Add("最长时间 (ms)"); dt.Columns.Add("最大内存 (kb)"); dt.Columns.Add("结果"); dt.Columns.Add("分数"); dt.Columns.Add("代码 (Base64)"); dt.Columns.Add("代码类型"); foreach (var i in a) { var dr = dt.NewRow(); dr[0] = i?.UserName ?? string.Empty; dr[1] = i?.ProblemName ?? string.Empty; dr[2] = i?.Description ?? string.Empty; dr[3] = i?.JudgeDate ?? string.Empty; dr[4] = i?.Timeused?.Max() ?? 0; dr[5] = i?.Memoryused?.Max() ?? 0; dr[6] = i?.ResultSummary ?? string.Empty; dr[7] = i?.FullScore ?? 0; try { var bytes = Encoding.Default.GetBytes(string.IsNullOrEmpty(i?.Code ?? string.Empty) ? i.Code = Connection.GetJudgeCode(i.JudgeId).Code : i.Code); dr[8] = Convert.ToBase64String(bytes); } catch { dr[8] = string.Empty; } dr[9] = i?.Type ?? string.Empty; dt.Rows.Add(dr); } try { ExcelUtility.CreateExcel(sfg.FileName, new[] { dt }, new[] { "结果" }); MessageBox.Show("导出成功", "提示", MessageBoxButton.OK, MessageBoxImage.Information); } catch (Exception ex) { MessageBox.Show($"导出失败,因为 {ex.Message}", "提示", MessageBoxButton.OK, MessageBoxImage.Error); } } else { MessageBox.Show("没有要导出的数据", "提示", MessageBoxButton.OK, MessageBoxImage.Error); } }