Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 22... Línea 22...
22
 * @package    core
22
 * @package    core
23
 */
23
 */
Línea 24... Línea 24...
24
 
24
 
Línea 25... Línea 25...
25
defined('MOODLE_INTERNAL') || die();
25
defined('MOODLE_INTERNAL') || die();
26
 
-
 
-
 
26
 
27
require_once("$CFG->libdir/phpspreadsheet/vendor/autoload.php");
27
use PhpOffice\PhpSpreadsheet\Cell\CellAddress;
28
 
28
use PhpOffice\PhpSpreadsheet\Cell\CellRange;
29
use \PhpOffice\PhpSpreadsheet\Spreadsheet;
29
use PhpOffice\PhpSpreadsheet\Spreadsheet;
30
use \PhpOffice\PhpSpreadsheet\IOFactory;
30
use PhpOffice\PhpSpreadsheet\IOFactory;
31
use \PhpOffice\PhpSpreadsheet\Cell\Coordinate;
31
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
32
use \PhpOffice\PhpSpreadsheet\Cell\DataType;
32
use PhpOffice\PhpSpreadsheet\Cell\DataType;
33
use \PhpOffice\PhpSpreadsheet\Shared\Date;
33
use PhpOffice\PhpSpreadsheet\Shared\Date;
34
use \PhpOffice\PhpSpreadsheet\Style\Alignment;
34
use PhpOffice\PhpSpreadsheet\Style\Alignment;
35
use \PhpOffice\PhpSpreadsheet\Style\Border;
35
use PhpOffice\PhpSpreadsheet\Style\Border;
36
use \PhpOffice\PhpSpreadsheet\Style\Fill;
36
use PhpOffice\PhpSpreadsheet\Style\Fill;
37
use \PhpOffice\PhpSpreadsheet\Style\Font;
37
use PhpOffice\PhpSpreadsheet\Style\Font;
38
use \PhpOffice\PhpSpreadsheet\Style\NumberFormat;
38
use PhpOffice\PhpSpreadsheet\Style\NumberFormat;
Línea 39... Línea 39...
39
use \PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
39
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
40
use \PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
40
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
41
 
41
 
42
/**
42
/**
Línea 201... Línea 201...
201
     */
201
     */
202
    public function write_string($row, $col, $str, $format = null) {
202
    public function write_string($row, $col, $str, $format = null) {
203
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
203
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
204
        $col += 1;
204
        $col += 1;
Línea -... Línea 205...
-
 
205
 
-
 
206
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
205
 
207
 
206
        $this->worksheet->getStyleByColumnAndRow($col, $row + 1)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_TEXT);
208
        $this->worksheet->getStyle($celladdress)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_TEXT);
207
        $this->worksheet->setCellValueExplicitByColumnAndRow($col, $row + 1, $str, DataType::TYPE_STRING);
209
        $this->worksheet->getCell($celladdress)->setValueExplicit($str, DataType::TYPE_STRING);
208
        $this->apply_format($row, $col, $format);
210
        $this->apply_format($row, $col, $format);
Línea 209... Línea 211...
209
    }
211
    }
210
 
212
 
Línea 218... Línea 220...
218
     */
220
     */
219
    public function write_number($row, $col, $num, $format = null) {
221
    public function write_number($row, $col, $num, $format = null) {
220
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
222
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
221
        $col += 1;
223
        $col += 1;
Línea -... Línea 224...
-
 
224
 
-
 
225
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
222
 
226
 
223
        $this->worksheet->getStyleByColumnAndRow($col, $row + 1)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_GENERAL);
227
        $this->worksheet->getStyle($celladdress)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_GENERAL);
224
        $this->worksheet->setCellValueExplicitByColumnAndRow($col, $row + 1, $num, DataType::TYPE_NUMERIC);
228
        $this->worksheet->getCell($celladdress)->setValueExplicit($num, DataType::TYPE_NUMERIC);
225
        $this->apply_format($row, $col, $format);
229
        $this->apply_format($row, $col, $format);
Línea 226... Línea 230...
226
    }
230
    }
227
 
231
 
Línea 235... Línea 239...
235
     */
239
     */
236
    public function write_url($row, $col, $url, $format = null) {
240
    public function write_url($row, $col, $url, $format = null) {
237
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
241
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
238
        $col += 1;
242
        $col += 1;
Línea 239... Línea 243...
239
 
243
 
-
 
244
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
-
 
245
 
-
 
246
        $cell = $this->worksheet->getCell($celladdress);
240
        $this->worksheet->setCellValueByColumnAndRow($col, $row + 1, $url);
247
        $cell->setValue($url);
241
        $this->worksheet->getCellByColumnAndRow($col, $row + 1)->getHyperlink()->setUrl($url);
248
        $cell->getHyperlink()->setUrl($url);
242
        $this->apply_format($row, $col, $format);
249
        $this->apply_format($row, $col, $format);
Línea 243... Línea 250...
243
    }
250
    }
