如何在PHP电子表格中删除日期之前的撇号

时间:2018-04-16 05:00:43

标签: php codeigniter phpspreadsheet

我正在使用php Spreadsheet包来生成和下载csv文件,

它在数字之前放了一个撇号。

   public function downloadCsv()
   {
       $spreadsheet = new Spreadsheet();
       $spreadsheet->getProperties()
                   ->setCreator("ABC")
                   ->setTitle("Test");
       $spreadsheet->setActiveSheetIndex(0)
                   -> setCellValue('A1', '01/02/92')
                   ->setCellValue('A2', '01/02/92')
                   ->setCellValue('A3', '01/04/92');

       $filename = 'hello world';
       $spreadsheet->setActiveSheetIndex(0);
       $spreadsheet->getActiveSheet()->setAutoFilter(
            $spreadsheet->getActiveSheet()
        ->calculateWorksheetDimension()
        );

       header('Content-Type: application/     vnd.openxmlformats-officedocument.spreadsheetml.sheet');
       header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
       header('Cache-Control: max-age=0');
       $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
       $writer->save('php://output');
}

输出我

     '01/02/92
     '01/02/92
     '01/04/92

现在如何在数字之前删除撇号? 感谢

2 个答案:

答案 0 :(得分:1)

将单元格值datatypestring设置为date

$spreadsheet->getActiveSheet()->setAutoFilter(
        $spreadsheet->getActiveSheet()
    ->calculateWorksheetDimension()
    );

/* -----add this line of code----- */
$spreadsheet->getActiveSheet()->getStyle('A1:A3')
->getNumberFormat()
->setFormatCode(
    \PhpOffice\PhpSpreadsheet\Style\NumberFormat::FORMAT_DATE_DATETIME
);

 header('Content-Type: application/     vnd.openxmlformats-officedocument.spreadsheetml.sheet');
 header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
 header('Cache-Control: max-age=0');
 $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
 $writer->save('php://output');

答案 1 :(得分:0)

您将需要您需要将该字符串转换为MS Excel序列化时间戳,然后将格式掩码应用于单元格。

PHPSpreadsheet不会神奇地为你做这件事,除非你应用一个值粘合剂来做,并且默认值粘合剂不会。

可以在PhpOffice\PhpSpreadsheet\Shared\Date类(分别为excelToTimestamp()excelToDateTimeObject())中找到在unix时间戳或PHP DateTime对象与MS Excel时间戳之间进行日期转换的函数,但是你&# 39; ll需要首先将该字符串转换为unix时间戳或DateTime对象,可能使用DateTime::createFromFormat()方法之类的东西。我不知道您的格式是d/m/y还是m/d/y,但该功能的文档应该向您展示如何使用它。

P.S。阅读PHPSpreadsheet documentation可以为您回答很多这类问题