version 1.85, 2004/02/11 16:02:37
|
version 1.86, 2004/02/11 17:42:34
|
Line 1007 END
|
Line 1007 END
|
$rows_output++; |
$rows_output++; |
} |
} |
# |
# |
|
# Figure out the rows we need |
|
my $sequence_name_row = $rows_output+1; |
|
my $resource_name_row = $sequence_name_row+1; |
|
my $maximum_data_row = $sequence_name_row+2; |
|
my $first_data_row = $sequence_name_row+3; |
|
# |
# Add the student headers |
# Add the student headers |
$cols_output = 0; |
$cols_output = 0; |
foreach my $field (&get_student_fields_to_show()) { |
foreach my $field (&get_student_fields_to_show()) { |
$excel_sheet->write($rows_output,$cols_output++,$field, |
$excel_sheet->write($resource_name_row,$cols_output++,$field, |
$format->{'bold'}); |
$format->{'bold'}); |
} |
} |
my $row_offset = 0; |
|
if ($data eq 'tries' || $data eq 'scores') { |
|
$row_offset = -1; |
|
} |
|
# |
# |
# Add the remaining column headers |
# Add the remaining column headers |
my $total_formula_string = '=0'; |
my $total_formula_string = '=0'; |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
$excel_sheet->write($rows_output+$row_offset, |
$excel_sheet->write($sequence_name_row,, |
$cols_output,$seq->{'title'},$format->{'h3'}); |
$cols_output,$seq->{'title'},$format->{'h3'}); |
|
# Determine starting cell |
|
$seq->{'Excel:startcell'}= |
|
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
|
($maximum_data_row,$cols_output); |
|
$seq->{'Excel:startcol'}=$cols_output; |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
# Determine starting cell |
|
$seq->{'Excel:startcell'}= |
|
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
|
($rows_output,$cols_output); |
|
$seq->{'Excel:startcol'}=$cols_output; |
|
# Put the names of the problems and parts into the sheet |
# Put the names of the problems and parts into the sheet |
my $count = 0; |
my $count = 0; |
foreach my $res (@{$seq->{'contents'}}) { |
foreach my $res (@{$seq->{'contents'}}) { |
Line 1040 END
|
Line 1042 END
|
} |
} |
if (scalar(@{$res->{'parts'}}) > 1) { |
if (scalar(@{$res->{'parts'}}) > 1) { |
foreach my $part (@{$res->{'parts'}}) { |
foreach my $part (@{$res->{'parts'}}) { |
$excel_sheet->write($rows_output, |
$excel_sheet->write($resource_name_row, |
$cols_output++, |
$cols_output++, |
$res->{'title'}.' part '.$part, |
$res->{'title'}.' part '.$part, |
$format->{'bold'}); |
$format->{'bold'}); |
} |
} |
} else { |
} else { |
$excel_sheet->write($rows_output, |
$excel_sheet->write($resource_name_row, |
$cols_output++, |
$cols_output++, |
$res->{'title'},$format->{'bold'}); |
$res->{'title'},$format->{'bold'}); |
} |
} |
Line 1059 END
|
Line 1061 END
|
} else { |
} else { |
$seq->{'Excel:endcell'} = |
$seq->{'Excel:endcell'} = |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$cols_output-1); |
($maximum_data_row,$cols_output-1); |
$seq->{'Excel:endcol'} = $cols_output-1; |
$seq->{'Excel:endcol'} = $cols_output-1; |
} |
} |
# Create the formula for summing up this sequence |
# Create the formula for summing up this sequence |
Line 1074 END
|
Line 1076 END
|
# Determine cell the score is held in |
# Determine cell the score is held in |
$seq->{'Excel:scorecell'} = |
$seq->{'Excel:scorecell'} = |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$cols_output); |
($maximum_data_row,$cols_output); |
$seq->{'Excel:scorecol'}=$cols_output; |
$seq->{'Excel:scorecol'}=$cols_output; |
if ($data eq 'parts correct total') { |
if ($data eq 'parts correct total') { |
$excel_sheet->write($rows_output,$cols_output++,'parts correct', |
$excel_sheet->write($resource_name_row,$cols_output++, |
|
'parts correct', |
$format->{'bold'}); |
$format->{'bold'}); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++,'score', |
$excel_sheet->write($resource_name_row,$cols_output++, |
|
'score', |
$format->{'bold'}); |
$format->{'bold'}); |
} |
} |
# |
# |
$total_formula_string.='+'. |
$total_formula_string.='+'. |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$cols_output-1); |
($maximum_data_row,$cols_output-1); |
$excel_sheet->write($rows_output,$cols_output++,'maximum', |
$excel_sheet->write($resource_name_row,$cols_output++, |
|
'maximum', |
$format->{'bold'}); |
$format->{'bold'}); |
} |
} |
$excel_sheet->write($rows_output,$cols_output++,'Grand Total', |
$excel_sheet->write($resource_name_row,$cols_output++,'Grand Total', |
$format->{'bold'}); |
$format->{'bold'}); |
$total_formula = $excel_sheet->store_formula($total_formula_string); |
$total_formula = $excel_sheet->store_formula($total_formula_string); |
# |
# |
# Bookkeeping |
|
if ($data eq 'sum and total' || $data eq 'parts correct total') { |
|
$rows_output += 2; |
|
} else { |
|
$rows_output += 1; |
|
} |
|
# |
|
# Output a row for MAX |
# Output a row for MAX |
$cols_output = 0; |
$cols_output = 0; |
foreach my $field (&get_student_fields_to_show()) { |
foreach my $field (&get_student_fields_to_show()) { |
if ($field eq 'username' || $field eq 'fullname' || |
if ($field eq 'username' || $field eq 'fullname' || |
$field eq 'id') { |
$field eq 'id') { |
$excel_sheet->write($rows_output,$cols_output++,'Maximum', |
$excel_sheet->write($maximum_data_row,$cols_output++,'Maximum', |
$format->{'bold'}); |
$format->{'bold'}); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++,''); |
$excel_sheet->write($maximum_data_row,$cols_output++,''); |
} |
} |
} |
} |
# |
# |
Line 1119 END
|
Line 1117 END
|
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
$total_cell_translation{$seq->{'Excel:scorecell'}} = |
$total_cell_translation{$seq->{'Excel:scorecell'}} = |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$seq->{'Excel:scorecol'}); |
($maximum_data_row,$seq->{'Excel:scorecol'}); |
my $weight; |
my $weight; |
my $max = 0; |
my $max = 0; |
foreach my $resource (@{$seq->{'contents'}}) { |
foreach my $resource (@{$seq->{'contents'}}) { |
Line 1135 END
|
Line 1133 END
|
} |
} |
} |
} |
if ($data eq 'scores') { |
if ($data eq 'scores') { |
$excel_sheet->write($rows_output,$cols_output++,$weight); |
$excel_sheet->write($maximum_data_row,$cols_output++,$weight); |
} elsif ($data eq 'tries') { |
} elsif ($data eq 'tries') { |
$excel_sheet->write($rows_output,$cols_output++,''); |
$excel_sheet->write($maximum_data_row,$cols_output++,''); |
} |
} |
$max += $weight; |
$max += $weight; |
} |
} |
} |
} |
if (! ($data eq 'sum only' || $data eq 'parts correct')) { |
if (! ($data eq 'sum only' || $data eq 'parts correct')) { |
$excel_sheet->write($rows_output,$cols_output++,''); |
$excel_sheet->write($maximum_data_row,$cols_output++,''); |
} |
} |
# |
# |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
my %replaceCells; |
my %replaceCells; |
$replaceCells{$seq->{'Excel:startcell'}} = |
$replaceCells{$seq->{'Excel:startcell'}} = |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$seq->{'Excel:startcol'}); |
($maximum_data_row,$seq->{'Excel:startcol'}); |
$replaceCells{$seq->{'Excel:endcell'}} = |
$replaceCells{$seq->{'Excel:endcell'}} = |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
&Spreadsheet::WriteExcel::Utility::xl_rowcol_to_cell |
($rows_output,$seq->{'Excel:endcol'}); |
($maximum_data_row,$seq->{'Excel:endcol'}); |
$excel_sheet->repeat_formula($rows_output,$cols_output++, |
$excel_sheet->repeat_formula($maximum_data_row,$cols_output++, |
$seq->{'Excel:sum'},undef, |
$seq->{'Excel:sum'},undef, |
%replaceCells); |
%replaceCells); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++, |
$excel_sheet->write($maximum_data_row,$cols_output++, |
$max); |
$max); |
} |
} |
$grand_total+=$max; |
$grand_total+=$max; |
} |
} |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
$excel_sheet->repeat_formula($rows_output,$cols_output++, |
$excel_sheet->repeat_formula($maximum_data_row,$cols_output++, |
$total_formula,undef, |
$total_formula,undef, |
%total_cell_translation); |
%total_cell_translation); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++,$grand_total); |
$excel_sheet->write($maximum_data_row,$cols_output++,$grand_total); |
} |
} |
$rows_output++; |
$rows_output = $first_data_row; |
# |
# |
# Let the user know what we are doing |
# Let the user know what we are doing |
my $studentcount = scalar(@Apache::lonstatistics::Students); |
my $studentcount = scalar(@Apache::lonstatistics::Students); |