Index: lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java =================================================================== diff -u -rf299a43b38f1c06f1c9a0810b3ae6205b10e0269 -r0183854a83e81ed8a7aaba05d684b7ac0945031a --- lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision f299a43b38f1c06f1c9a0810b3ae6205b10e0269) +++ lams_tool_assessment/src/java/org/lamsfoundation/lams/tool/assessment/service/AssessmentServiceImpl.java (.../AssessmentServiceImpl.java) (revision 0183854a83e81ed8a7aaba05d684b7ac0945031a) @@ -1734,17 +1734,11 @@ LinkedHashMap markSummary = getMarksSummaryForSession(userDtos, minGrade, maxGrade, 10); - // work out total marks so we can do percentages. need as float for the correct divisions - int totalNumEntries = 0; - for (Map.Entry entry : markSummary.entrySet()) { - totalNumEntries += entry.getValue(); - } - // Mark Summary Min, Max + Grouped Percentages summarySheet.addEmptyRow(); ExcelRow minMaxRow = summarySheet.initRow(); minMaxRow.addCell(getMessage("label.number.learners"), true); - minMaxRow.addCell(totalNumEntries); + minMaxRow.addCell(sessionDTO.getCount()); minMaxRow = summarySheet.initRow(); minMaxRow.addCell(getMessage("label.lowest.mark"), true); @@ -1772,7 +1766,7 @@ ExcelCell.BORDER_STYLE_BOTTOM_THIN); binSummaryRow.addCell(getMessage("label.number.learners"), true, ExcelCell.BORDER_STYLE_BOTTOM_THIN); binSummaryRow.addCell(getMessage("label.percentage"), true, ExcelCell.BORDER_STYLE_BOTTOM_THIN); - float totalNumEntriesAsFloat = totalNumEntries; + float totalNumEntriesAsFloat = sessionDTO.getCount(); for (Map.Entry entry : markSummary.entrySet()) { binSummaryRow = summarySheet.initRow(); binSummaryRow.addCell(entry.getKey()); @@ -1794,7 +1788,7 @@ ExcelRow userResultRow = summarySheet.initRow(); userResultRow.addCell(userDto.getLogin()); userResultRow.addCell(userDto.getFirstName() + " " + userDto.getLastName()); - userResultRow.addCell(userDto.getGrade()); + userResultRow.addCell(userDto.isResultSubmitted() ? userDto.getGrade() : "-"); } summarySheet.addEmptyRow(); } @@ -1953,24 +1947,31 @@ userResultRow.addCell(seconds); timeTakenCount++; timeTakenTotal += seconds; + } else { + userResultRow.addEmptyCell(); } + } else { + userResultRow.addEmptyCell(); } //mark - userResultRow.addCell(questionResult.getMark()); + //calculating markCount & markTotal + if (questionResult.getMark() != null && questionResult.getFinishDate() != null) { + userResultRow.addCell(questionResult.getMark()); + markCount++; + markTotal += questionResult.getMark(); + } else { + userResultRow.addEmptyCell(); + } + if (assessment.isAllowAnswerJustification()) { userResultRow.addCell(AssessmentEscapeUtils .escapeStringForExcelExport(questionResult.getJustification())); } questionSummaryTabTemp.add(userResultRow); - //calculating markCount & markTotal - if (questionResult.getMark() != null) { - markCount++; - markTotal += questionResult.getMark(); - } } } @@ -2736,6 +2737,10 @@ } for (AssessmentUserDTO userDto : userDtos) { + // skip learners who have not submitted answers + if (!userDto.isResultSubmitted()) { + continue; + } float grade = userDto.getGrade(); int bucketStart = intMinGrade; int bucketStop = bucketStart + bucketSize;