PHPExcel 日期格式
Posted
技术标签:
【中文标题】PHPExcel 日期格式【英文标题】:PHPExcel Date Format 【发布时间】:2012-09-11 04:52:52 【问题描述】:我从 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 列,例如=日期(2012,8,9)
我希望 Excel 识别 '2012-08-09 00:00:00' 是日期时间并将其格式化为 dd mmm yyyy,而不是显示为公式。
这清楚了吗?对不起。
【问题讨论】:
看到这个链接可能对你有帮助***.com/questions/279917/… Мне помог [вервый ответ][1] с соседней темы [1]: ***.com/questions/11119631/… 【参考方案1】:您的问题是从 MS SQL 获取日期作为日期/时间,还是设置 Excel 日期?
PHPExcel 文档中有一个完整的部分解释了使用 PHPExcel_Shared_Date::PHPToExcel($PHPDate)
和 PHPExcel_Shared_Date::FormattedPHPToExcel($year, $month, $day, $hours=0, $minutes=0, $seconds=0)
辅助方法将 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
);
【讨论】:
嗯,但这会将单元格格式设置为 NUMBER,并且在导出的文件中看起来像 43073.4250578704。但也有单元格的日期格式,但 PHPExcel 中没有 getDateFormat() 函数。我不明白。 可能是因为我在 Open Office 中看到了它? 与OpenOffice中打开无关....PHPExcel_Style_NumberFormat::FORMAT_DATE_XLSX14
是此代码示例中设置的格式,不是数字格式,而是日期格式
我有几乎相同的代码$list->setCellValueByColumnAndRow( ++$column, $row, \PHPExcel_Shared_Date::PHPToExcel( $survey->task->closed )' )->getStyle()->getNumberFormat()->setFormatCode( \PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY );
,但看起来和我之前写的一样?
提出问题 - 一个适当的问题,显示适当的代码,而不是简单地反对别人的问题的答案 - 我会看看它......但也许不要尝试流利从 setCellValue() 设置 getStyle().... 使用两个单独的语句【参考方案2】:
$date = PHPExcel_Style_NumberFormat::toFormattedString($data, "M/D/YYYY");
【讨论】:
【参考方案3】:虽然不清楚要问什么,但如果您正在寻找日期转换
// convert old date string to YYYYmmdd format
$date = date('d M Y', strtotime($old_date));
这将以 2012 年 8 月 9 日的格式输出日期
【讨论】:
【参考方案4】:为什么不让服务器为你格式化呢?使用此查询格式化日期
SELECT convert(varchar(15), getdate(), 106)
这将导致11 Sep 2012
SQL SERVER: Date Format
【讨论】:
以上是关于PHPExcel 日期格式的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 PHPExcel 库读取 excel 一个单元格日期(DD/MM/YYYY)值并将日期格式转换为(M/D/YYYY)