12

我从 MS SQL 服务器获得 '2012-08-09 00:00:00' (不带引号)格式的输出。

但是,当我将其写入 excel 文件时,我无法以日期格式将其写入 dd mmm yyyy 在 excel 上的格式。

结果,我尝试以 =date(2012,08,09) 格式写入各个单元格的公式。

但我不想将其输出为公式,而是输出数据类型完整性完整的值“2012 年 8 月 9 日”。我该怎么做呢?或者有没有更简单的方法?

我通读了文档,但我不清楚,以为我会要求澄清。

问候。


抱歉不够详细。

我正在使用 PHPExcel 库。

从我的 sql 数组中,我使用以下内容:

$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;@');

在我的 excel 输出中,它显示 A2 列,例如 =DATE(2012,8,9)

而不是显示为公式,我希望 excel 识别 '2012-08-09 00:00:00' 是日期时间并将其格式化为 dd mmm yyyy。

这清楚了吗?对不起。

4

4 回答 4

13

您的问题是从 MS SQL 获取日期作为日期/时间,还是设置 Excel 日期?

PHPExcel 文档中有一个完整的部分解释了使用 thePHPExcel_Shared_Date::PHPToExcel($PHPDate)PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)helper 方法将 PHP 日期转换为您设置为单元格值的 Excel 日期时间戳值,然后应用其中一个日期掩码的数字格式掩码比如PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2那个细胞

代替

$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;@');

尝试设置

$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
    );
于 2012-09-11T06:39:27.893 回答
8
$date = PHPExcel_Style_NumberFormat::toFormattedString($data, "M/D/YYYY");
于 2013-07-30T15:34:13.717 回答
1

虽然不清楚要问什么,但如果您正在寻找日期转换

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

这将以 2012 年 8 月 9 日格式输出日期

于 2012-09-11T05:08:39.640 回答
1

为什么不让服务器为你格式化呢?使用此查询格式化日期

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

这将导致11 Sep 2012

SQL SERVER:日期格式

于 2012-09-11T05:16:50.377 回答