PHPExcel Mysql日期格式

时间:2013-01-27 18:54:49

标签: php codeigniter phpexcel

我正在从mysql数据库中检索数据并使用它来生成excel文件。我继续得到一个受日期语法影响的损坏的xlsx文件。 如何从数据库中选择日期(类型)值并使用PHPExcel将其提供给单元格?例如

$objPHPExcel -> getActiveSheet() -> SetCellValue('A' . $i, $result["name"]); 
$objPHPExcel -> getActiveSheet() -> SetCellValue('B' . $i, $result["dateofcontract"]);

3 个答案:

答案 0 :(得分:2)

根据文档,您可以这样做:

/* PHPExcel_Cell_AdvanceValueBinder required for this sample */
require_once 'PHPExcel/Cell/AdvancedValueBinder.php';

// MySQL-like timestamp '2008-12-31' or date string
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_AdvancedValueBinder());
$objPHPExcel->getActiveSheet()
            ->setCellValue('B' . $i, $result['dateofcontract']));
$objPHPExcel->getActiveSheet()
            ->getStyle('B' . $i)
            ->getNumberFormat()
            ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH)

答案 1 :(得分:1)

PHPExcel中有内置函数,用于将unix时间戳或PHP DateTime对象转换为Excel datetimestamps,这也将一些字符串日期格式转换为Excel datetimestamps:

PHPExcel_Shared_Date::PHPToExcel()

然后将结果Excel datetimestamp值设置为单元格值,并将单元格数字格式设置为表示日期/时间格式的掩码。这正是peterm提到的Advanced Value Binder所做的,虽然Advanced Value Binder也可以操作您可能不希望更改的某些其他值(例如百分比)。

答案 2 :(得分:0)

取决于日期在数据库中的存储方式,将其作为时间戳检索,然后使用php的date()函数。

EG。

"SELECT UNIX_TIMESTAMP(dateofcontract) AS dateofcontract"

$formattedDate = date("m.d.y",$dateofcontract) // outputs 03.10.01

显然,您需要将数据库查询结果分配给$dateofcontract,以查看日期的所有可能格式,请参阅此处:date()