Skip to content

Commit

Permalink
Replace Spreadsheet_Excel_Writer/Writer with PHPExcel
Browse files Browse the repository at this point in the history
  • Loading branch information
jmontoyaa committed Aug 11, 2015
1 parent 7d2579b commit 003ee63
Show file tree
Hide file tree
Showing 18 changed files with 241 additions and 8,859 deletions.
90 changes: 46 additions & 44 deletions main/exercice/exercise_result.class.php
Expand Up @@ -409,17 +409,15 @@ public function exportCompleteReportXLS(
) {
global $charset;
$this->getExercisesReporting($document_path, $user_id, $export_filter, $exercise_id, $hotpotato_name);
$filename = 'exercise_results_'.date('YmdGis').'.xls';
$filename = 'exercise_results_'.api_get_local_time().'.xls';
if (!empty($user_id)) {
$filename = 'exercise_results_user_'.$user_id.'_'.date('YmdGis').'.xls';
$filename = 'exercise_results_user_'.$user_id.'_'.api_get_local_time().'.xls';
}
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setTempDir(api_get_path(SYS_ARCHIVE_PATH));
$workbook->setVersion(8); // BIFF8

$workbook->send($filename);
$worksheet =& $workbook->addWorksheet('Report '.date('YmdGis'));
$worksheet->setInputEncoding(api_get_system_encoding());
$spreadsheet = new PHPExcel();
$spreadsheet->setActiveSheetIndex(0);
$worksheet = $spreadsheet->getActiveSheet();

$line = 0;
$column = 0; //skip the first column (row titles)

Expand All @@ -436,26 +434,26 @@ public function exportCompleteReportXLS(

if ($with_column_user) {
if (api_is_western_name_order()) {
$worksheet->write($line, $column,get_lang('FirstName'));
$worksheet->SetCellValueByColumnAndRow($line, $column,get_lang('FirstName'));
$column++;
$worksheet->write($line, $column,get_lang('LastName'));
$worksheet->SetCellValueByColumnAndRow($line, $column,get_lang('LastName'));
$column++;
} else {
$worksheet->write($line, $column,get_lang('LastName'));
$worksheet->SetCellValueByColumnAndRow($line, $column,get_lang('LastName'));
$column++;
$worksheet->write($line, $column,get_lang('FirstName'));
$worksheet->SetCellValueByColumnAndRow($line, $column,get_lang('FirstName'));
$column++;
}

if ($officialCodeInList === 'true') {
$worksheet->write($line, $column, get_lang('OfficialCode'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('OfficialCode'));
$column++;
}

$worksheet->write($line, $column, get_lang('Email'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Email'));
$column++;
}
$worksheet->write($line, $column, get_lang('Groups'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Groups'));
$column++;

if ($export_user_fields) {
Expand All @@ -464,88 +462,92 @@ public function exportCompleteReportXLS(

//show the fields names for user fields
foreach ($extra_user_fields as $field) {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES, $charset));
$column++;
}
}

$worksheet->write($line, $column, get_lang('Title'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Title'));
$column++;
$worksheet->write($line, $column, get_lang('StartDate'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('StartDate'));
$column++;
$worksheet->write($line, $column, get_lang('EndDate'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('EndDate'));
$column++;
$worksheet->write($line, $column, get_lang('Duration').' ('.get_lang('MinMinutes').')');
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Duration').' ('.get_lang('MinMinutes').')');
$column++;
$worksheet->write($line, $column, get_lang('Score'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Score'));
$column++;
$worksheet->write($line, $column, get_lang('Total'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Total'));
$column++;
$worksheet->write($line, $column, get_lang('Status'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('Status'));
$column++;
$worksheet->write($line, $column, get_lang('ToolLearnpath'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('ToolLearnpath'));
$column++;
$worksheet->write($line, $column, get_lang('UserIsCurrentlySubscribed'));
$worksheet->SetCellValueByColumnAndRow($line, $column, get_lang('UserIsCurrentlySubscribed'));
$line++;

foreach ($this->results as $row) {
$column = 0;

if ($with_column_user) {
if (api_is_western_name_order()) {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$column++;
} else {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$column++;
}

if ($officialCodeInList === 'true') {
$worksheet->write($line, $column,api_html_entity_decode(strip_tags($row['official_code']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line, $column,api_html_entity_decode(strip_tags($row['official_code']), ENT_QUOTES, $charset));
$column++;
}

$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['email']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['email']), ENT_QUOTES, $charset));
$column++;
}

$worksheet->write($line,$column,api_html_entity_decode(strip_tags(implode(", ", GroupManager :: get_user_group_name($row['user_id']))), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags(implode(", ", GroupManager :: get_user_group_name($row['user_id']))), ENT_QUOTES, $charset));
$column++;

if ($export_user_fields) {
//show user fields data, if any, for this user
$user_fields_values = UserManager::get_extra_user_data($row['user_id'],false,false, false, true);
foreach($user_fields_values as $value) {
$worksheet->write($line,$column, api_html_entity_decode(strip_tags($value), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column, api_html_entity_decode(strip_tags($value), ENT_QUOTES, $charset));
$column++;
}
}

$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['title']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['title']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line, $column, $row['start_date']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['start_date']);
$column++;
$worksheet->write($line, $column, $row['end_date']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['end_date']);
$column++;
$worksheet->write($line, $column, $row['duration']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['duration']);
$column++;
$worksheet->write($line, $column, $row['result']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['result']);
$column++;
$worksheet->write($line, $column, $row['max']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['max']);
$column++;
$worksheet->write($line, $column, $row['status']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['status']);
$column++;
$worksheet->write($line, $column, $row['lp_name']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['lp_name']);
$column++;
$worksheet->write($line, $column, $row['is_user_subscribed']);
$worksheet->SetCellValueByColumnAndRow($line, $column, $row['is_user_subscribed']);
$line++;
}
//output the results
$workbook->close();

$file = api_get_path(SYS_ARCHIVE_PATH).api_replace_dangerous_char($filename);
$writer = new PHPExcel_Writer_Excel2007($spreadsheet);
$writer->save($file);
DocumentManager::file_send_for_download($file, true, $filename);

return true;
}
}
73 changes: 38 additions & 35 deletions main/exercice/hotpotatoes_exercise_result.class.php
Expand Up @@ -226,17 +226,16 @@ public function exportCompleteReportXLS(
) {
global $charset;
$this->getExercisesReporting($document_path, $user_id, $export_filter, $exercise_id, $hotpotato_name);
$filename = 'exercise_results_'.date('YmdGis').'.xls';
$filename = 'exercise_results_'.api_get_local_time().'.xls';
if (!empty($user_id)) {
$filename = 'exercise_results_user_'.$user_id.'_'.date('YmdGis').'.xls';
$filename = 'exercise_results_user_'.$user_id.'_'.api_get_local_time().'.xls';
}
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setTempDir(api_get_path(SYS_ARCHIVE_PATH));
$workbook->setVersion(8); // BIFF8

$workbook->send($filename);
$worksheet =& $workbook->addWorksheet('Report '.date('YmdGis'));
$worksheet->setInputEncoding(api_get_system_encoding());
$spreadsheet = new PHPExcel();
$spreadsheet->setActiveSheetIndex(0);
$worksheet = $spreadsheet->getActiveSheet();


$line = 0;
$column = 0; //skip the first column (row titles)

Expand All @@ -250,18 +249,18 @@ public function exportCompleteReportXLS(
}

if ($with_column_user) {
$worksheet->write($line,$column,get_lang('Email'));
$worksheet->SetCellValueByColumnAndRow($line,$column,get_lang('Email'));
$column++;

if (api_is_western_name_order()) {
$worksheet->write($line,$column,get_lang('FirstName'));
$worksheet->SetCellValueByColumnAndRow($line,$column,get_lang('FirstName'));
$column++;
$worksheet->write($line,$column,get_lang('LastName'));
$worksheet->SetCellValueByColumnAndRow($line,$column,get_lang('LastName'));
$column++;
} else {
$worksheet->write($line,$column,get_lang('LastName'));
$worksheet->SetCellValueByColumnAndRow($line,$column,get_lang('LastName'));
$column++;
$worksheet->write($line,$column,get_lang('FirstName'));
$worksheet->SetCellValueByColumnAndRow($line,$column,get_lang('FirstName'));
$column++;
}
}
Expand All @@ -272,42 +271,42 @@ public function exportCompleteReportXLS(

//show the fields names for user fields
foreach ($extra_user_fields as $field) {
$worksheet->write($line, $column, api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line, $column, api_html_entity_decode(strip_tags($field[3]), ENT_QUOTES, $charset));
$column++;
}
}

$worksheet->write($line,$column, get_lang('Title'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('Title'));
$column++;
$worksheet->write($line,$column, get_lang('StartDate'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('StartDate'));
$column++;
$worksheet->write($line,$column, get_lang('EndDate'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('EndDate'));
$column++;
$worksheet->write($line,$column, get_lang('Duration').' ('.get_lang('MinMinutes').')');
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('Duration').' ('.get_lang('MinMinutes').')');
$column++;
$worksheet->write($line,$column, get_lang('Score'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('Score'));
$column++;
$worksheet->write($line,$column, get_lang('Total'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('Total'));
$column++;
$worksheet->write($line,$column, get_lang('Status'));
$worksheet->SetCellValueByColumnAndRow($line,$column, get_lang('Status'));
$line++;

foreach ($this->results as $row) {
$column = 0;

if ($with_column_user) {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['email']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['email']), ENT_QUOTES, $charset));
$column++;

if (api_is_western_name_order()) {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$column++;
} else {
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['last_name']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['first_name']), ENT_QUOTES, $charset));
$column++;
}
}
Expand All @@ -316,28 +315,32 @@ public function exportCompleteReportXLS(
//show user fields data, if any, for this user
$user_fields_values = UserManager::get_extra_user_data($row['user_id'],false,false, false, true);
foreach($user_fields_values as $value) {
$worksheet->write($line,$column, api_html_entity_decode(strip_tags($value), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column, api_html_entity_decode(strip_tags($value), ENT_QUOTES, $charset));
$column++;
}
}

$worksheet->write($line,$column,api_html_entity_decode(strip_tags($row['title']), ENT_QUOTES, $charset));
$worksheet->SetCellValueByColumnAndRow($line,$column,api_html_entity_decode(strip_tags($row['title']), ENT_QUOTES, $charset));
$column++;
$worksheet->write($line,$column,$row['start_date']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['start_date']);
$column++;
$worksheet->write($line,$column,$row['end_date']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['end_date']);
$column++;
$worksheet->write($line,$column,$row['duration']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['duration']);
$column++;
$worksheet->write($line,$column,$row['result']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['result']);
$column++;
$worksheet->write($line,$column,$row['max']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['max']);
$column++;
$worksheet->write($line,$column,$row['status']);
$worksheet->SetCellValueByColumnAndRow($line,$column,$row['status']);
$line++;
}

$workbook->close();
$file = api_get_path(SYS_ARCHIVE_PATH).api_replace_dangerous_char($filename);
$writer = new PHPExcel_Writer_Excel2007($spreadsheet);
$writer->save($file);
DocumentManager::file_send_for_download($file, true, $filename);

return true;
}
}
24 changes: 12 additions & 12 deletions main/gradebook/lib/gradebook_result.class.php
Expand Up @@ -244,37 +244,37 @@ public function exportCompleteReportCSV($dato)
*/
public function exportCompleteReportXLS($data)
{
$filename = 'gradebook-results-'.date('Y-m-d-h:i:s').'.xls';
include api_get_path(LIBRARY_PATH).'pear/Spreadsheet_Excel_Writer/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();
$workbook->setVersion(8); // BIFF8
$workbook->setTempDir(api_get_path(SYS_ARCHIVE_PATH));
$workbook->send($filename);
$filename = 'gradebook-results-'.api_get_local_time().'.xls';

$worksheet =& $workbook->addWorksheet('Report');
$worksheet->setInputEncoding(api_get_system_encoding());
$spreadsheet = new PHPExcel();
$spreadsheet->setActiveSheetIndex(0);
$worksheet = $spreadsheet->getActiveSheet();

$line = 0;
$column = 0; //skip the first column (row titles)

//headers
foreach ($data[0] as $header_col) {
$worksheet->write($line, $column, $header_col);
$worksheet->SetCellValueByColumnAndRow($line, $column, $header_col);
$column++;
}
$line++;

$cant_students = count($data[1]);

for ($i=0;$i<$cant_students;$i++) {
for ($i = 0; $i < $cant_students; $i++) {
$column = 0;
foreach ($data[1][$i] as $col_name) {
$worksheet->write($line,$column, html_entity_decode(strip_tags($col_name)));
$worksheet->SetCellValueByColumnAndRow($line,$column, html_entity_decode(strip_tags($col_name)));
$column++;
}
$line++;
}
$workbook->close();

$file = api_get_path(SYS_ARCHIVE_PATH).api_replace_dangerous_char($filename);
$writer = new PHPExcel_Writer_Excel2007($spreadsheet);
$writer->save($file);
DocumentManager::file_send_for_download($file, true, $filename);
exit;
}

Expand Down

6 comments on commit 003ee63

@ywarnier
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does PHP excel require UNO?

@jmontoyaa
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UNO?

@jmontoyaa
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DOS? :)

@ywarnier
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

TRES! LOL
I was talking about the unoconverter (libs)

@jmontoyaa
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, unoconverter libs are require see:

https://packagist.org/packages/phpoffice/phpexcel

@ywarnier
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, almost nothing (just php-xml and php-xmlwriter - I don't know that last one). OK.

Please sign in to comment.