<?php

//php test_xlsxwriter.php >out.xlsx
//Generates a spreadsheet with multiple sheets, 10K rows, 10 columns
include_once __DIR__ . '/../xlsxwriter.class.php';
$headers = array('id' => 'string', 'name' => 'string', 'description' => 'string', 'n1' => 'string', 'n2' => 'string', 'n3' => 'string', 'n4' => 'string', 'n5' => 'string', 'n6' => 'string', 'n7' => 'string');
$sheet_names = array('january', 'february', 'march', 'april', 'may', 'june');
$start = microtime(true);
$writer = new XLSXWriter();
foreach ($sheet_names as $sheet_name) {
    $writer->writeSheetHeader($sheet_name, $headers);
    for ($i = 0; $i < 10000; $i++) {
        $writer->writeSheetRow($sheet_name, random_row());
    }
}
$writer->writeToStdOut();
file_put_contents("php://stderr", '#' . floor(memory_get_peak_usage() / 1024 / 1024) . "MB" . "\n");
file_put_contents("php://stderr", '#' . sprintf("%1.2f", microtime(true) - $start) . "s" . "\n");
function random_row()
{
    return $row = array(rand() % 10000, chr(rand(97, 122)) . chr(rand(97, 122)) . chr(rand(97, 122)) . chr(rand(97, 122)) . chr(rand(97, 122)) . chr(rand(97, 122)) . chr(rand(97, 122)), md5(uniqid()), rand() % 10000, rand() % 10000, rand() % 10000, rand() % 10000, rand() % 10000, rand() % 10000, rand() % 10000);
}
Esempio n. 2
3
 static function xls()
 {
     return function ($req, $res, $svc, $app) {
         $time = date('H:i:s', time());
         $date = date('d-m-Y');
         $exportFile = __DIR__ . "/../xls/relatorio-tickets-{$time}.xlsx";
         $headers = [['Protocolo', 'Operadora', 'Status', 'Cidade', 'Problema', 'Designação', 'Cliente Final', 'Data']];
         $rows = array_map(function ($ticket) {
             return [$ticket->protocolo, $ticket->operadora, $ticket->status, $ticket->cidade, $ticket->tipo_problema, $ticket->designacao, $ticket->cliente_final, date('d/m/Y', strtotime($ticket->criado_em))];
         }, Tickets::filter($req, $app));
         $writer = new \XLSXWriter();
         $writer->writeSheet(array_merge($headers, $rows), 'Relatório ' . $date);
         $writer->setAuthor('Sim TV - Trouble Ticket');
         $writer->writeToFile($exportFile);
         $res->file($exportFile, "Relatório Tickets {$time}.xlsx");
     };
 }
<?php

include_once "xlsxwriter.class.php";
$header = array("string", "string", "string", "string", "string");
$row1 = array("Merge Cells Example");
$row2 = array(100, 200, 300, 400, 500);
$row3 = array(110, 210, 310, 410, 510);
$sheet_name = 'Sheet1';
$writer = new XLSXWriter();
$writer->writeSheetHeader($sheet_name, $header, $suppress_header_row = true);
$writer->writeSheetRow($sheet_name, $row1);
$writer->writeSheetRow($sheet_name, $row2);
$writer->writeSheetRow($sheet_name, $row3);
$writer->markMergedCell($sheet_name, $start_row = 0, $start_col = 0, $end_row = 0, $end_col = 4);
$writer->writeToFile('example.xlsx');
Esempio n. 4
2
<?php

include_once "../xlsxwriter.class.php";
$header = array('year' => 'string', 'month' => 'string', 'amount' => 'money', 'first_event' => 'datetime', 'second_event' => 'date');
$data1 = array(array('2003', '1', '-50.5', '2010-01-01 23:00:00', '2012-12-31 23:00:00'), array('2003', '=B2', '23.5', '2010-01-01 00:00:00', '2012-12-31 00:00:00'));
$data2 = array(array('2003', '01', '343.12'), array('2003', '02', '345.12'));
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$writer->writeSheet($data1, 'Sheet1', $header);
$writer->writeSheet($data2, 'Sheet2');
$writer->writeToFile('test.xlsx');
Esempio n. 5
1
<?php

