web-dev-qa-db-ja.com

PHPExcel-セルタイプを設定してから値を書き込む

値を書き込む前にセルタイプを設定する方法を知っていますか? 「一般」、「テキスト」、「番号」などのタイプを設定できるようにしたいと思います。

ありがとうございました。

19
Psyche

テキストが先行ゼロのある数字の場合は、次のようにします(Cuando el texto es unnúmeroque empieza por ceros、hacer)

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

タイプ(数値書式マスク)に値を書き込んだ後に設定するのと同じ方法:

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

または

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

「Number」は有効なフォーマットマスクではありませんが。

Classes/PHPExcel/Style/NumberFormat.phpで定義済みのフォーマットマスクのリストを見つけるか、値を有効なExcel数値フォーマットマスキング文字列に設定できます。

19
Mark Baker

これを試して

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

たとえば、データベースから取得するのと同じ番号が必要でした。

1)00100.220000

2)00123

3)0000.0000100

だから私は以下のようにコードを修正しました

$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

マークのアドバイスに従い、これを実行して、ブック全体のテキストにデフォルトの数値書式を設定しました。

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

そして、それは完璧に機能します。ありがとう、マーク・ベイカー。

1
Lucio Mollinedo

先行ゼロとカンマで区切られた数字の場合:

「A」を入力して列全体に影響を与えることができます。

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

その後、通常どおりセルに書き込むことができます。

0
user3490018