Excel-export for aliquote reduction

This commit is contained in:
Andreas Moik
2016-03-08 10:59:50 +01:00
parent 7f8d8c3fce
commit c40cfc83bc
4 changed files with 184 additions and 11 deletions
+4 -4
View File
@@ -127,7 +127,7 @@ if($studiengang_kz!='')
$worksheet->write($zeile,++$spalte, $row->status);
if(mb_strlen($row->status)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($row->status);
$worksheet->write($zeile,++$spalte, $row->semester, $format_center);
if(mb_strlen($row->semester)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($row->semester);
@@ -142,11 +142,11 @@ if($studiengang_kz!='')
}
}
}
//Die Breite der Spalten setzen
foreach($maxlength as $i=>$breite)
$worksheet->setColumn($i, $i, $breite+2);
$workbook->close();
}
else
@@ -166,4 +166,4 @@ else
</html>
';
}
?>
?>
+1 -1
View File
@@ -77,7 +77,7 @@ echo '
}
else
{
die(result);
die(res.message);
}
}).fail(function(jqXHR, status)
+130 -1
View File
@@ -28,6 +28,8 @@ require_once(dirname(__FILE__).'/../../include/studiengang.class.php');
require_once(dirname(__FILE__).'/../../include/studiensemester.class.php');
require_once(dirname(__FILE__).'/../../include/prestudent.class.php');
require_once(dirname(__FILE__).'/../../include/studienplatz.class.php');
require_once(dirname(__FILE__).'/../../include/Excel/excel.php');
require_once(dirname(__FILE__).'/../../include/dokument.class.php');
$user = get_uid();
@@ -110,8 +112,135 @@ switch($action)
returnAJAX(true, "");
break;
case "dlTable":
if(!isset($_REQUEST["students"]))
die("keine Studenten erhalten");
$students = json_decode($_REQUEST["students"]);
// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();
// sending HTTP headers
$workbook->send('aliquote_reduktion_'.$studiengang_kz.'.xls');
$workbook->setVersion(8);
// Creating a worksheet
$worksheet =& $workbook->addWorksheet("Tabelle");
$worksheet->setInputEncoding('utf-8');
$format_bold =& $workbook->addFormat();
$format_bold->setBold();
$format_float =& $workbook->addFormat();
$format_float->setNumFormat("0.0000");
$spalte=0;
$zeile=0;
$worksheet->write($zeile,$spalte,'ID',$format_bold);
$maxlength[$spalte]=3;
$worksheet->write($zeile,++$spalte,'Nachname',$format_bold);
$maxlength[$spalte]=7;
$worksheet->write($zeile,++$spalte,'Vorname',$format_bold);
$maxlength[$spalte]=7;
$worksheet->write($zeile,++$spalte,'ZGV Gruppe',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Reihung',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'RT Gesamt',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Status',$format_bold);
$maxlength[$spalte]=8;
$worksheet->write($zeile,++$spalte,'Auswahl',$format_bold);
$maxlength[$spalte]=8;
usort($students, "studentsSort");
foreach($students as $s)
{
$zeile++;
$spalte=0;
$worksheet->writeNumber($zeile,$spalte,$s->prestudent_id);
if(mb_strlen($s->prestudent_id)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->prestudent_id);
$worksheet->write($zeile,++$spalte,$s->nachname);
if(mb_strlen($s->nachname)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->nachname);
$worksheet->write($zeile,++$spalte, $s->vorname);
if(mb_strlen($s->vorname)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->vorname);
if(isset($s->bezeichnung) && $s->bezeichnung)
{
$worksheet->write($zeile,++$spalte, $s->bezeichnung);
if(mb_strlen($s->bezeichnung)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->bezeichnung);
}
else
{
$worksheet->write($zeile,++$spalte, "");
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
$worksheet->writeNumber($zeile,++$spalte, $s->seqPlace);
if(mb_strlen($s->seqPlace)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->seqPlace);
if(isset($s->rt_gesamtpunkte) && $s->rt_gesamtpunkte)
{
$worksheet->writeNumber($zeile,++$spalte, $s->rt_gesamtpunkte, $format_float);
if(mb_strlen($s->rt_gesamtpunkte)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->rt_gesamtpunkte);
}
else
{
$worksheet->write($zeile,++$spalte, "");
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
$worksheet->write($zeile,++$spalte, $s->laststatus);
if(mb_strlen($s->laststatus)>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen($s->laststatus);
if(isset($s->selected) && $s->selected)
{
$worksheet->write($zeile,++$spalte, "x");
if(mb_strlen("x")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("x");
}
else
{
$worksheet->write($zeile,++$spalte, "");
if(mb_strlen("")>$maxlength[$spalte])
$maxlength[$spalte]=mb_strlen("");
}
}
//Die Breite der Spalten setzen
foreach($maxlength as $i=>$breite)
$worksheet->setColumn($i, $i, $breite+2);
$workbook->close();
break;
default:
returnAJAX(false,"eine Aktion erhalten");
returnAJAX(false,"unknown action: " . $action);
}
function studentsSort($a, $b)
{
return $a->seqPlace > $b->seqPlace;
}
?>
+49 -5
View File
@@ -75,7 +75,7 @@
aqr.studiensemester = [];
aqr.studienplaetze = [];
aqr.actualSequence = 1;
SERVICE_TARGET = "aliquote_reduktion.json.php"
SERVICE_TARGET = "aliquote_reduktion.json.php";
if(!aqr.studiensemester_kurzbz)
die("Es wurde kein Studiensemester angegeben");
@@ -330,6 +330,49 @@
aqr.recursiveChoose(needed, zgvElems);
}
}
aqr.download = function()
{
var filteredStudents = [];
aqr.studenten.forEach(function(i)
{
if(i.applicant)
{
filteredStudents.push(i);
}
});
var form = document.createElement("form");
form.setAttribute("method", "post");
form.setAttribute("action", "aliquote_reduktion.json.php");
form.setAttribute("target", "view");
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "action");
hiddenField.setAttribute("value", "dlTable");
form.appendChild(hiddenField);
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "studiengang_kz");
hiddenField.setAttribute("value", aqr.selectedStudiengang.studiengang_kz);
form.appendChild(hiddenField);
var hiddenField = document.createElement("input");
hiddenField.setAttribute("type", "hidden");
hiddenField.setAttribute("name", "students");
hiddenField.setAttribute("value", JSON.stringify(filteredStudents));
form.appendChild(hiddenField);
document.body.appendChild(form);
form.submit();
}
});
</script>
</head>
@@ -349,8 +392,8 @@
<thead>
<tr>
<th ts-criteria="prestudent_id">ID</th>
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="nachname">Nachname</th>
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="bezeichnung">ZGV Gruppe</th>
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat" ts-default="ascending">RT Gesamt</th>
@@ -362,8 +405,8 @@
<tbody>
<tr ng-repeat="stud in aqr.studenten track by stud.prestudent_id" ng-if="stud.applicant" ng-click="aqr.countChoosen()" ts-repeat ts-hide-no-data ng-class="{true:'applicant', false:'no_applicant', undefined:'no_applicant'}[stud.applicant]"><!-- "{applicant, no_applicant : stud.applicant}">-->
<td>{{stud.prestudent_id}}</td>
<td>{{stud.vorname}}</td>
<td>{{stud.nachname}}</td>
<td>{{stud.vorname}}</td>
<td ng-if="stud.bezeichnung">{{stud.bezeichnung}}</td>
<td ng-if="!stud.bezeichnung" style="font-weight: bold;">Keine Angabe</td>
<td>{{stud.seqPlace}}</td>
@@ -378,14 +421,15 @@
</table>
<input style="float:right;" type="button" value="Annehmen" ng-click="aqr.submit()"/>
<input style="float:right;" type="button" value="Download" ng-click="aqr.download()"/>
<h3>Bereits aufgenommene</h3>
<table ts-wrapper>
<thead>
<tr>
<th ts-criteria="prestudent_id">ID</th>
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="nachname">Nachname</th>
<th ts-criteria="vorname">Vorname</th>
<th ts-criteria="bezeichnung">ZGV Gruppe</th>
<th ts-criteria="seqPlace|parseInt" ts-default="ascending">Reihung</th>
<th ts-criteria="rt_gesamtpunkte|parseFloat">RT Gesamt</th>
@@ -396,8 +440,8 @@
<tbody>
<tr ng-repeat="stud in aqr.studenten track by stud.prestudent_id" ng-if="!stud.applicant" ng-click="aqr.countChoosen()" ts-repeat ts-hide-no-data ng-class="{true:'applicant', false:'no_applicant', undefined:'no_applicant'}[stud.applicant]"><!-- "{applicant, no_applicant : stud.applicant}">-->
<td>{{stud.prestudent_id}}</td>
<td>{{stud.vorname}}</td>
<td>{{stud.nachname}}</td>
<td>{{stud.vorname}}</td>
<td ng-if="stud.bezeichnung">{{stud.bezeichnung}}</td>
<td ng-if="!stud.bezeichnung" style="font-weight: bold;">Keine Angabe</td>
<td>{{stud.seqPlace}}</td>