include_once "../../xlsxwriter.class.php";
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$header = array('General' => 'string', 'Simple Integer' => '0', '2 Decimal Places Integer' => '0.00', 'Integer 1000s Group' => '#,##0', '1000s,Decimal,Leading Zero' => '#,##0.00', '1000s,Decimal,No Leading Zero' => '#,###.00', 'Negative In Parentheses' => '#,##0_);(#,##0)', 'Negative In Parentheses With Decimal' => '#,##0.00_);(#,##0.00)');
$row = array('1000', '2000', '3000', '4000', '0.50', '0.50', '-50', '-50');
$writer->writeSheet(array($row), 'Number', $header);
$header = array('Whole Percent' => '0%', 'Decimal Percent' => '0.00%');
$row = array('1', '1');
$writer->writeSheet(array($row), 'Percent', $header);
$header = array('USD' => '[$$-409]#,##0.00;[RED]-[$$-409]#,##0.00', 'CAD' => '[$$-1009]#,##0.00;[RED]-[$$-1009]#,##0.00', 'Euro' => '#,##0.00 [$€-407];[RED]-#,##0.00 [$€-407]', 'JPY' => '[$¥-411]#,##0;[RED]-[$¥-411]#,##0', 'CNY' => '[$¥-804]#,##0.00;[RED]-[$¥-804]#,##0.00');
$row = array('1000', '2000', '3000', '4000', '5000');
$writer->writeSheet(array($row), 'Currency', $header);
$header = array('M/D/YY' => 'M/D/YY', 'MM/DD/YYYY' => 'MM/DD/YYYY', 'YYYY-MM-DD' => 'YYYY-MM-DD', 'YYYY-MM-DD HH:MM:SS' => 'YYYY-MM-DD HH:MM:SS', 'NN' => 'NN', 'NNN' => 'NNN', 'NNNN' => 'NNNN', 'D' => 'D', 'DD' => 'DD', 'M' => 'M', 'MM' => 'MM', 'MMM' => 'MMM', 'MMMM' => 'MMMM', 'YY' => 'YY', 'YYYY' => 'YYYY', 'Q YY' => 'Q YY', 'Q YYYY' => 'Q YYYY');
$row = array('1999-01-01', '1999-01-01', '1999-12-31', '1999-12-31 00:00:00', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31', '1999-12-31');
$writer->writeSheet(array($row), 'Date', $header);
$header = array('HH:MM' => 'HH:MM', 'HH:MM:SS' => 'HH:MM:SS', 'HH:MM AM/PM' => 'HH:MM AM/PM', 'HH:MM:SS AM/PM' => 'HH:MM:SS AM/PM');
$row = array('12-31-1999 01:23:00', '12-31-1999 01:23:00', '12-31-1999 01:23:00', '12-31-1999 01:23:00');
$writer->writeSheet(array($row), 'Time', $header);
$writer->writeToFile('formats.xlsx');
Esempio n. 6
1
						$factor=0;
						$factor=getDetailedTableInfo2("vl_results_multiplicationfactor","worksheetID='$worksheetID' limit 1","factor");
						if(!$factor) {
							$factor=1;
						}
						//results
						$results.=getVLResult("roche",$worksheetID,$rq["vlSampleID"],$factor).($rcount<$rnum?", ":"");
					}
				}
				//xls
				$dataRocheResults[]=array($patientART,$patientOtherID,$facility,$numberResults,$results);
			}
		}

		//output to xlsx
		$writer = new XLSXWriter();
		$writer->setAuthor($default_institutionName);
		$writer->writeSheet($dataAbbottResults,"abbott",$headerAbbottResults);
		$writer->writeSheet($dataRocheResults,"roche",$headerRocheResults);
		$writer->writeToStdOut();
	break;
	case "clinicalrequestformsexcel":
		//filename of the excel file to be downloaded
		$filename=0;
		$filename="excel.clinical.request.forms.".getFormattedDateCRB($datetime).".xls";

		//create an instance of the class
		$xls = new ExportXLS($filename);

		//period
		$from=0;
