web-dev-qa-db-fra.com

PHPExcel - définir le type de cellule avant d'y écrire une valeur

Savez-vous comment puis-je définir le type de cellule avant d'y écrire une valeur? Je voudrais pouvoir définir des types comme "Général", "Texte" et "Numéro".

Merci.

19
Psyche

Lorsque le texte est un nombre avec des zéros en tête, alors faites: (Cuando el texto es un número que empieza por ceros, hacer)

$objPHPExcel->getActiveSheet()->setCellValueExplicit('A1', $val,PHPExcel_Cell_DataType::TYPE_STRING);
25
FelipeR

De la même manière que vous auriez défini le type (masque de format numérique) après y avoir écrit une valeur:

$objPHPExcel->getActiveSheet()
    ->getStyle('A1')
    ->getNumberFormat()
    ->setFormatCode(
        PHPExcel_Style_NumberFormat::FORMAT_GENERAL
    );

ou

$objPHPExcel->getActiveSheet()
    ->getStyle('A1')
    ->getNumberFormat()
    ->setFormatCode(
        PHPExcel_Style_NumberFormat::FORMAT_TEXT
    );

Bien que "Number" ne soit pas un masque de format valide.

Vous pouvez trouver une liste de masques de format prédéfinis dans Classes/PHPExcel/Style/NumberFormat.php ou définir la valeur sur n'importe quelle chaîne de masquage de format numérique Excel valide.

19
Mark Baker

essaye ça

$currencyFormat = '_($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)';
$textFormat='@';//'General','0.00','@'
$Excel->getActiveSheet()->getStyle('B1')->getNumberFormat()->setFormatCode($currencyFormat);
$Excel->getActiveSheet()->getStyle('C1')->getNumberFormat()->setFormatCode($textFormat);`
4

Je voulais le même numéro que je reçois de la base de données par exemple.

1) 00100.220000

2) 00123

3) 0000.0000100

J'ai donc modifié le code comme ci-dessous

$objPHPExcel->getActiveSheet()
    ->setCellValue('A3', '00100.220000');
$objPHPExcel->getActiveSheet()
    ->getStyle('A3')
    ->getNumberFormat()
    ->setFormatCode('00000.000000');


$objPHPExcel->getActiveSheet()
    ->setCellValue('A4', '00123');
$objPHPExcel->getActiveSheet()
  ->getStyle('A4')
 ->getNumberFormat()
->setFormatCode('00000');


$objPHPExcel->getActiveSheet()
    ->setCellValue('A5', '0000.0000100');
$objPHPExcel->getActiveSheet()
  ->getStyle('A5')
 ->getNumberFormat()
->setFormatCode('0000.0000000');
1
Pavan Pyati

A suivi les conseils de Mark et l'a fait pour définir la mise en forme par défaut des nombres sur le texte dans le classeur entier:

$objPHPExcel = new PHPExcel(); 
$objPHPExcel->getDefaultStyle()
    ->getNumberFormat()
    ->setFormatCode(
        PHPExcel_Style_NumberFormat::FORMAT_TEXT
    );

Et cela fonctionne parfaitement. Merci, Mark Baker.

1
Lucio Mollinedo

Pour les nombres avec des zéros en tête et des virgules séparés:

Vous pouvez mettre "A" pour affecter la colonne entière ".

$objPHPExcel->getActiveSheet()->getStyle('A1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_NUMBER_COMMA_SEPARATED1);

Ensuite, vous pouvez écrire dans la cellule comme vous le feriez normalement.

0
user3490018