244
 
251
 
Línea 261... Línea 268...
261
            $getdate['hours'],
268
            $getdate['hours'],
262
            $getdate['minutes'],
269
            $getdate['minutes'],
263
            $getdate['seconds']
270
            $getdate['seconds']
264
        );
271
        );
Línea 265... Línea 272...
265
 
272
 
-
 
273
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
266
        $this->worksheet->setCellValueByColumnAndRow($col, $row + 1, $exceldate);
274
 
267
        $style = $this->worksheet->getStyleByColumnAndRow($col, $row + 1);
275
        $this->worksheet->getCell($celladdress)->setValue($exceldate);
268
        $style->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_XLSX22);
276
        $this->worksheet->getStyle($celladdress)->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_DATE_XLSX22);
269
        $this->apply_format($row, $col, $format);
277
        $this->apply_format($row, $col, $format);
Línea 270... Línea 278...
270
    }
278
    }
271
 
279
 
Línea 279... Línea 287...
279
     */
287
     */
280
    public function write_formula($row, $col, $formula, $format = null) {
288
    public function write_formula($row, $col, $formula, $format = null) {
281
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
289
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
282
        $col += 1;
290
        $col += 1;
Línea -... Línea 291...
-
 
291
 
283
 
292
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
284
        $this->worksheet->setCellValueExplicitByColumnAndRow($col, $row + 1, $formula, DataType::TYPE_FORMULA);
293
        $this->worksheet->getCell($celladdress)->setValueExplicit($formula, DataType::TYPE_FORMULA);
285
        $this->apply_format($row, $col, $format);
294
        $this->apply_format($row, $col, $format);
Línea 286... Línea 295...
286
    }
295
    }
287
 
296
 
Línea 294... Línea 303...
294
     */
303
     */
295
    public function write_blank($row, $col, $format = null) {
304
    public function write_blank($row, $col, $format = null) {
296
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
305
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
297
        $col += 1;
306
        $col += 1;
Línea 298... Línea 307...
298
 
307
 
-
 
308
        $celladdress = CellAddress::fromColumnAndRow($col, $row + 1);
299
        $this->worksheet->setCellValueByColumnAndRow($col, $row + 1, '');
309
        $this->worksheet->getCell($celladdress)->setValue('');
300
        $this->apply_format($row, $col, $format);
310
        $this->apply_format($row, $col, $format);
Línea 301... Línea 311...
301
    }
311
    }
302
 
312
 
Línea 443... Línea 453...
443
    * @param integer $lastrow  Last row of the area to merge
453
    * @param integer $lastrow  Last row of the area to merge
444
    * @param integer $lastcol  Last column of the area to merge
454
    * @param integer $lastcol  Last column of the area to merge
445
    */
455
    */
446
    public function merge_cells($firstrow, $firstcol, $lastrow, $lastcol) {
456
    public function merge_cells($firstrow, $firstcol, $lastrow, $lastcol) {
447
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
457
        // For PhpSpreadsheet library, the column indexes start on 1 (instead of 0 as before).
-
 
458
        $this->worksheet->mergeCells(
-
 
459
            new CellRange(
448
        $this->worksheet->mergeCellsByColumnAndRow($firstcol + 1, $firstrow + 1, $lastcol + 1, $lastrow + 1);
460
                CellAddress::fromColumnAndRow($firstcol + 1, $firstrow + 1),
-
 
461
                CellAddress::fromColumnAndRow($lastcol + 1, $lastrow + 1),
-
 
462
            )
-
 
463
        );
449
    }
464
    }
Línea 450... Línea 465...
450
 
465
 
451
    protected function apply_format($row, $col, $format = null) {
466
    protected function apply_format($row, $col, $format = null) {
452
        if (!$format) {
467
        if (!$format) {
453
            $format = new MoodleExcelFormat();
468
            $format = new MoodleExcelFormat();
454
        } else if (is_array($format)) {
469
        } else if (is_array($format)) {
455
            $format = new MoodleExcelFormat($format);
470
            $format = new MoodleExcelFormat($format);
456
        }
471
        }
457
        $this->worksheet->getStyleByColumnAndRow($col, $row + 1)->applyFromArray($format->get_format_array());
472
        $this->worksheet->getStyle(CellAddress::fromColumnAndRow($col, $row + 1))->applyFromArray($format->get_format_array());
Línea 458... Línea 473...
458
    }
473
    }
459
 
474
 
460
    protected function apply_column_format($col, $format = null) {
475
    protected function apply_column_format($col, $format = null) {