Esempio n. 7
0
 static function xls()
 {
     return function ($req, $res, $svc, $app) {
         $time = date('H:i:s', time());
         $date = date('d-m-Y');
         $exportFile = __DIR__ . "/../xls/relatorio-clientes-{$time}.xlsx";
         $headers = [['Cidade', 'Contrato', 'Designação', 'Cliente', 'Velocidade', 'Operadora', 'Equipamento', 'Endereço', 'Criado em']];
         $clientes = $app->db->cadcliente;
         if ($req->cidade) {
             $clientes->where_equal('cidade', $req->cidade);
         }
         $rows = array_map(function ($cliente) {
             return [$cliente->cidade, $cliente->contrato, $cliente->designacao, $cliente->cliente, $cliente->velocidade, $cliente->operadora, $cliente->equipamento, $cliente->endereco, date('d/m/Y', strtotime($cliente->data))];
         }, $clientes->find_many());
         $writer = new \XLSXWriter();
         $writer->writeSheet(array_merge($headers, $rows), 'Relatório ' . $date);
         $writer->setAuthor('Sim TV - Trouble Ticket');
         $writer->writeToFile($exportFile);
         $res->file($exportFile, "Relatório Cliente {$time}.xlsx");
     };
 }
Esempio n. 8
0
function render($data)
{
    $tournament = $data['tournament'];
    $disciplines = $data['disciplines'];
    $header = ['Event' => 'string', 'SpielerID' => 'string', 'Name' => 'string', 'Vorname' => 'string', 'Verein' => 'string', 'Geschlecht' => 'string', 'Email' => 'string', 'Partner ID' => 'string', 'Setzplatz' => 'string'];
    $output = [];
    foreach ($disciplines as $d) {
        $dname = $d->name;
        // Fix up discipline names
        if (\preg_match('/^H([DE]) U0?([0-9]+)$/', $dname, $m)) {
            $dname = 'J' . $m[1] . ' U' . $m[2];
        } elseif (\preg_match('/^D([DE]) U0?([0-9]+)$/', $dname, $m)) {
            $dname = 'M' . $m[1] . ' U' . $m[2];
        } elseif (\preg_match('/^(DD|DE|GD|HD|HE|MX)-?\\s*([A-Z])$/', $dname, $m)) {
            $dname = $m[1] . $m[2];
        }
        $is_doubles = $d->with_partner();
        foreach ($d->entries as $er) {
            if ($er['on_waiting_list']) {
                continue;
            }
            if ($is_doubles && $er['partner'] === NULL) {
                continue;
            }
            \array_push($output, [$dname, $er['player']->textid, $er['player']->get_lastname(), $er['player']->get_firstname(), $er['player_club']->name, $er['player']->gender, $er['player']->email, $is_doubles ? $er['partner']->textid : '', $er['seeding']]);
            if ($is_doubles) {
                \array_push($output, [$dname, $er['partner']->textid, $er['partner']->get_lastname(), $er['partner']->get_firstname(), $er['partner_club']->name, $er['partner']->gender, $er['partner']->email, $is_doubles ? $er['player']->textid : '', $er['seeding']]);
            }
        }
    }
    $writer = new \XLSXWriter();
    $writer->writeSheet($output, 'Meldungen', $header);
    $safe_filename = \bmtmgr\utils\sanitize_filename($tournament->name);
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment; filename="' . $safe_filename . '.xlsx"');
    echo $writer->writeToString();
}
 public function GetFooter()
 {
     $hFile = @fopen($this->aStatusInfo['tmp_file'], 'rb');
     if ($hFile === false) {
         throw new Exception('ExcelBulkExport: Failed to open temporary data file: "' . $this->aStatusInfo['tmp_file'] . '" for reading.');
     }
     $sHeaders = fgets($hFile);
     $aHeaders = json_decode($sHeaders, true);
     $aData = array();
     while ($sLine = fgets($hFile)) {
         $aRow = json_decode($sLine);
         $aData[] = $aRow;
     }
     fclose($hFile);
     $fStartExcel = microtime(true);
     $writer = new XLSXWriter();
     $writer->setAuthor(UserRights::GetUserFriendlyName());
     $aHeaderTypes = array();
     $aHeaderNames = array();
     foreach ($aHeaders as $Header) {
         $aHeaderNames[] = $Header['label'];
         $aHeaderTypes[] = $Header['type'];
     }
     $writer->writeSheet($aData, 'Sheet1', $aHeaderTypes, $aHeaderNames);
     $fExcelTime = microtime(true) - $fStartExcel;
     //$this->aStatistics['excel_build_duration'] = $fExcelTime;
     $fTime = microtime(true);
     $data = $writer->writeToString();
     $fExcelSaveTime = microtime(true) - $fTime;
     //$this->aStatistics['excel_write_duration'] = $fExcelSaveTime;
     @unlink($this->aStatusInfo['tmp_file']);
     return $data;
 }
