"letter",
"default_font" => "Roboto",
];
/**
* Texto para la marca de agua
* @var string $marcaDeAguaTexto
*/
public $marcaDeAguaTexto = "";
/**
* Habilitar la marca de agua
* @var boolean $html
*/
public $marcaDeAgua = false;
/**
* Encoger las tablas para que quepan
* @var int $encogerTablas
*/
public $encogerTablas = 0;
/**
* Mantener proporciones de tabla
* @var boolean $mantenerProporcionTabla
*/
public $mantenerProporcionTabla = true;
/**
* Nombre del archivo al descargar
* @var string $nombreArchivo
*/
public $nombreArchivo = "";
/**
* Estilos para el pdf
* @var string $hojaDeEstilo
*/
public $hojaDeEstilo = "";
/**
* header para el pdf
* @var string $header
*/
public $header;
/**
* @var \yii\web\Request $req
*/
public $req;
/**
* @var \yii\web\Response $res
*/
public $res;
//*
/* public function behaviors() {
$behavior = parent::behaviors();
$behavior["authenticator"] = [
"class" => CompositeAuth::className(),
"authMethods" => [
QueryParamAuth::className(),
]
];
return $behavior;
} */// */
public function beforeAction($action) {
parent::beforeAction($action);
$basePath = \Yii::getAlias("@app");
$this->req = \Yii::$app->getRequest();
$this->res = \Yii::$app->getResponse();
$this->html = intval($this->req->get("html", 0)) === 1;
if ($this->html) {
$this->res->format = \yii\web\Response::FORMAT_HTML;
}
$this->descargar = intval($this->req->get("descargar", "")) === 1;
$this->marcaDeAgua = false; // intval($this->req->get("wm", 0)) === 1;
$this->hojaDeEstilo = file_get_contents("{$basePath}/web/css/pdf.css");
return true;
}
public function exportarPdf($contenido) {
try {
// $config = array_merge($this->configuracion, ['format' => 'A4']);
$mpdf = new \Mpdf\Mpdf($this->configuracion);
if (!empty($this->header)) {
$mpdf->SetHTMLHeader($this->header);
}
$mpdf->WriteHTML($this->hojaDeEstilo, \Mpdf\HTMLParserMode::HEADER_CSS);
$mpdf->SetWatermarkText($this->marcaDeAguaTexto);
$mpdf->watermark_font = 'DejaVuSansCondensed';
$mpdf->showWatermarkText = $this->marcaDeAgua;
$mpdf->watermarkTextAlpha = 0.30;
$mpdf->shrink_tables_to_fit = $this->encogerTablas;
$mpdf->keep_table_proportions = $this->mantenerProporcionTabla;
$mpdf->SetTitle($this->nombreArchivo);
$mpdf->SetDisplayMode('default');
$mpdf->SetFooter('Pag. {PAGENO} de {nbpg}');
$mpdf->showImageErrors = false;
$mpdf->useSubstitutions = false;
$mpdf->simpleTables = false;
$mpdf->WriteHTML($contenido, \Mpdf\HTMLParserMode::HTML_BODY);
$dest = $this->descargar ? "D" : "I";
if (strpos($this->nombreArchivo, '.pdf') === false) {
$this->nombreArchivo .= ".pdf";
}
header('Access-Control-Allow-Origin: *');
header('Access-Control-Expose-Headers: *');
$mpdf->Output($this->nombreArchivo, $dest);
} catch (\Exception $exception) {
throw $exception;
}
\Yii::$app->end();
}
public function afterAction($action, $result) {
if (!$this->html) {
$result = str_replace('disabled="disabled"', '', $result);
return $this->exportarPdf($result);
}
$this->marcaDeAgua = intval($this->req->get("wm", 1)) === 1;
$watermark = "background-image: url(\"data:image/svg+xml;utf8,\");";
if (!$this->marcaDeAgua) {
$watermark = "";
}
$fondo = ".fondo-privado { background-color: rgb(141,216,169,0.7) !important; }";
$result = str_replace("", "
", $result);
$result = "{$result}";
return $result;
}
/**
* funcion para generar cualquier Excel
*/
public static function Excel(
$titulo = "Reporte",
$pestania = "Reporte",
$nombre = "Reporte",
$etiquetas = [],
$campos = [],
$datos,
$usarApuntador = true, $isArray = false, $respaldo = false) {
// Create new Spreadsheet object
$basePath = \Yii::getAlias("@app");
$spreadsheet = new Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getSecurity()->setLockWindows(false);
$spreadsheet->getSecurity()->setLockStructure(false);
$spreadsheet->getActiveSheet()->getProtection()->setSheet(false);
$spreadsheet->getActiveSheet()->getProtection()->setSort(false);
$spreadsheet->getActiveSheet()->getProtection()->setInsertRows(false);
$spreadsheet->getActiveSheet()->getProtection()->setFormatCells(false);
// Set document properties
$spreadsheet->getProperties()->setCreator('eDesarrollos')
->setLastModifiedBy('eDesarrollos')
->setTitle($titulo)
->setDescription($titulo);
$spreadsheet->getActiveSheet()->setTitle($pestania);
$style_titulo = [
'font' => [
'bold' => true,
'size' => 13,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
]
];
$style_titulo_etiquestas = [
'font' => [
'bold' => true,
'size' => 11,
'color' => ['rgb' => '000000'],
'background' => ['rgb' => '4c5966'],
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER_CONTINUOUS,
],
'fill' => [
'type' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_GRADIENT_LINEAR,
'rotation' => 90,
'startcolor' => ['argb' => '000000',],
'endcolor' => ['argb' => '000000',],
],
];
$spreadsheet->setActiveSheetIndex(0);
$i = $respaldo ? 1 : 7;
$ltrs = [];
$ltr = 65;
$ltr2 = 64;
foreach ($etiquetas as $v) {
if ($ltr2 >= 65) {
//if(!in_array(chr($ltr2), ["[","]","\\","^","_","`"]))
$letra = chr($ltr2) . chr($ltr);
} else {
$letra = chr($ltr);
}
$ltrs[] = $letra;
$spreadsheet->getActiveSheet()->setCellValue($letra . $i, $v);
if ($ltr >= 90) {
$ltr2++;
$ltr = 65;
} else {
$ltr++;
}
}
// Add some data
$i++; //Es el renglón inicial
if ($usarApuntador) {
/* @var $datos ActiveQuery */
if (!$isArray) {
foreach ($datos->each() as $v) {
$l = 0;
foreach ($campos as $k => $a) {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$l++;
}
$i++;
}
} else {
foreach ($datos as $v) {
$l = 0;
foreach ($campos as $k => $a) {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] . "-" : "---")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$l++;
}
$i++;
}
}
} else {
foreach ($datos as $v) {
$l = 0;
foreach ($campos as $k => $a) {
if (gettype($v[$a]) === 'array') {
if (isset($v[$a][1]) && $v[$a][1] === "html") {
$html = new Html();
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a][0]) ? $html->toRichTextObject($v[$a][0]) : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
} else {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a][0]) ? $v[$a][0] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$spreadsheet
->getActiveSheet()
->getStyle($ltrs[$l] . $i)
->getNumberFormat()
->setFormatCode(NumberFormat::FORMAT_CURRENCY_USD);
}
} else {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
}
$l++;
}
$i++;
}
}
// Rename worksheet
// $spreadsheet->getStyle('A1:A3')->getNumberFormat()->setFormatCode('#,##0.00');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);
$ultima_letra = array_pop($ltrs);
if (!$respaldo) {
$spreadsheet->getActiveSheet()->mergeCells('A3:' . $ultima_letra . "3");
$spreadsheet->getActiveSheet()->getStyle("A3:" . $ultima_letra . "3")->applyFromArray($style_titulo);
$spreadsheet->getActiveSheet()->setCellValue('A3', $titulo);
//$spreadsheet->getActiveSheet()->setCellValue('A2', '=HIPERVINCULO("http://www.google.com/","Google")');
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath($basePath . '/web/img/logo-salud.png');
$objDrawing->setWidth(300);
$objDrawing->setCoordinates('A1');
$objDrawing->setWorksheet($spreadsheet->getActiveSheet());
$spreadsheet->getActiveSheet()->getStyle("A7:" . $ultima_letra . "7")->applyFromArray($style_titulo_etiquestas);
} else
$spreadsheet->getActiveSheet()->getStyle("A1:" . $ultima_letra . "1")->applyFromArray($style_titulo_etiquestas);
// Redirect output to a client's web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $nombre . '"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
}
public static function Excelp($titulo = "Reporte", $pestania = "Reporte", $nombre = "Reporte", $etiquetas = [], $campos = [], $datos, $usarApuntador = true, $isArray = false, $respaldo = false) {
// Create new Spreadsheet object
$basePath = \Yii::getAlias("@app");
$spreadsheet = new Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getSecurity()->setLockWindows(false);
$spreadsheet->getSecurity()->setLockStructure(false);
$spreadsheet->getActiveSheet()->getProtection()->setSheet(false);
$spreadsheet->getActiveSheet()->getProtection()->setSort(false);
$spreadsheet->getActiveSheet()->getProtection()->setInsertRows(false);
$spreadsheet->getActiveSheet()->getProtection()->setFormatCells(false);
// Set document properties
$spreadsheet->getProperties()->setCreator('pbr')->setLastModifiedBy('pbr')->setTitle($titulo)
->setDescription($titulo);
$spreadsheet->getActiveSheet()->setTitle($pestania);
$style_titulo = [
'font' => [
'bold' => true,
'size' => 13,
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER,
]
];
$style_titulo_etiquestas = [
'font' => [
'bold' => true,
'size' => 11,
'color' => ['rgb' => '000000'],
'background' => ['rgb' => '4c5966'],
],
'alignment' => [
'horizontal' => Alignment::HORIZONTAL_CENTER_CONTINUOUS,
],
'fill' => [
'type' => Fill::FILL_GRADIENT_LINEAR,
'rotation' => 90,
'startcolor' => ['argb' => '000000',],
'endcolor' => ['argb' => '000000',],
],
];
$spreadsheet->setActiveSheetIndex(0);
$i = $respaldo ? 1 : 7;
$ltrs = [];
$ltr2 = 65;
$ltr = 65;
foreach ($etiquetas as $v) {
if ($ltr > 90) {
$letra = "A" . chr($ltr2);
} else {
$letra = chr($ltr);
}
$ltrs[] = $letra;
$spreadsheet->getActiveSheet()->setCellValue($letra . $i, $v);
if ($ltr > 90) {
$ltr2++;
}
$ltr++;
}
// Add some data
$i++; //Es el renglón inicial
if ($usarApuntador) {
/* @var $datos ActiveQuery */
if (!$isArray) {
foreach ($datos->each() as $v) {
$l = 0;
foreach ($campos as $k => $a) {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$l++;
}
$i++;
}
} else {
foreach ($datos as $v) {
$l = 0;
foreach ($campos as $k => $a) {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$l++;
}
$i++;
}
}
} else {
foreach ($datos as $v) {
$l = 0;
foreach ($campos as $k => $a) {
$spreadsheet
->getActiveSheet()
->setCellValue($ltrs[$l] . $i, isset($v[$a]) ? $v[$a] : "")
->getColumnDimension($ltrs[$l])
->setAutoSize(true);
$l++;
}
$i++;
}
}
// Rename worksheet
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);
$ultima_letra = array_pop($ltrs);
if (!$respaldo) {
$spreadsheet->getActiveSheet()->mergeCells('A3:' . $ultima_letra . "3");
$spreadsheet->getActiveSheet()->getStyle("A3:" . $ultima_letra . "3")->applyFromArray($style_titulo);
$spreadsheet->getActiveSheet()->setCellValue('A3', $titulo);
//$spreadsheet->getActiveSheet()->setCellValue('A2', '=HIPERVINCULO("http://www.google.com/","Google")');
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath($basePath . '/web/img/logo-salud.png');
$objDrawing->setWidth(300);
$objDrawing->setCoordinates('A1');
$objDrawing->setWorksheet($spreadsheet->getActiveSheet());
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath($basePath . '/web/img/sa.png');
$objDrawing->setWidth(150);
$objDrawing->setCoordinates('M1');
$objDrawing->setWorksheet($spreadsheet->getActiveSheet());
$spreadsheet->getActiveSheet()->setCellValue('N3', " ");
$spreadsheet->getActiveSheet()->setCellValue('O3', " ");
//$spreadsheet->getActiveSheet()->getStyle("A7:" . $ultima_letra . "7")->applyFromArray($style_titulo_etiquestas);
}
// Redirect output to a client's web browser (Xlsx)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $nombre . '"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
}
public function excelMir($datos = []) {
// Create new Spreadsheet object
$nombre = "excels.xlsx";
$titulo = "Matriz de Indicadores para Resultados (2022)";
$pestania = "pestania";
$spreadsheet = new Spreadsheet();
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getSecurity()->setLockWindows(false);
$spreadsheet->getSecurity()->setLockStructure(false);
$spreadsheet->getActiveSheet()->getProtection()->setSheet(false);
$spreadsheet->getActiveSheet()->getProtection()->setSort(false);
$spreadsheet->getActiveSheet()->getProtection()->setInsertRows(false);
$spreadsheet->getActiveSheet()->getProtection()->setFormatCells(false);
// Set document properties
$spreadsheet->getProperties()->setCreator('pbr')->setLastModifiedBy('pbr')->setTitle($titulo)->setDescription($titulo);
$spreadsheet->getActiveSheet()->setTitle($pestania);
$style_titulo = [
'font' => [
'bold' => true,
'size' => 13,
],
'alignment' => [
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
]
];
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->setCellValue("A8", "Dependencia y/o Entidad:");
$spreadsheet->getActiveSheet()->setCellValue("A9", "Programa Presupuestario:");//Eje De PED:
$spreadsheet->getActiveSheet()->setCellValue("A10", "Eje De PED:");//:
$spreadsheet->getActiveSheet()->setCellValue("A11", "Objetivo del PED:");
$spreadsheet->getActiveSheet()->setCellValue("A12", "Beneficiarios:");
// Rename worksheet
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->mergeCells('F4:K4');
$spreadsheet->getActiveSheet()->getStyle('F4:K4')->applyFromArray($style_titulo);
$spreadsheet->getActiveSheet()->setCellValue('F4', $titulo);
$losbenificiarios = "";
if (count($datos["benificiarios"]) > 0) {
foreach ($datos["benificiarios"] as $ben) {
$losbenificiarios .= "{$ben->beneficiario->nombre}, ";
}
}
$spreadsheet->setActiveSheetIndex(0);
$spreadsheet->getActiveSheet()->setCellValue("C8", $datos["dependencia"]->nombre);
$spreadsheet->getActiveSheet()->setCellValue("C9", $datos["programa"]->nombre);
$spreadsheet->getActiveSheet()->setCellValue("C10", $datos["eje"]->nombre);
$spreadsheet->getActiveSheet()->setCellValue("C11", $datos["mir"]->objetivo->nombre);
$spreadsheet->getActiveSheet()->setCellValue("C12", $losbenificiarios);
$spreadsheet->getActiveSheet()->setCellValue("A14", "");
$spreadsheet->getActiveSheet()->setCellValue("B14", "Resumen Narrativo\n(Objetivos)");
$spreadsheet->getActiveSheet()->mergeCells('B14:B15');
$spreadsheet->getActiveSheet()->setCellValue("C14", "Indicadores");
$spreadsheet->getActiveSheet()->mergeCells('C14:E14');
$spreadsheet->getActiveSheet()->setCellValue("F14", "Programación");
$spreadsheet->getActiveSheet()->mergeCells('F14:J14');
$spreadsheet->getActiveSheet()->setCellValue("K14", "Meta % de Anua");
$spreadsheet->getActiveSheet()->setCellValue("L14", "% de Avance");
$spreadsheet->getActiveSheet()->setCellValue("M14", "Linea Base (año base)");
$spreadsheet->getActiveSheet()->setCellValue("N14", "Sentido");
$spreadsheet->getActiveSheet()->setCellValue("O14", "Frecuencia");
$spreadsheet->getActiveSheet()->setCellValue("P14", "Medios de Verificación\n(Fuentes)");
$spreadsheet->getActiveSheet()->setCellValue("Q14", "Supuestos");
$spreadsheet->getActiveSheet()->mergeCells('K14:K15');
$spreadsheet->getActiveSheet()->mergeCells('L14:L15');
$spreadsheet->getActiveSheet()->mergeCells('M14:M15');
$spreadsheet->getActiveSheet()->mergeCells('N14:N15');
$spreadsheet->getActiveSheet()->mergeCells('O14:O15');
$spreadsheet->getActiveSheet()->mergeCells('P14:P15');
$spreadsheet->getActiveSheet()->mergeCells('Q14:Q15');
$spreadsheet->getActiveSheet()->getStyle('A14:Q14')->applyFromArray($style_titulo);
$spreadsheet->getActiveSheet()->getStyle('A15:Q15')->applyFromArray($style_titulo);
$spreadsheet->getActiveSheet()->setCellValue("C15", "Nombre");
$spreadsheet->getActiveSheet()->setCellValue("D15", "Unidad de\nMedida");
$spreadsheet->getActiveSheet()->setCellValue("E15", "Fórmula");
$spreadsheet->getActiveSheet()->setCellValue("F15", "I");
$spreadsheet->getActiveSheet()->setCellValue("G15", "II");
$spreadsheet->getActiveSheet()->setCellValue("H15", "III");
$spreadsheet->getActiveSheet()->setCellValue("I15", "IV");
$spreadsheet->getActiveSheet()->setCellValue("J15", "Avance\nAcumulado");
$objDrawing = $this->cargarImagen($spreadsheet, '/web/img/logo-salud.png', 300, "A1");
$objDrawing = $this->cargarImagen($spreadsheet, '/web/img/sa.png', 150, "Q5");
$spreadsheet->getActiveSheet()->setCellValue('R3', " ");
$i = 16;
if ($datos["mir"] != null) {
$nuevoNiveles = [];
foreach ($datos["niveles"] as $nivel) {
if (!isset($nuevoNiveles[$nivel->nivel])) {
$nuevoNiveles[$nivel->nivel] = [];
}
$nuevoNiveles[$nivel->nivel][] = $nivel;
}
$ordenNivel = [
"FIN",
"PROPÓSITO",
"COMPONENTE",
"ACTIVIDAD"
];
foreach ($ordenNivel as $k => $v) {
$inicio = $i;
$spreadsheet->getActiveSheet()->setCellValue("A" . $i, $v);
$fin = 0;
foreach ($nuevoNiveles[$v] as $nivel) {
$spreadsheet->getActiveSheet()->setCellValue("B" . $i, $nivel->resumen);
foreach ($nivel->matrizMIRIndicadores as $indicador) {
$spreadsheet->getActiveSheet()->setCellValue("C" . $i, $indicador->nombre);
$spreadsheet->getActiveSheet()->setCellValue("D" . $i, $indicador->unidadMedida->nombre);
$spreadsheet->getActiveSheet()->setCellValue("E" . $i, $indicador->numerador);
$spreadsheet->getActiveSheet()->setCellValue("E" . ($i + 1), $indicador->denominador);
$spreadsheet->getActiveSheet()->setCellValue("F" . $i, $indicador->numeradorT1);
$spreadsheet->getActiveSheet()->setCellValue("G" . $i, $indicador->numeradorT2);
$spreadsheet->getActiveSheet()->setCellValue("H" . $i, $indicador->numeradorT3);
$spreadsheet->getActiveSheet()->setCellValue("I" . $i, $indicador->numeradorT4);
$spreadsheet->getActiveSheet()->setCellValue("F" . ($i + 1), $indicador->denominadorT1);
$spreadsheet->getActiveSheet()->setCellValue("G" . ($i + 1), $indicador->denominadorT2);
$spreadsheet->getActiveSheet()->setCellValue("H" . ($i + 1), $indicador->denominadorT3);
$spreadsheet->getActiveSheet()->setCellValue("I" . ($i + 1), $indicador->denominadorT4);
$spreadsheet->getActiveSheet()->setCellValue("J" . $i, $indicador->avanceAcumulado);
$spreadsheet->getActiveSheet()->setCellValue("K" . $i, $indicador->metaAnual);
$spreadsheet->getActiveSheet()->setCellValue("L" . $i, $indicador->porcentajeAvance);
$spreadsheet->getActiveSheet()->setCellValue("M" . $i, $indicador->lineaBase);
$spreadsheet->getActiveSheet()->setCellValue("N" . $i, $indicador->sentido->valor);
$spreadsheet->getActiveSheet()->setCellValue("O" . $i, $indicador->frecuencia->nombre);
$spreadsheet->getActiveSheet()->setCellValue("P" . $i, $indicador->metodoVerificacion);
$spreadsheet->getActiveSheet()->setCellValue("Q" . $i, $indicador->supuestos);
$spreadsheet->getActiveSheet()->setCellValue("R" . $i, " ");
$i += 2;
}
//$spreadsheet->getActiveSheet()->mergeCells("B{$inicio}:B{$f}");
}
//$fin = $i+1;
$spreadsheet->getActiveSheet()->mergeCells("A{$inicio}:A17");
}
}
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="' . $nombre . '"');
header('Cache-Control: max-age=0');
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
}
function cargarImagen($spreadsheet, $imagen = "/web/img/logo-salud.png", $width = 300, $ubicacion = "A1") {
$basePath = \Yii::getAlias("@app");
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing();
$objDrawing->setName('Logo');
$objDrawing->setDescription('Logo');
$objDrawing->setPath($basePath . $imagen);
$objDrawing->setWidth($width);
$objDrawing->setCoordinates($ubicacion);
$objDrawing->setWorksheet($spreadsheet->getActiveSheet());
}
}