version 1.84, 2004/02/10 16:47:25
|
version 1.85, 2004/02/11 16:02:37
|
Line 956 END
|
Line 956 END
|
$sheetname = &Apache::loncommon::clean_excel_name($sheetname); |
$sheetname = &Apache::loncommon::clean_excel_name($sheetname); |
$excel_sheet = $excel_workbook->addworksheet($sheetname); |
$excel_sheet = $excel_workbook->addworksheet($sheetname); |
# |
# |
|
# Define some potentially useful formats |
|
my $format; |
|
$format->{'header'} = $excel_workbook->add_format(bold => 1, |
|
bottom => 1, |
|
align => 'center'); |
|
$format->{'bold'} = $excel_workbook->add_format(bold=>1); |
|
$format->{'h1'} = $excel_workbook->add_format(bold=>1, size=>18); |
|
$format->{'h2'} = $excel_workbook->add_format(bold=>1, size=>16); |
|
$format->{'h3'} = $excel_workbook->add_format(bold=>1, size=>14); |
|
$format->{'date'} = $excel_workbook->add_format(num_format=> |
|
'mmm d yyyy hh:mm AM/PM'); |
|
# |
# Put the course description in the header |
# Put the course description in the header |
$excel_sheet->write($rows_output,$cols_output++, |
$excel_sheet->write($rows_output,$cols_output++, |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}); |
$ENV{'course.'.$ENV{'request.course.id'}.'.description'}, |
|
$format->{'h1'}); |
$cols_output += 3; |
$cols_output += 3; |
# |
# |
# Put a description of the sections listed |
# Put a description of the sections listed |
Line 978 END
|
Line 991 END
|
$sectionstring = "Section ".$Sections[0]; |
$sectionstring = "Section ".$Sections[0]; |
} |
} |
} |
} |
$excel_sheet->write($rows_output,$cols_output++,$sectionstring); |
$excel_sheet->write($rows_output,$cols_output++,$sectionstring, |
|
$format->{'h3'}); |
$cols_output += scalar(@Sections); |
$cols_output += scalar(@Sections); |
# |
# |
# Put the date in there too |
# Put the date in there too |
$excel_sheet->write($rows_output++,$cols_output++, |
$excel_sheet->write($rows_output++,$cols_output++, |
'Compiled on '.localtime(time)); |
'Compiled on '.localtime(time),$format->{'h3'}); |
# |
# |
$cols_output = 0; |
$cols_output = 0; |
$excel_sheet->write($rows_output++,$cols_output++,$datadescription); |
$excel_sheet->write($rows_output++,$cols_output++,$datadescription, |
|
$format->{'h3'}); |
# |
# |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
$rows_output++; |
$rows_output++; |
Line 995 END
|
Line 1010 END
|
# 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($rows_output,$cols_output++,$field, |
|
$format->{'bold'}); |
} |
} |
my $row_offset = 0; |
my $row_offset = 0; |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
Line 1006 END
|
Line 1022 END
|
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($rows_output+$row_offset, |
$cols_output,$seq->{'title'}); |
$cols_output,$seq->{'title'},$format->{'h3'}); |
if ($data eq 'tries' || $data eq 'scores') { |
if ($data eq 'tries' || $data eq 'scores') { |
# Determine starting cell |
# Determine starting cell |
$seq->{'Excel:startcell'}= |
$seq->{'Excel:startcell'}= |
Line 1026 END
|
Line 1042 END
|
foreach my $part (@{$res->{'parts'}}) { |
foreach my $part (@{$res->{'parts'}}) { |
$excel_sheet->write($rows_output, |
$excel_sheet->write($rows_output, |
$cols_output++, |
$cols_output++, |
$res->{'title'}.' part '.$part); |
$res->{'title'}.' part '.$part, |
|
$format->{'bold'}); |
} |
} |
} else { |
} else { |
$excel_sheet->write($rows_output, |
$excel_sheet->write($rows_output, |
$cols_output++, |
$cols_output++, |
$res->{'title'}); |
$res->{'title'},$format->{'bold'}); |
} |
} |
$count++; |
$count++; |
} |
} |
Line 1060 END
|
Line 1077 END
|
($rows_output,$cols_output); |
($rows_output,$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($rows_output,$cols_output++,'parts correct', |
|
$format->{'bold'}); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++,'score'); |
$excel_sheet->write($rows_output,$cols_output++,'score', |
|
$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); |
($rows_output,$cols_output-1); |
$excel_sheet->write($rows_output,$cols_output++,'maximum'); |
$excel_sheet->write($rows_output,$cols_output++,'maximum', |
|
$format->{'bold'}); |
} |
} |
$excel_sheet->write($rows_output,$cols_output++,'Grand Total'); |
$excel_sheet->write($rows_output,$cols_output++,'Grand Total', |
|
$format->{'bold'}); |
$total_formula = $excel_sheet->store_formula($total_formula_string); |
$total_formula = $excel_sheet->store_formula($total_formula_string); |
# |
# |
# Bookkeeping |
# Bookkeeping |
Line 1085 END
|
Line 1106 END
|
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($rows_output,$cols_output++,'Maximum', |
|
$format->{'bold'}); |
} else { |
} else { |
$excel_sheet->write($rows_output,$cols_output++,''); |
$excel_sheet->write($rows_output,$cols_output++,''); |
} |
} |
Line 1152 END
|
Line 1174 END
|
# |
# |
# 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); |
$r->print("<h1>Compiling Excel spreadsheet for ". |
if ($ENV{'form.SelectedStudent'}) { |
$studentcount.' student'); |
$studentcount = '1'; |
$r->print('s') if ($studentcount > 1); |
} |
$r->print("</h1>\n"); |
if ($studentcount > 1) { |
|
$r->print('<h1>'.&mt('Compiling Excel spreadsheet for [_1] students', |
|
$studentcount)."</h1>\n"); |
|
} else { |
|
$r->print('<h1>'. |
|
&mt('Compiling Excel spreadsheet for 1 student'). |
|
"</h1>\n"); |
|
} |
$r->rflush(); |
$r->rflush(); |
# |
# |
# Initialize progress window |
# Initialize progress window |
Line 1193 sub excel_outputstudent {
|
Line 1222 sub excel_outputstudent {
|
# Write out sequence scores and totals data |
# Write out sequence scores and totals data |
my %total_cell_translation; |
my %total_cell_translation; |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
foreach my $seq (&Apache::lonstatistics::Sequences_with_Assess()) { |
|
$cols_output = $seq->{'Excel:startcol'}; |
# Keep track of cells to translate in total cell |
# Keep track of cells to translate in total cell |
$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 |
Line 1244 sub excel_outputstudent {
|
Line 1274 sub excel_outputstudent {
|
$excel_sheet->repeat_formula($rows_output,$cols_output++, |
$excel_sheet->repeat_formula($rows_output,$cols_output++, |
$total_formula,undef, |
$total_formula,undef, |
%total_cell_translation); |
%total_cell_translation); |
|
|
# |
# |
# Bookkeeping |
# Bookkeeping |
$rows_output++; |
$rows_output++; |