Esempio n. 10
0
<?php

include_once "xlsxwriter.class.php";
ini_set('display_errors', 0);
ini_set('log_errors', 1);
error_reporting(E_ALL & ~E_NOTICE);
$filename = "example.xlsx";
header('Content-disposition: attachment; filename="' . XLSXWriter::sanitize_filename($filename) . '"');
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$header = array('year' => 'string', 'month' => 'string', 'amount' => 'money', 'first_event' => 'datetime', 'second_event' => 'date');
$data1 = array(array('2003', '1', '-50.5', '2010-01-01 23:00:00', '2012-12-31 23:00:00'), array('2003', '=B2', '23.5', '2010-01-01 00:00:00', '2012-12-31 00:00:00'));
$data2 = array(array('2003', '01', '343.12'), array('2003', '02', '345.12'));
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$writer->writeSheet($data1, 'Sheet1', $header);
$writer->writeSheet($data2, 'Sheet2');
$writer->writeToStdOut();
//$writer->writeToFile('example.xlsx');
//echo $writer->writeToString();
exit(0);
<?php

include_once "xlsxwriter.class.php";
$writer = new XLSXWriter();
$writer->writeSheetHeader('Sheet1', array('c1' => 'string', 'c2' => 'string', 'c3' => 'string', 'c4' => 'string'));
//optional
for ($i = 0; $i < 50000; $i++) {
    $writer->writeSheetRow('Sheet1', array(rand() % 10000, rand() % 10000, rand() % 10000, rand() % 10000));
}
$writer->writeToFile('output.xlsx');
echo '#' . floor(memory_get_peak_usage() / 1024 / 1024) . "MB" . "\n";
 public function Run()
 {
     $sCode = 'error';
     $iPercentage = 100;
     $sMessage = Dict::Format('ExcelExporter:ErrorUnexpected_State', $this->sState);
     $fTime = microtime(true);
     try {
         switch ($this->sState) {
             case 'new':
                 $oIDSet = new DBObjectSet($this->oSearch);
                 $oIDSet->OptimizeColumnLoad(array('id'));
                 $this->aObjectsIDs = array();
                 while ($oObj = $oIDSet->Fetch()) {
                     $this->aObjectsIDs[] = $oObj->GetKey();
                 }
                 $sCode = 'retrieving-data';
                 $iPercentage = 5;
                 $sMessage = Dict::S('ExcelExporter:RetrievingData');
                 $this->iPosition = 0;
                 $this->aStatistics['objects_count'] = count($this->aObjectsIDs);
                 $this->aStatistics['data_retrieval_duration'] += microtime(true) - $fTime;
                 // The first line of the file is the "headers" specifying the label and the type of each column
                 $this->GetFieldsList($oIDSet, $this->bAdvancedMode);
                 $sRow = json_encode($this->aTableHeaders);
                 $hFile = @fopen($this->GetDataFile(), 'ab');
                 if ($hFile === false) {
                     throw new Exception('ExcelExporter: Failed to open temporary data file: "' . $this->GetDataFile() . '" for writing.');
                 }
                 fwrite($hFile, $sRow . "\n");
                 fclose($hFile);
                 // Next state
                 $this->sState = 'retrieving-data';
                 break;
             case 'retrieving-data':
                 $oCurrentSearch = clone $this->oSearch;
                 $aIDs = array_slice($this->aObjectsIDs, $this->iPosition, $this->iChunkSize);
                 $oCurrentSearch->AddCondition('id', $aIDs, 'IN');
                 $hFile = @fopen($this->GetDataFile(), 'ab');
                 if ($hFile === false) {
                     throw new Exception('ExcelExporter: Failed to open temporary data file: "' . $this->GetDataFile() . '" for writing.');
                 }
                 $oSet = new DBObjectSet($oCurrentSearch);
                 $this->GetFieldsList($oSet, $this->bAdvancedMode);
                 while ($aObjects = $oSet->FetchAssoc()) {
                     $aRow = array();
                     foreach ($this->aAuthorizedClasses as $sAlias => $sClassName) {
                         $oObj = $aObjects[$sAlias];
                         if ($this->bAdvancedMode) {
                             $aRow[] = $oObj->GetKey();
                         }
                         foreach ($this->aFieldsList[$sAlias] as $sAttCodeEx => $oAttDef) {
                             $value = $oObj->Get($sAttCodeEx);
                             if ($value instanceof ormCaseLog) {
                                 // Extract the case log as text and remove the "===" which make Excel think that the cell contains a formula the next time you edit it!
                                 $sExcelVal = trim(preg_replace('/========== ([^=]+) ============/', '********** $1 ************', $value->GetText()));
                             } else {
                                 $sExcelVal = $oAttDef->GetEditValue($value, $oObj);
                             }
                             $aRow[] = $sExcelVal;
                         }
                     }
                     $sRow = json_encode($aRow);
                     fwrite($hFile, $sRow . "\n");
                 }
                 fclose($hFile);
                 if ($this->iPosition + $this->iChunkSize > count($this->aObjectsIDs)) {
                     // Next state
                     $this->sState = 'building-excel';
                     $sCode = 'building-excel';
                     $iPercentage = 80;
                     $sMessage = Dict::S('ExcelExporter:BuildingExcelFile');
                 } else {
                     $sCode = 'retrieving-data';
                     $this->iPosition += $this->iChunkSize;
                     $iPercentage = 5 + round(75 * ($this->iPosition / count($this->aObjectsIDs)));
                     $sMessage = Dict::S('ExcelExporter:RetrievingData');
                 }
                 break;
             case 'building-excel':
                 $hFile = @fopen($this->GetDataFile(), 'rb');
                 if ($hFile === false) {
                     throw new Exception('ExcelExporter: Failed to open temporary data file: "' . $this->GetDataFile() . '" for reading.');
                 }
                 $sHeaders = fgets($hFile);
                 $aHeaders = json_decode($sHeaders, true);
                 $aData = array();
                 while ($sLine = fgets($hFile)) {
                     $aRow = json_decode($sLine);
                     $aData[] = $aRow;
                 }
                 fclose($hFile);
                 @unlink($this->GetDataFile());
                 $fStartExcel = microtime(true);
                 $writer = new XLSXWriter();
                 $writer->setAuthor(UserRights::GetUserFriendlyName());
                 $writer->writeSheet($aData, 'Sheet1', $aHeaders);
                 $fExcelTime = microtime(true) - $fStartExcel;
                 $this->aStatistics['excel_build_duration'] = $fExcelTime;
                 $fTime = microtime(true);
                 $writer->writeToFile($this->GetExcelFilePath());
                 $fExcelSaveTime = microtime(true) - $fTime;
                 $this->aStatistics['excel_write_duration'] = $fExcelSaveTime;
                 // Next state
                 $this->sState = 'done';
                 $sCode = 'done';
                 $iPercentage = 100;
                 $sMessage = Dict::S('ExcelExporter:Done');
                 break;
             case 'done':
                 $this->sState = 'done';
                 $sCode = 'done';
                 $iPercentage = 100;
                 $sMessage = Dict::S('ExcelExporter:Done');
                 break;
         }
     } catch (Exception $e) {
         $sCode = 'error';
         $sMessage = $e->getMessage();
     }
     $this->aStatistics['total_duration'] += microtime(true) - $fTime;
     $peak_memory = memory_get_peak_usage(true);
     if ($peak_memory > $this->aStatistics['peak_memory_usage']) {
         $this->aStatistics['peak_memory_usage'] = $peak_memory;
     }
     return array('code' => $sCode, 'message' => $sMessage, 'percentage' => $iPercentage);
 }
