42         '\x{1FFFE}-\x{1FFFF}',
    43         '\x{2FFFE}-\x{2FFFF}',
    44         '\x{3FFFE}-\x{3FFFF}',
    45         '\x{4FFFE}-\x{4FFFF}',
    46         '\x{5FFFE}-\x{5FFFF}',
    47         '\x{6FFFE}-\x{6FFFF}',
    48         '\x{7FFFE}-\x{7FFFF}',
    49         '\x{8FFFE}-\x{8FFFF}',
    50         '\x{9FFFE}-\x{9FFFF}',
    51         '\x{AFFFE}-\x{AFFFF}',
    52         '\x{BFFFE}-\x{BFFFF}',
    53         '\x{CFFFE}-\x{CFFFF}',
    54         '\x{DFFFE}-\x{DFFFF}',
    55         '\x{EFFFE}-\x{EFFFF}',
    56         '\x{FFFFE}-\x{FFFFF}',
    57         '\x{10FFFE}-\x{10FFFF}',
    72         $this->
lng = $DIC->language();
    74         $this->workbook = 
new Spreadsheet();
    75         $this->workbook->removeSheetByIndex(0);
    87         $this->workbook = IOFactory::load($filename);
    99         return [self::FORMAT_XML, self::FORMAT_BIFF];
   108             $this->format = $a_format;
   124         bool $a_activate = 
true   128         $invalid = [
'*', 
':', 
'/', 
'\\', 
'?', 
'[', 
']', 
'\'-
', '\
''];
   130         $a_name = str_replace($invalid, 
'', $a_name);
   136         $sheet = 
