
Originariamente inviata da
Zioraff
Ho bisogno di usare questa classe per generare dei bei file di excel con dati da database, con formattazioni avanzate e formule
ma non trovo nessun tutorial in italiano,
che voi sappiate ne esiste uno?
Con l'Inglese è sempre difficile.
uhm no, in effetti la documentazione in generale non la trovo un granchè.
ti posto un mio esempio se può esserti utile:
Codice PHP:
<?php
include_once 'PhpSpreadsheet/Bootstrap.php';
$xls = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
$xls->getProperties()->setCreator('IO')
->setLastModifiedBy('IO')
->setTitle("TITOLO")
->setSubject("SUBJECT ")
->setDescription("DESCRIZIONE ");
$xls->setActiveSheetIndex(0)
->setCellValue('A1', 'ARTICOLO')
->setCellValue('B1', 'DESCRIZIONE')
->setCellValue('C1', 'PREZZO')
->setCellValue('D1', '10%')
->setCellValue('E1', '20%');
$row = 2;
// eseguo la query su db (quello dipende da cosa usi per estrarre i dati, ed indipendente da phpexcel)
foreach ($query as $l) {
$xls->setActiveSheetIndex(0)
->setCellValue('A' . $row, $l['listino_articolo_codice'])
->setCellValue('B' . $row, $l['articolo_descrizione_ita'])
->setCellValue('C' . $row, number_format($l['listino_prezzo'], 2, ',', '.'))
->setCellValue('D' . $row, number_format($pr10, 0, ',', '.'))
->setCellValue('E' . $row, number_format($pr20, 0, ',', '.'));
$row++;
}
// imposto l'autosize per le colonne
foreach (range('A', $xls->getActiveSheet()->getHighestDataColumn()) as $col) {
$xls->getActiveSheet()->getColumnDimension($col)->setAutoSize(true);
}
// imposto la prima riga in grassetto
$xls->getActiveSheet()->getStyle('A1:Z1')->getFont()->setBold(TRUE);
// imposto il sorting
$xls->getActiveSheet()->getProtection()->setSort(TRUE);
// imposto la prima in grigio
$xls->getActiveSheet()->getStyle('A1:Z1')->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setRGB('C9C9C9');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="file.xls"');
header('Cache-Control: max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($xls, 'Xls');
$writer->save('php://output');
c'è qualche funzione sparsa qua e la.
vedi se può esserti d'aiuto!