web-dev-qa-db-fra.com

Format de date PHPExcel

Je reçois une sortie du serveur MS SQL au format '2012-08-09 00:00:00' (sans guillemets).

Cependant, lorsque je l'écris dans un fichier Excel, je suis incapable de l'écrire au format date pour avoir le formatage jj mmm aaaa sur Excel.

En conséquence, j'ai essayé d'écrire au format = date (2012,08,09) sous la forme d'une formule pour les cellules respectives.

Mais je ne veux pas le sortir sous forme de formule, mais plutôt la valeur '09 août 2012 'avec l'intégrité du type de données intacte. Comment puis-je faire cela? Ou existe-t-il une méthode plus simple?

J'ai lu la documentation, mais ce n'était pas clair pour moi, je pensais demander des éclaircissements.

Cordialement.


Désolé de ne pas être assez détaillé.

J'utilise la bibliothèque PHPExcel.

De mon tableau SQL, j'utilise les éléments suivants:

$t_year    = substr($xls_column_datas["colname"],0,4);
$t_month   = substr($xls_column_datas["colname"],5,2);
$t_day     = substr($xls_column_datas["colname"],8,2);
$t_format  = $t_year . "," . $t_month . "," . $t_day ;
$t_format  = '=date('.$t_format.')';

$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($data_column_num, $data_row_num, $t_format );
$objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($data_column_num, $data_row_num)->getNumberFormat()->setFormatCode('[$-C09]d mmm yyyy;@');

dans ma sortie Excel, il affiche la colonne A2 pour, par exemple, = DATE (2012,8,9) 

plutôt que de se présenter sous forme de formule, je veux qu'Excel reconnaisse que '2012-08-09 00:00:00' est une date et un format au format jj mmm aaaa.

Est-ce que cela devient clair? Pardon.

12
Saidur Rahman

Vous rencontrez un problème pour obtenir la date à partir de MS SQL en tant que date/heure ou pour définir la date Excel? 

Toute la section de la documentation PHPExcel explique l’utilisation des méthodes auxiliaires PHPExcel_Shared_Date::PHPToExcel($PHPDate) et PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0) pour convertir les dates PHP en une valeur de tampon datetime Excel que vous définissez comme valeur de cellule, puis vous appliquez un masque de format numérique. de l'un des masques de date tels que PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2 à cette cellule

Au lieu de

$t_year     = substr($xls_column_datas["colname"],0,4);    
$t_month    = substr($xls_column_datas["colname"],5,2);    
$t_day      = substr($xls_column_datas["colname"],8,2);
$t_format   = '=date('.$t_format.')';
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow($data_column_num, $data_row_num, $t_format );
$objPHPExcel->getActiveSheet()->getStyleByColumnAndRow($data_column_num, $data_row_num)->getNumberFormat()->setFormatCode('[$-C09]d mmm yyyy;@');

essayez de mettre

$t_year   = substr($xls_column_datas["colname"],0,4);
$t_month  = substr($xls_column_datas["colname"],4,2);  // Fixed problems with offsets
$t_day    = substr($xls_column_datas["colname"],6,2);
$t_date   = PHPExcel_Shared_Date::FormattedPHPToExcel($t_year, $t_month, $t_day);
$objPHPExcel->getActiveSheet()->setCellValueByColumnAndRow(
    $data_column_num, $data_row_num, $t_date 
);
$objPHPExcel->getActiveSheet()
    ->getStyleByColumnAndRow($data_column_num, $data_row_num)
    ->getNumberFormat()->setFormatCode(
        PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14
    );
13
Mark Baker

$ date = PHPExcel_Style_NumberFormat :: toFormattedString ($ data, "M/D/YYYY");

8
Thakhani Tharage

Bien que l’on ne sache pas exactement ce que vous demandez, si vous cherchez une conversion de date 

 // convert old date string to YYYYmmdd format
    $date = date('d M Y', strtotime($old_date));

cela affichera la date au format 09 août 2012

1
Sibu

Pourquoi ne pas laisser le serveur au formatage pour vous? Utilisez cette requête pour formater la date

SELECT convert(varchar(15), getdate(), 106) 

Cela donnera 11 Sep 2012

SQL SERVER: Format de date

1
John Woo