Trừ khi bạn đang sử dụng "Nâng cao giá trị gia tăng Binder" PHPExcel, sau đó $ sheet-> setCellValueByColumnAndRow ($ cột, $ row, '2010-07-16'); sẽ lưu trữ giá trị dưới dạng chuỗi, không phải là ngày, do đó định dạng ngày bạn đang đặt trong dòng tiếp theo là vô nghĩa khi được áp dụng cho chuỗi cho đến khi bạn đọc tệp kết quả trong Excel và bắt buộc làm mới ... Excel sau đó sửa lỗi của bạn.
Để đảm bảo giá trị được lưu trữ chính xác ở vị trí đầu tiên, bạn cần lưu trữ giá trị ngày/dấu thời gian/số thay vì chuỗi, sau đó đặt mặt nạ định dạng để đảm bảo rằng nó được coi là ngày/dấu thời gian thay vì giá trị số.
Hoặc chuyển đổi chuỗi của bạn vào một ngày PHP sử dụng strtotime(), sau đó sử dụng PHPExcel được xây dựng trong phương pháp chuyển đổi date:
$PHPDateValue = strtotime('2010-07-16');
$ExcelDateValue = PHPExcel_Shared_Date::PHPToExcel($PHPDateValue);
$sheet->setCellValueByColumnAndRow($column, $row, $ExcelDateValue);
$sheet->getStyleByColumnAndRow($column, $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH);
hoặc sử dụng được xây dựng trong phương pháp để chuyển đổi một chuỗi ngày định dạng để Excel giá trị datetime trực tiếp
$dateString = '2010-07-16';
$ExcelDateValue = PHPExcel_Shared_Date::stringToExcel($dateString);
$sheet->setCellValueByColumnAndRow($column, $row, $ExcelDateValue);
$sheet->getStyleByColumnAndRow($column, $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH);
hoặc sử dụng DATEVALUE() chức năng Công cụ tính chức năng của thư viện:
$dateString = '2010-07-16';
$ExcelDateValue = PHPExcel_Calculation_Functions::DATEVALUE($dateString);
$sheet->setCellValueByColumnAndRow($column, $row, $ExcelDateValue);
$sheet->getStyleByColumnAndRow($column, $row)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_DMYSLASH);
hoặc, tùy chọn 4, là sử dụng "Nâng cao giá trị gia tăng Binder" PHPExcel của
Để bật tính năng này, hãy thực hiện các cuộc gọi tĩnh sau
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_AdvancedValueBinder());
trước khi bạn khởi tạo đối tượng bảng tính của bạn, hoặc tải nó từ tập tin
Sau đó PHPExcel sẽ xác định giá trị của bạn là một ngày, và xử lý việc chuyển đổi sang một ngày Excel/timestamp và định dạng nó tự động
$dateString = '2010-07-16';
$sheet->setCellValueByColumnAndRow($column, $row, $dateString);
Đó là câu trả lời hay. Cảm ơn bạn! – ISBL
Nó không thể sai nếu nó được trả lời bởi một trong những PHPExcel tạo ra anh ta tự –