new Worksheet($this->workbook, $a_name);
   137         $this->workbook->addSheet($sheet);
   138         $new_index = $this->workbook->getSheetCount() - 1;
   152         $this->workbook->setActiveSheetIndex($a_index);
   161         return $this->workbook->getSheetCount();
   170         return $this->workbook->getActiveSheet()->getTitle();
   186         if (is_bool($value)) {
   194         if (is_string($value)) {
   208             case $a_value instanceof 
ilDate:
   224         return $a_value ? $lng->
txt(
'yes') : $lng->
txt(
'no');
   229         bool $disable_strip_tags = 
false   231         if (!mb_check_encoding($value, 
'UTF-8')) {
   236             $disable_strip_tags ? $value : strip_tags($value)
   248         if ($a_value instanceof 
ilDate) {
   249             $a_cell->getStyle()->getNumberFormat()->setFormatCode(
'dd.mm.yyyy');
   251             $a_cell->getStyle()->getNumberFormat()->setFormatCode(
'dd.mm.yyyy hh:mm:ss');
   263             $wb = $this->workbook->getActiveSheet()->setCellValue(
   267             $cell = $wb->getCell($a_coords);
   269         } elseif (is_numeric($a_value)) {
   270             $this->workbook->getActiveSheet()->setCellValueExplicit(
   273                 DataType::TYPE_NUMERIC
   276             $this->workbook->getActiveSheet()->setCellValueExplicit(
   279                 DataType::TYPE_STRING
   295         ?
string $datatype = null,
   296         bool $disable_strip_tags_for_strings = 
false   300         if ($datatype === DataType::TYPE_STRING) {
   301             $this->workbook->getActiveSheet()->setCellValueExplicit(
   303                 $this->
prepareString($value, $disable_strip_tags_for_strings),
   306         } elseif ($datatype !== null) {
   307             $this->workbook->getActiveSheet()->setCellValueExplicit(
   313             $wb = $this->workbook->getActiveSheet()->setCellValue(
   318         } elseif (is_numeric($value)) {
   319             $this->workbook->getActiveSheet()->setCellValueExplicit(
   322                 DataType::TYPE_NUMERIC
   325             $this->workbook->getActiveSheet()->setCellValueExplicit(
   328                 DataType::TYPE_STRING
   342         string $a_top_left = 
'A1',
   345         foreach ($a_values as $row_idx => $cols) {
   346             if (is_array($cols)) {
   347                 foreach ($cols as $col_idx => $col_value) {
   348                     $a_values[$row_idx][$col_idx] = $this->
prepareValue($col_value);
   355         $this->workbook->getActiveSheet()->fromArray($a_values, $a_null_value, $a_top_left);
   368         return $this->workbook->getActiveSheet()->getCell($coordinate)->getValue();
   376         return $this->workbook->getActiveSheet()->toArray();
   384         return Coordinate::columnIndexFromString($this->workbook->getActiveSheet()->getHighestDataColumn());
   393         return Coordinate::stringFromColumnIndex($col);
   402         foreach ($this->workbook->getWorksheetIterator() as $worksheet) {
   403             $this->workbook->setActiveSheetIndex($this->workbook->getIndex($worksheet));
   404             $sheet = $this->workbook->getActiveSheet();
   405             $cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
   406             $cellIterator->setIterateOnlyExistingCells(
true);
   407             foreach ($cellIterator as $cell) {
   408                 $sheet->getColumnDimension($cell->getColumn())->setAutoSize(
true);
   423         $this->workbook->setActiveSheetIndex(0);
   425         switch ($this->format) {
   426             case self::FORMAT_BIFF:
   427                 if (stripos($a_file_name, 
'.xls') === 
false) {
   428                     $a_file_name .= 
'.xls';
   432             case self::FORMAT_XML:
   433                 if (stripos($a_file_name, 
'.xlsx') === 
false) {
   434                     $a_file_name .= 
'.xlsx';
   449         switch ($this->format) {
   450             case self::FORMAT_BIFF:
   451                 $a_mime_type = MimeType::APPLICATION__VND_MS_EXCEL;
   454             case self::FORMAT_XML:
   455                 $a_mime_type = MimeType::APPLICATION__VND_OPENXMLFORMATS_OFFICEDOCUMENT_SPREADSHEETML_SHEET;
   458                 $a_mime_type = MimeType::APPLICATION__OCTET_STREAM;
   463         $writer = IOFactory::createWriter($this->workbook, $this->format);
   464         $writer->save($tmp_name);
   478         $writer = IOFactory::createWriter($this->workbook, $this->format);
   479         $writer->save($a_file);
   487         $writer = IOFactory::createWriter($this->workbook, $this->format);
   497     public function setBold(
string $a_coords): void
   499         $this->workbook->getActiveSheet()->getStyle($a_coords)->getFont()->setBold(
true);
   507         string $a_background,
   508         string $a_font = null
   512                 'fillType' => Fill::FILL_SOLID,
   513                 'color' => [
'rgb' => $a_background]
   519                 'color' => [
'rgb' => $a_font]
   523         $this->workbook->getActiveSheet()->getStyle($a_coords)->applyFromArray($opts);
   532         bool $a_right = 
false,
   533         bool $a_bottom = 
false,
   536         $style = $this->workbook->getActiveSheet()->getStyle($a_coords);
   540             $style->getBorders()->getTop()->setBorderStyle(Border::BORDER_THIN);
   543             $style->getBorders()->getRight()->setBorderStyle(Border::BORDER_THIN);
   546             $style->getBorders()->getBottom()->setBorderStyle(Border::BORDER_THIN);
   549             $style->getBorders()->getLeft()->setBorderStyle(Border::BORDER_THIN);
   561         $columnLetter = Coordinate::stringFromColumnIndex($col);
   563         return $columnLetter . $pRow;
   575         $this->workbook->getActiveSheet()->getCell($coordinate)->getHyperlink()->setUrl($a_path);
   593         $this->workbook->getActiveSheet()->mergeCells($coordinatesRange);
   598         return mb_ereg_replace(
'[' . implode(
'', $this->noncharacters) . 
']', 
'', $string);
 get(int $a_format, string $a_format_str='', string $a_tz='')
get formatted date 
 
prepareBooleanValue(bool $a_value)
 
prepareStorage(string $a_file_name)
Prepare workbook for storage/delivery. 
 
getSheetAsArray()
Returns the active sheet as an array. 
 
txt(string $a_topic, string $a_default_lang_fallback_mod="")
gets the text for a given topic if the topic is not in the list, the topic itself with "-" will be re...
 
setDateFormat(Cell $a_cell, $a_value)
Set date format of cell. 
 
getColumnCoord(int $a_col)
Get column "name" from number. 
 
setBorders(string $a_coords, bool $a_top, bool $a_right=false, bool $a_bottom=false, bool $a_left=false)
Toggle cell(s) borders. 
 
getColumnCount()
Returns the number of columns the sheet contains. 
 
addLink(int $a_row, int $a_column, string $a_path)
 
cleanupNonCharachters(string $string)
 
setFormat(string $a_format)
Set file format. 
 
setGlobalAutoSize()
Set all existing columns on all sheets to autosize. 
 
prepareValue($value)
Prepare value for cell. 
 
setCell(int $a_row, int $col, $value, ?string $datatype=null, bool $disable_strip_tags_for_strings=false)
Set cell value. 
 
setBold(string $a_coords)
Set cell(s) to bold. 
 
static deliverFileAttached(string $path_to_file, ?string $download_file_name=null, ?string $mime_type=null, bool $delete_file=false)
 
getSheetTitle()
Return the current sheet title. 
 
getCoordByColumnAndRow(int $pColumn=1, int $pRow=1)
Get cell coordinate (e.g. 
 
getSheetCount()
Returns number of sheets. 
 
writeToFile(string $a_file)
Save workbook to file. 
 
addSheet(string $a_name, bool $a_activate=true)
Add sheet. 
 
getCell(int $a_row, int $a_col)
Returns the value of a cell. 
 
This file is part of ILIAS, a powerful learning management system published by ILIAS open source e-Le...
 
setCellByCoordinates($a_coords, $a_value)
Set cell value by coordinates. 
 
columnIndexAdjustment(int $column)
Adjustment needed because of migration PHPExcel to PhpSpreadsheet. 
 
static ilTempnam(?string $a_temp_path=null)
Returns a unique and non existing Path for e temporary file or directory. 
 
setCellArray(array $a_values, string $a_top_left='A1', $a_null_value=null)
Set cell values from array. 
 
mergeCells(string $coordinatesRange)
 
prepareDateValue(ilDateTime $a_value)
 
setActiveSheet(int $a_index)
 
static shortenTextExtended(string $a_str, int $a_len, bool $a_dots=false, bool $a_next_blank=false, bool $a_keep_extension=false)
 
loadFromFile(string $filename)
Loads a spreadsheet from file. 
 
prepareString(string $value, bool $disable_strip_tags=false)
 
setColors(string $a_coords, string $a_background, string $a_font=null)
Set cell(s) colors. 
 
sendToClient(string $a_file_name)
Send workbook to client.