【问题标题】:PHPExcel Mysql date formatPHPExcel Mysql日期格式
【发布时间】:2013-01-27 18:54:48
【问题描述】:

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

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

【问题讨论】:

    标签: php codeigniter phpexcel


    【解决方案1】:

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

    /* 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)
    

    【讨论】:

      【解决方案2】:

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

      PHPExcel_Shared_Date::PHPToExcel()
      

      然后将生成的 Excel 日期时间戳值设置为单元格值,并将单元格 numberformat 样式设置为表示日期/时间格式的掩码。这正是 peterm 提到的 Advanced Value Binder 所做的,尽管 Advanced Value Binder 还可以操作您可能不希望更改的某些其他值(例如百分比)。

      【讨论】:

        【解决方案3】:

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

        EG。

        "SELECT UNIX_TIMESTAMP(dateofcontract) AS dateofcontract"

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-17
          • 1970-01-01
          • 2018-04-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多