Saltar al contenido

Lectura de números en formato de texto con PHPExcel

Nuestro equipo de redactores ha estado mucho tiempo buscando la resolución a tus preguntas, te regalamos la solución y nuestro deseo es que sea de gran ayuda.

Solución:

El formateo usando un formato de número afecta la forma en que un número es desplegadono como es almacenado.

Tendrás que Tienda los números explícitamente como cadenas, por lo que no puede usar fromArray(). Use setCellValueExplicit() o setCellValueExplicitByColumnAndRow() en su lugar, pasando un argumento $pDataType de PHPExcel_Cell_DataType::TYPE_STRING.

EDITAR

Tenga en cuenta que también puede establecer estilos para un rango de celdas, por lo que no es necesario agregar la sobrecarga del bucle for:

$range = 'A'.$row.':'.$latestBLColumn.$row;
$objPHPExcel->getActiveSheet()
    ->getStyle($range)
    ->getNumberFormat()
    ->setFormatCode( PHPExcel_Style_NumberFormat::FORMAT_TEXT );

EDITAR #2 Usando un aglutinante celular

Cree un archivador de valores de celda personalizado:

class PHPExcel_Cell_MyValueBinder extends PHPExcel_Cell_DefaultValueBinder
    implements PHPExcel_Cell_IValueBinder 
 
    public function bindValue(PHPExcel_Cell $cell, $value = null) 
     
        // sanitize UTF-8 strings 
        if (is_string($value))  
            $value = PHPExcel_Shared_String::SanitizeUTF8($value); 
         

        // Implement your own override logic 
        if (is_string($value) && $value[0] == '0')  
            $cell->setValueExplicit($value, PHPExcel_Cell_DataType::TYPE_STRING); 
            return true; 
         

        // Not bound yet? Use default value parent... 
        return parent::bindValue($cell, $value); 
     
 

Para evitar problemas con el cargador automático, créelo en el directorio /Classes/PHPExcel/Cell. De lo contrario, asigne a la clase su propio nombre que no sea PHPExcel y asegúrese de que se cargue de forma independiente.

Luego, antes de usar su llamada fromArray(), dígale a PHPExcel que use su carpeta de valores en lugar de la carpeta predeterminada:

PHPExcel_Cell::setValueBinder( new PHPExcel_Cell_MyValueBinder() );

Sé que todo esto se publicó hace un tiempo, pero quería compartir algo que funcionó para mí, para que aún puedas usar ->fromArray y no tener que iterar sobre toda la hoja de cálculo.

Si envuelves tus valores en ="VALUE" aparecerá como texto y no se convertirá, y no tendrá comillas en su hoja de cálculo

En caso de que necesites convertir los números completos de la hoja en textopuedes usar calculateWorksheetDimension() para obtener las dimensiones de la hoja (ejemplo: ‘A1:B200‘ o ‘A1:C150‘) y luego usarlo en getStyle()al igual que:

// Get sheet dimension
$sheet_dimension = $spreadsheet->getActiveSheet()->calculateWorksheetDimension();

// Apply text format to numbers
$spreadsheet->getActiveSheet()->getStyle($sheet_dimension)->getNumberFormat()->setFormatCode(PhpOfficePhpSpreadsheetStyleNumberFormat::FORMAT_TEXT);

Nota: Este ejemplo utiliza PhpHoja de cálculo ya que es la próxima versión de PHPExcel.

Puedes patrocinar nuestro estudio dejando un comentario y dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *