Reading a spreadsheet
use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
$spreadsheet = IOFactory::load( $file_path );
$this->worksheet = $spreadsheet->getActiveSheet();
// Get the highest worksheet column index ("A", "B", "C", etc).
$highest_column = $this->worksheet->getHighestColumn();
// Convert the highest column index to a numerical value (e.g., 'A' => 1, 'B' => 2, etc.)
$highest_column_index = Coordinate::columnIndexFromString($highest_column);
// Get first row:
for ($col = 1; $col <= $highest_column_index; $col++) {
$cell_value = $this->worksheet->getCell([$col, 1]);
}
Creating a spreadsheet
$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$i = 1;
$sheet->setCellValue( "A$i", 'Transaction ID' );
$sheet->setCellValue( "B$i", 'Email' );
$sheet->setCellValue( "C$i", 'Country' );
$sheet->setCellValue( "D$i", 'Company name' );
$sheet->setCellValue( "E$i", 'Company address' );
$sheet->setCellValue( "F$i", 'Company VAT address' );
$sheet->setCellValue( "G$i", 'Amount' );
$sheet->setCellValue( "H$i", 'Invoice number' );
$sheet->setCellValue( "I$i", 'Status' );
$sheet->setCellValue( "J$i", 'Date' );
$sheet->setCellValue( "K$i", 'Expires On' );
$sheet->getStyle('A1:K1')->applyFromArray([
'font' => [
'bold' => true,
'size' => 10,
'color' => ['rgb' => 'ffffff'],
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
'vertical' => Alignment::VERTICAL_CENTER,
],
'fill' => [
'fillType' => Fill::FILL_SOLID,
'color' => ['rgb' => '134f5c'],
],
]);
$spreadsheet->getDefaultStyle()->applyFromArray([
'font' => [
'size' => 10,
]
]);
foreach ( $this->report as $row ) {
$i++;
$sheet->setCellValue( "A$i", $row[ 'id' ] );
$sheet->setCellValue( "B$i", $row[ 'email' ] );
$sheet->setCellValue( "C$i", $row[ 'country' ] );
$sheet->setCellValue( "D$i", $row[ 'company_name' ] );
$sheet->setCellValue( "E$i", $row[ 'company_address' ] );
$sheet->setCellValue( "F$i", $row[ 'company_vat_number' ] );
$sheet->setCellValue( "G$i", $row[ 'amount' ] );
$sheet->setCellValue( "H$i", '#' .$row[ 'invoice_number' ] );
$sheet->setCellValue( "I$i", $row[ 'status' ] );
$sheet->setCellValue( "J$i", $row[ 'date' ] );
$sheet->setCellValue( "K$i", $row[ 'expires' ] );
if ( $row[ 'status' ] == 'Refunded' ) {
$sheet->getStyle("A$i:" . $sheet->getHighestColumn() . $i)->applyFromArray([
'fill' => [
'fillType' => Fill::FILL_SOLID,
'startColor' => [
'argb' => 'FFDADA', // Red color.
],
],
]);
}
}
$sheet->getStyle('F')->getNumberFormat()->setFormatCode(NumberFormat::FORMAT_NUMBER_00);
$sheet->getColumnDimension('A')->setAutoSize(true);
$sheet->getColumnDimension('B')->setAutoSize(true);
$sheet->getColumnDimension('C')->setAutoSize(true);
$sheet->getColumnDimension('D')->setWidth(30);
$sheet->getColumnDimension('E')->setWidth(30);
$sheet->getColumnDimension('F')->setAutoSize(true);
$sheet->getColumnDimension('G')->setAutoSize(true);
$sheet->getColumnDimension('H')->setAutoSize(true);
$sheet->getColumnDimension('I')->setAutoSize(true);
$sheet->getColumnDimension('J')->setAutoSize(true);
$sheet->getColumnDimension('K')->setAutoSize(true);
$this->writer = new Xlsx( $spreadsheet );
$temp_path = sys_get_temp_dir() . '/' . uniqid() . '.xlsx';
$this->writer->save( $temp_path );