2

我正在使用 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

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

4

2 回答 2

1

将单元格值设置datatypestringdate

$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');
于 2018-04-16T05:52:13.033 回答
0

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

PHPSpreadsheet 不会神奇地为您执行此操作,除非您应用值绑定器来执行此操作,而默认值绑定器不会。

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

PS 阅读PHPSpreadsheet 文档可以为你解答很多这类问题

于 2018-04-16T23:00:29.330 回答