Path: C:\
<?php
ini_set('max_execution_time',259200);
ini_set ( 'memory_limit' , '-1' ) ;
date_default_timezone_set('America/Sao_Paulo');
$arqxlsx="Croda-Rota.xlsx";
// Verifica se o arquivo Excel está aberto/bloqueado antes de tentar salvar
$xlsxDest = 'Excel/'.$arqxlsx;
if (file_exists($xlsxDest)) {
$ftest = @fopen($xlsxDest, 'r+');
if ($ftest === false) {
echo "<script>alert('ATENÇÃO: O arquivo \"$arqxlsx\" está aberto no Excel!\\nFeche o arquivo no Excel e tente gerar novamente.');</script>";
exit;
}
fclose($ftest);
}
$fptemp = fopen('temp.csv', 'w+');
$cabecalho="TRANS WAR TRANSPORTES LTDA. - Relação de CTes/Minutas do Grupo CRODA de ".Dia105($de)." até ".Dia105($ate);
fwrite($fptemp,$cabecalho.PHP_EOL);
fwrite($fptemp,'MOTORISTA;PLACA;VEÍCULO;LOT/FRAC/ESPECIAL;CT-E/MINUTA;NF;Total NFs;Tomador;Centro de Custo;Remetente;Destinatário;Status;Última Ocorrência;Emissão;Atualização'.PHP_EOL);
$lin=2;
$json = file_get_contents('JSON/CTes.json');
$dados=json_decode($json, true);
foreach($dados as $pag => $x){
foreach($x as $reg => $col){
$lin++;$linha=$col['nome'].';'.$col['placa'].';'.$col['rodado'].';'.$col['descricao'].';'.$col['numero'].';'.$col['NFeNumeros'].';'.$col['NFeTotal'].';'.$col['tomador'].';'.$col['centroCusto'].';'.$col['remetente'].';'.$col['destinatario'].';'.$col['status'].';'.$col['ocorrencia'].';'.$col['emissao'].';'.$col['atualizacao'].PHP_EOL;
fwrite($fptemp, $linha);
}
}
fclose($fptemp);
require '../vendor/autoload.php';
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
$spreadsheet = new Spreadsheet();
$reader = new \PhpOffice\PhpSpreadsheet\Reader\Csv();
/* Set CSV parsing options */
$reader->setDelimiter(';');
$reader->setEnclosure('"');
$reader->setSheetIndex(0);
/* Load a CSV file and save as a XLS */
$spreadsheet = $reader->load("temp.csv");
$writer = new Xlsx($spreadsheet);
$spreadsheet->getActiveSheet()->setTitle('Croda-Rota');
$spreadsheet->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
$styleArray = [
'borders' => [
'inside' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$styleArray2 = [
'borders' => [
'vertical' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$styleArray3 = [
'borders' => [
'outline' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$format = '* #,##0.00';
$format1 = '* #,##0.00';
$format2 = '* ###';
$spreadsheet->getActiveSheet()->getStyle('A1:O2')->applyFromArray($styleArray);
$spreadsheet->getActiveSheet()->getStyle('A3:o'.$lin)->applyFromArray($styleArray2);
$spreadsheet->getActiveSheet()->getStyle('A3:O'.$lin)->applyFromArray($styleArray3);
$spreadsheet->getActiveSheet()->getStyle('A1:O2')->getAlignment()->setWrapText(true);
$spreadsheet->getActiveSheet()->getStyle('a1:O1')->getFont()->setSize(14);
$spreadsheet->getActiveSheet()->getStyle('a2:O2')->getFont()->setSize(12);
$spreadsheet->getActiveSheet()->getStyle('a1:O2')->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getStyle('F2:F'.$lin)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_LEFT);
$spreadsheet->getActiveSheet()->getStyle('a1:O2')
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('A1:O2')
->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('L3:L'.$lin)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('B3:E'.$lin)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('N3:O'.$lin)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('A1:O2')
->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_WHITE);
$spreadsheet->getActiveSheet()->getStyle('G3:G'.$lin)->getNumberFormat()->setFormatCode($format);
for ($c=3; $c <= $lin; $c++)
{ if ($c % 2 == 0) { $bg="d8d8d8";} else {$bg="ffffff";}
$range='A'.$c.':O'.$c;
$spreadsheet->getActiveSheet()->getStyle($range)->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB($bg);
}
$spreadsheet->getActiveSheet()->getStyle('A1:O2')->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('5882FA');
$spreadsheet->getActiveSheet()->mergeCells('A1:O1');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(10);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(18);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(23);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(12);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(20);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('M')->setWidth(40);
$spreadsheet->getActiveSheet()->getColumnDimension('N')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('O')->setWidth(25);
$writer->save('Excel/'.$arqxlsx);
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
unlink('temp.csv');
?>