Path: C:\
<?php
date_default_timezone_set('America/Sao_Paulo');
$hoje = date("Ymd"); $dateadded = date("d/m/Y");
$DT=date('d-m-Y_G\hi\m');
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
$grupo='17';$ds_grupo='CRODA';
$host = "srvtms";
$db = "dtbtransporte";
$user = "sa";
$password = "13509";
$connectionOptions = array("Database" => $db, "UID" => $user, "PWD" => $password);
$conn = sqlsrv_connect( $host, $connectionOptions);
if (!$conn){echo "ATENÇÃO!! FALHA NA CONEXÃO BANCO OMNILINK!";}
if (isset($_POST['di'])) { $inicial=$_POST['di'];} else { $inicial=$dateadded;}
if (isset($_POST['df'])) { $final=$_POST['df'];} else { $final=$dateadded;}
$ano1=substr($inicial, 6);
$mes1=substr($inicial, 3,-5);
$dia1=substr($inicial, 0,-8);
$data1=$ano1."-".$mes1."-".$dia1;
$ano2=substr($final, 6);
$mes2=substr($final, 3,-5);
$dia2=substr($final, 0,-8);
$data2=$ano2."-".$mes2."-".$dia2;
$tsql= "SELECT A.id_PedidoColeta as Coleta_TW
,Convert(varchar(30), B.ds_Pessoa) as Fornecedor
,Convert(varchar(30), C.ds_Pessoa) as Destinatario
,Convert(varchar(27), D.ds_Cidade) as Local
,A.qt_Volume as Volume
,A.kg_Mercadoria as Peso
,Convert(varchar(10), A.dt_Coleta, 103) as Data_Realizada
,Convert(varchar(27), F.ds_Pessoa) as Motorista
,X.nr_NotaFiscalInteiro as nrNF
,X.vl_NotaFiscal as valor
,X.qt_Volume as VolumeNF
,X.kg_Mercadoria as PesoNF
,Convert(varchar(10), X.dt_Emissao, 103) as EmissaoNF
,p.cd_Placa as placa
FROM dbo.tbdPedidoColeta as A
left JOIN dtbtransporte.dbo.tbdPessoa AS B on A.id_Pessoa = B.id_Pessoa
left JOIN dtbtransporte.dbo.tbdPessoa AS C on A.id_Remetente = C.id_Pessoa
left JOIN dtbtransporte.dbo.tbdCidade AS D ON D.id_Cidade = A.id_CidadeColeta
left JOIN dtbtransporte.dbo.tbdManifesto AS G on A.id_Manifesto = G.id_Manifesto
left JOIN dtbtransporte.dbo.tbdVeiculo AS p on G.id_Veiculo = p.id_Veiculo
left JOIN dtbtransporte.dbo.tbdPessoa AS F on G.id_Motorista = F.id_Pessoa
left JOIN dtbtransporte.dbo.tbdConfiguracaoCliente AS E on E.id_Pessoa = C.id_Pessoa
left JOIN dtbtransporte.dbo.tbdItemPedidoColeta AS H on A.id_PedidoColeta = H.id_PedidoColeta
left JOIN dtbtransporte.dbo.tbdMovimentoNotaFiscal AS X on H.id_Movimento = X.id_Movimento
WHERE (Convert(varchar(10), A.dt_Coleta,120) BETWEEN '$data1' and '$data2') AND E.id_GrupoCliente='$grupo' ORDER by A.id_PedidoColeta ASC";
$cabec="DO GRUPO ".$ds_grupo;
$consulta = sqlsrv_query($conn, $tsql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if (!$consulta){echo "ATENÇÃO!! FALHA NA CONSULTA!";}
$numReg1 = sqlsrv_num_rows($consulta);
if($numReg1 ==0 ) {echo "<script language='JavaScript'>alert('Sem resultados carregados. Faça uma busca ampliando o filtro.');location.href='main.php?link=12';</script>";exit();}
$arqcsv="coleta-CRODA.csv";
$arqxlsx="coleta-CRODA.xlsx";
$file_csv = fopen($arqcsv, 'w+');
$l=1;
while ($row = sqlsrv_fetch_array($consulta, SQLSRV_FETCH_ASSOC))
{ $Coleta_TW=$row['Coleta_TW'];
$nrNF=$row['nrNF'];
$valor=$row['valor'];
$Fornecedor=trim($row['Fornecedor']);
$Destinatario=trim($row['Destinatario']);
$Local=trim($row['Local']);
$Volume=$row['VolumeNF'];
$Peso=$row['PesoNF'];
$placa=$row['placa'];
$Motorista=trim($row['Motorista']);
$Data_Realizada=$row['Data_Realizada'];
$EmissaoNF=$row['EmissaoNF'];
if ($Data_Realizada=="" or $nrNF==""){$pular="S";}else
{$linha[$l] = array($Coleta_TW,$Data_Realizada,$Fornecedor,$Destinatario,$Local,$Motorista,$placa,$nrNF,$EmissaoNF,$valor,$Volume,$Peso);++$l;}
}
$cabecalho="ACOMPANHAMENTO DE COLETAS ".$cabec." de ".$inicial." até ".$final;
fwrite($file_csv,$cabecalho.PHP_EOL);
fwrite($file_csv,'Coleta TW;Data;Fornecedor;Destinatário;Local;Motorista;Placa;Nota Fiscal;Emissão;Valor;Volume;Peso'.PHP_EOL);
for ( $i = 1; $i < $l; ++$i )
{$linha2 = $linha[$i][0]. ";" .$linha[$i][1] . ";" . $linha[$i][2].";".$linha[$i][3].";".$linha[$i][4].";".$linha[$i][5].";".$linha[$i][6].";".$linha[$i][7].";".$linha[$i][8].";".$linha[$i][9].";".$linha[$i][10].";".$linha[$i][11]. PHP_EOL;
fwrite($file_csv, $linha2);
}
fclose($file_csv);
$l=$l+2;
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('"');
$locale = 'pt_br';
$validLocale = \PhpOffice\PhpSpreadsheet\Settings::setLocale($locale);
if (!$validLocale) {
echo 'Unable to set locale to ' . $locale . " - reverting to en_us" . PHP_EOL;
}
$reader->setSheetIndex(0);
/* Load a CSV file and save as a XLS */
$spreadsheet = $reader->load($arqcsv);
$writer = new Xlsx($spreadsheet);
$spreadsheet->getActiveSheet()->setTitle('COLETAS');
$spreadsheet->getActiveSheet()->getRowDimension('1')->setRowHeight(30);
$spreadsheet->getActiveSheet()->getRowDimension('2')->setRowHeight(20);
$styleArray = [
'borders' => [
'inside' => [
'borderStyle' => \PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THIN,
'color' => ['argb' => '000000'],
],
],
];
$format = '* #,##0.00';
$format1 = '* #,###';
$spreadsheet->getActiveSheet()->getStyle('A1:L'.$l)->applyFromArray($styleArray);
$spreadsheet->getActiveSheet()->getStyle('A2:L2')->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('F4FA58');
$spreadsheet->getActiveSheet()->getStyle('a1:L1')->getFont()->setSize(14);
$spreadsheet->getActiveSheet()->getStyle('a2:L2')->getFont()->setSize(11);
$spreadsheet->getActiveSheet()->getStyle('a1:L2')->getFont()->setBold(true);
$spreadsheet->getActiveSheet()->getStyle('A1:L'.$l)
->getAlignment()->setVertical(\PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('a1:L2')
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('a1:L2')
->getFont()->getColor()->setARGB(\PhpOffice\PhpSpreadsheet\Style\Color::COLOR_WHITE);
$spreadsheet->getActiveSheet()->getStyle('A1:L2')->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB('5882FA');
$spreadsheet->getActiveSheet()->getStyle('g3:i'.$l)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('a3:b'.$l)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('i3:j'.$l)
->getAlignment()->setHorizontal(\PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER);
$spreadsheet->getActiveSheet()->getStyle('j3:j'.$l)->getNumberFormat()->setFormatCode($format);
$spreadsheet->getActiveSheet()->getStyle('l3:l'.$l)->getNumberFormat()->setFormatCode($format);
for ($c=3; $c <= $l; $c++)
{ if ($c % 2 == 0) { $bg="d8d8d8";} else {$bg="ffffff";}
$range='A'.$c.':L'.$c;
$spreadsheet->getActiveSheet()->getStyle($range)->getFill()
->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)
->getStartColor()->setARGB($bg);
}
$spreadsheet->getActiveSheet()->mergeCells('A1:L1');
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setWidth(10);
$spreadsheet->getActiveSheet()->getColumnDimension('B')->setWidth(12);
$spreadsheet->getActiveSheet()->getColumnDimension('C')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('D')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('E')->setWidth(30);
$spreadsheet->getActiveSheet()->getColumnDimension('F')->setWidth(35);
$spreadsheet->getActiveSheet()->getColumnDimension('G')->setWidth(10);
$spreadsheet->getActiveSheet()->getColumnDimension('H')->setWidth(10);
$spreadsheet->getActiveSheet()->getColumnDimension('I')->setWidth(12);
$spreadsheet->getActiveSheet()->getColumnDimension('J')->setWidth(15);
$spreadsheet->getActiveSheet()->getColumnDimension('K')->setWidth(8);
$spreadsheet->getActiveSheet()->getColumnDimension('L')->setWidth(10);
$writer->save($arqxlsx);
$spreadsheet->disconnectWorksheets();
unset($spreadsheet);
unlink($arqcsv);
echo "<script language='JavaScript'>alert('Planilha EXCEL gerada com Sucesso! \\nTecle OK para BAIXAR.');location.href='coletacroda.php?arquivo=".$arqxlsx."';</script>";
?>