<?php

include_once "xlsxwriter.class.php";
$header = array('c1' => 'dollar', 'c2' => 'euro', 'c3' => '#,##0.00', 'c4' => '#,##0.00 [$€-407]', 'c5' => '[$¥-411]#,##0;[RED]-[$¥-411]#,##0');
$row = array(100, 200, 300, 400, 500);
$writer = new XLSXWriter();
$writer->writeSheet(array($row), 'Sheet1', $header);
$writer->writeToFile('example.xlsx');
Esempio n. 14
0
header("Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
header('Content-Transfer-Encoding: binary');
header('Cache-Control: must-revalidate');
header('Pragma: public');
$header = array('Hechos' => 'string', 'Observaciones' => 'string', 'fecha' => 'date', 'Comunidad' => 'string', 'Direccion' => 'string');
include 'spoon/spoon.php';
$objDB = new DBConexion();
$fechaInicial = $_POST['fechainicial'];
$fechaFinal = $_POST['fechafinal'];
$fecha = date_create_from_format("d/m/Y", $fechaInicial);
$fechaInicial = date_format($fecha, "Y-m-d");
$fecha = date_create_from_format("d/m/Y", $fechaFinal);
$fechaFinal = date_format($fecha, "Y-m-d");
$query = "SELECT narracion_hechos, observaciones, atenciones.fecha_registro as fechareg, comunidades.comunidad as community, ciudadanos.direccion as address\nFROM atenciones\nINNER JOIN comunidades ON comunidades.id_comunidad = atenciones.comunidad\nINNER JOIN ciudadanos ON ciudadanos.id_ciudadano = atenciones.id_ciudadano\nWHERE atenciones.fecha_registro >  '{$fechaInicial}'\nAND atenciones.fecha_registro <  '{$fechaFinal}'";
$atencionesArray = $objDB->getRecords($query);
//$data1 = array(
//    array('2003','1','-50.5','2010-01-01 23:00:00','2012-12-31 23:00:00'),
//    array('2003','=B2', '23.5','2010-01-01 00:00:00','2012-12-31 00:00:00'),
//);
//$data2 = array(
//    array('2003','01','343.12'),
//    array('2003','02','345.12'),
//);
$writer = new XLSXWriter();
$writer->setAuthor('Some Author');
$writer->writeSheet($atencionesArray, 'Sheet1', $header);
//$writer->writeSheet($data2,'Sheet2');
$writer->writeToStdOut();
//$writer->writeToFile('example.xlsx');
//echo $writer->writeToString();
exit(0);
Esempio n. 15
0
 protected function purge()
 {
     if ($this->fd) {
         if ($this->check_utf8 && !self::isValidUTF8($this->buffer)) {
             XLSXWriter::log("Error, invalid UTF8 encoding detected.");
             $this->check_utf8 = false;
         }
         fwrite($this->fd, $this->buffer);
         $this->buffer = '';
     }
 }
Esempio n. 16
0
 if (MetaModel::IsValidClass($sClassName)) {
     $oSearch = new DBObjectSearch($sClassName);
     $oSearch->AddCondition('id', 0, '=');
     // Make sure we create an empty set
     $oSet = new CMDBObjectSet($oSearch);
     $sResult = cmdbAbstractObject::GetSetAsCSV($oSet, array('showMandatoryFields' => true));
     $sClassDisplayName = MetaModel::GetName($sClassName);
     $sDisposition = utils::ReadParam('disposition', 'inline');
     if ($sDisposition == 'attachment') {
         switch ($sFormat) {
             case 'xlsx':
                 $oPage = new ajax_page("");
                 $oPage->SetContentType('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
                 $oPage->SetContentDisposition('attachment', $sClassDisplayName . '.xlsx');
                 require_once APPROOT . '/application/excelexporter.class.inc.php';
                 $writer = new XLSXWriter();
                 $writer->setAuthor(UserRights::GetUserFriendlyName());
                 $aHeaders = array(0 => explode(',', $sResult));
                 // comma is the default separator
                 $writer->writeSheet($aHeaders, $sClassDisplayName, array());
                 $oPage->add($writer->writeToString());
                 break;
             case 'csv':
             default:
                 $oPage = new CSVPage("");
                 $oPage->add_header("Content-type: text/csv; charset=utf-8");
                 $oPage->add_header("Content-disposition: attachment; filename=\"{$sClassDisplayName}.csv\"");
                 $oPage->no_cache();
                 $oPage->add($sResult);
         }
     } else {
Esempio n. 17
0
 public function crudListExcel($model, $scope)
 {
     $obj = CrudModel::createInstance($model, $scope);
     $params = $this->request->all();
     $cols = $obj->getList()->getParam('columns');
     $xls = [];
     $row = [];
     foreach ($cols as $col) {
         if ((empty($col['ctype']) || $col['ctype'] != 'checkbox') && $col['data'] != 'actions' && empty($col['invisible'])) {
             $row[] = $col['title'];
         }
     }
     $xls[] = $row;
     $query = $this->app['session']->get('current_query_info');
     if (empty($query) || !isset($query['sql']) || !isset($query['bind'])) {
         $q = CrudModelCollectionBuilder::createDataTables($obj, $params)->applyContextFilter()->getCollectionQuery()->getQuery();
         $query = ['sql' => $q->toSQL(), 'bind' => $q->getBindings()];
     }
     $rs = \DB::select($query['sql'], $query['bind']);
     foreach ($rs as $r) {
         $row = [];
         foreach ($cols as $col) {
             if ((empty($col['ctype']) || $col['ctype'] != 'checkbox') && $col['data'] != 'actions' && empty($col['invisible'])) {
                 $row[] = $r[$col['data']] ?? '';
             }
         }
         $xls[] = $row;
     }
     $writer = new \XLSXWriter();
     $writer->writeSheet($xls, 'Sheet1');
     $data = $writer->writeToString();
     header('Cache-Control: no-cache, must-revalidate');
     header('Pragma: no-cache');
     //keeps ie happy
     header('Content-Disposition: attachment; filename=xls.xlsx');
     header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
     header('Content-Length: ' . strlen($data));
     header('Content-Transfer-Encoding: binary');
     echo $data;
     exit;
 }
 /**
  * @covers XLSXWriter::writeToFile
  */
 public function testWriteToFile()
 {
     $filename = tempnam("/tmp", "xlsx_writer");
     $header = array('0' => 'string', '1' => 'string', '2' => 'string', '3' => 'string');
     $sheet = array(array('55', '66', '77', '88'), array('10', '11', '12', '13'));
     $xlsx_writer = new XLSXWriter();
     $xlsx_writer->writeSheet($sheet, 'mysheet', $header);
     $xlsx_writer->writeToFile($filename);
     $zip = new ZipArchive();
     $r = $zip->open($filename);
     $this->assertTrue($r);
     $r = $zip->numFiles > 0 ? true : false;
     $this->assertTrue($r);
     $out_sheet = array();
     for ($z = 0; $z < $zip->numFiles; $z++) {
         $inside_zip_filename = $zip->getNameIndex($z);
         if (preg_match("/sheet(\\d+).xml/", basename($inside_zip_filename))) {
             $out_sheet = $this->stripCellsFromSheetXML($zip->getFromName($inside_zip_filename));
             array_shift($out_sheet);
             $out_sheet = array_values($out_sheet);
         }
     }
     $zip->close();
     @unlink($filename);
     $r1 = self::array_diff_assoc_recursive($out_sheet, $sheet);
     $r2 = self::array_diff_assoc_recursive($sheet, $out_sheet);
     $this->assertEmpty($r1);
     $this->assertEmpty($r2);
 }