Mostrando las entradas con la etiqueta office. Mostrar todas las entradas
Mostrando las entradas con la etiqueta office. Mostrar todas las entradas

viernes, 6 de agosto de 2021

Crear archivo Xlsx con lista despegable sin límite de opciones

Crear documentos xlsx de hojas de cálculo con PHP y la librería PhpSpreadsheet es sencillo.

Para ello necesitamos descargar PhpSpreadsheet a nuestro proyecto:


composer require phpoffice/phpspreadsheet



Ahora creamos un nuevo documento de php con el siguiente código:

<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; $plantilla = new Spreadsheet(); $sheet = $plantilla->getActiveSheet(); $sheet->setCellValue('A1', 'Hola PhpSpreedsheet !');
$catalogos = $plantilla->createSheet(); $catalogos->setTitle('Catalogos');

$dc_array = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
$column_array = array_chunk($dc_array, 1);
$catalogos->fromArray($column_array,NULL,'A2');
$validation = $sheet->getCell('B5')->getDataValidation(); $validation->setType(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::TYPE_LIST);

$validation->setFormula1('Catalogos!A1:A100'); $validation->setAllowBlank(false); $validation->setShowDropDown(true); $validation->setShowInputMessage(true); $validation->setPromptTitle('Nota'); $validation->setPrompt('*Requerido'); $validation->setShowErrorMessage(true); $validation->setErrorStyle(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::STYLE_STOP); $validation->setErrorTitle('Opción no válida'); $validation->setError('Seleccione una opción');

$writer = new Xlsx($spreadsheet); $writer->save('paginalista.xlsx');

?>



Creamos la plantilla del documento
$plantilla = new Spreadsheet();

Obtenemos la hoja activa $sheet = $plantilla->getActiveSheet();

Colocamos un comentario $sheet->setCellValue('A1', 'Seleccione su mes preferido');
Creamos una nueva hoja a la que llamaremos Catalogos donde colocaremos nuestros datos
que usaremos posteriormente
$catalogos = $plantilla->createSheet(); $catalogos->setTitle('Catalogos');

Creamos el arreglo de los datos a visualizar y los agregamos a la hoja de Catalogos
$dc_array = ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
$column_array = array_chunk($dc_array, 1);
$catalogos->fromArray($column_array,NULL,'A2');
Obtenemos la posición donde vamos a colocar el listado
$validation = $sheet->getCell('B5')->getDataValidation();

Indicamos el tipo de celda que nos permite usar los listados $validation->setType(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::TYPE_LIST);

Colocamos el rango a utilizar en nuestra lista, el cual se encuentra en la hoja de Catalogos
$validation->setFormula1('Catalogos!A1:A100');

Asignamos valores para nuestro combo $validation->setAllowBlank(false); $validation->setShowDropDown(true); $validation->setShowInputMessage(true); $validation->setPromptTitle('Nota'); $validation->setPrompt('*Requerido'); $validation->setShowErrorMessage(true); $validation->setErrorStyle(\PhpOffice\PhpSpreadsheet\Cell\DataValidation::STYLE_STOP); $validation->setErrorTitle('Opción no válida'); $validation->setError('Seleccione una opción');
Generamos nuestro documento
$writer = new Xlsx($plantilla); $writer->save('ms.xlsx');


ejecutamos nuestro php

Así obtenemos nuestro archivo, al abrirlo podemos observar lo siguiente:



y nuestro listado desplegado



y en la pestaña de Catalogos tenemos nuestro listado



En algunos casos cuando intentamos poner datos del listado directamente en

$validation->setFormula1('"Lunes,Martes,Miércoles,Jueves,Viernes,Sábado,Domingo"');

podemos llegar a encontrar un límite de uso en la longitud de la fórmula.
Por eso, colocamos los datos en otra hoja y los obtenemos a través de la referencia:

Catalogos!A1:A100

Espero les ayude y dejen sus comentarios.
¡Éxito!

viernes, 27 de enero de 2017

Microsoft office ha detectado un error durante la instalacion

Microsoft Office encountered error setup 

 -- Microsoft office ha detectado un error durante la instalacion --



Hace días me trajeron una Asus Laptop a reparar por que no servia el wi-fi.
Se resolvió reinstalando el SO, en este caso Windows 10.
Sin embargo, cuando intente instalar  Microsoft office 2013 64 bits, comenzaba la instalación y casi al final me mandaba el error "  Microsoft office ha detectado un error durante la instalacion ". Intente instalar otras versiones: 2016, 2010, versión de 32 bits pero ninguna funcionó. 


Solución


Busqué por algunas páginas por varios días y la solución la encontré aquí: 
https://answers.microsoft.com/en-us/msoffice/forum/msoffice_excel-mso_winother/cannot-install-office-2013-error-microsoft-office/e73faec4-3d6c-4a95-b610-4510a6011a55

en las pestañas 7 y 13 ( 2017-01-25 )

El procedimiento es el siguiente:

1.- Primero, eliminar instalaciones anteriores de office

2. Borrar carpeta Microsoft Help
  • Una vez que el proceso del fix it termino, oprima Windows key + R entonces aparecerá la ventana de ejecutar, escriba: %Programdata%
  • Renombrar la carpeta 'Microsoft Help' como 'Microsoft Help. OLD' 

3. Ingresar a C:\usuarios\usuarioActual\AppData\Local\  y borrar la carpeta Microsoft Help

4. Eliminar la carpeta office en el programador de tareas
  • Dar clic en Boton de Inicio y busquar el Panel de control ( windows 10 use cortana)
  • Dar clic en Sistema y mantenimiento-> Herramientas Administrativas
  • Dar clic en Programador de tareas ( Task Scheduler )
  • Dar clic en Biblioteca del programador de tareas->Microsoft  (panel izquierdo)
  • Borrar la carpeta Office

Instalar office

5. Dar clic en el instalador de office
6. Seleccionar Personalizado (custom)
7. En Herramientas de office deshabilitar la opción: Office Telemetry
8. Continuar la instalación

9. Enhorabuena... es tiempo de activar su producto

Saludos