2012-03-09 32 views

Respuesta

21

O bien:

// Set the value explicitly as a string 
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 

o

// Set the value as a number formatted with leading zeroes 
$objPHPExcel->getActiveSheet()->setCellValue('A3', 29); 
$objPHPExcel->getActiveSheet()->getStyle('A3')->getNumberFormat()->setFormatCode('0000'); 

Tenga en cuenta que en el primer caso I' Estoy llamando al método setCellValueExplicit(), no al método setCellValue(). En su código, pasar PHPExcel_Cell_DataType :: TYPE_STRING a setCellValue() no tiene ningún significado, y el argumento simplemente se ignora.

+0

Gracias, ambos funcionan, terminaron usando el primero. – Bogdan

+0

¿Hay alguna forma de especificar el tipo de datos al exportar los datos _sin proporcionar explícitamente el nombre de la celda (por ejemplo, A3)? – crmpicco

+0

@crmpicco - No entiendo .... si está configurando un valor de celda, sin especificar un nombre de celda, ¿cómo se supone que PHPExcel sepa qué valor de celda desea establecer? –

7

La solución más fácil es utilizar setCellValueExplicitByColumnAndRow ($ pColumn = 0, $ proa = 1, $ valor p = null, $ pDataType = PHPExcel_Cell_DataType :: TYPE_STRING),

$PHPExcel->getActiveSheet()->setCellValueExplicitByColumnAndRow($columnPointer, $rowPointer, $value); 
+0

Esto funcionó muy bien para mí –

0

me encontré con este hilo cuando se mira para una solución y there is my other answer que puede ser útil para alguien en el caso o eliminación de columna/fila que hace que el formato de celda se pierda ...

1

Acabo de encontrar una solución alternativa y pensé que la publicaría aquí. Esto no requiere el uso de bibliotecas, simplemente formateando las celdas .xls requeridas cuando se crea la tabla html para exportar.

<td style="mso-number-format:'@';">your number w/leading zeroes here</td> 

Espero que alguien lo encuentre útil. A continuación se muestra una referencia completa de los códigos de formato:

http://www.ozgrid.com/Excel/CustomFormats.htm

0

Para mí esto hizo el truco

// Set the value explicitly as a string 
$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', '0029', PHPExcel_Cell_DataType::TYPE_STRING); 
0

Cada vez que alguien procede como lo hice, esto puede ayudar:

$inputFileName = 'file.xls'; 
$objPHPExcel = PHPExcel_IOFactory::load($inputFileName); 
$objWorkSheet = $objPHPExcel->getActiveSheet(); 
$objWorkSheet->getCell('A1')->setValueExplicit('0029', PHPExcel_Cell_DataType::TYPE_STRING); 

Como inspirado en this answer. Espero que esto ayude a alguien.

Cuestiones relacionadas