A menos que utilice "Valor Carpeta avanzada" de PHPExcel, a continuación, del tipo de hoja $> setCellValueByColumnAndRow (columna $, $ fila, '2010-07-16'); almacenará el valor como una cadena, no como una fecha, por lo que el formato de fecha que está configurando en la siguiente línea no tiene sentido cuando se aplica a una cadena hasta que lea el archivo resultante en Excel y fuerce una actualización ... Excel sí mismo luego corrige tu error
Para asegurarse de que el valor se almacena correctamente en primer lugar, debe almacenarlo como una fecha/marca de tiempo/número en lugar de una cadena, luego configure la máscara de formato para asegurarse de que se trata como una fecha/marca de tiempo en lugar de un valor numérico
Cualquiera de convertir su cadena a una fecha de PHP usando strtotime(), a continuación, utilizar de PHPExcel construida en los métodos de conversión de la fecha:
$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);
o utilizar el método integrado para convertir una cadena de fecha con formato a un Excel valor de fecha y hora directamente
$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);
o utilizar la función de la biblioteca de funciones de motores de cálculo DATEVALUE():
$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);
o, opción 4, es el uso de "Carpeta Valor avanzada" de PHPExcel
Para activar esta función, ejecute la siguiente llamada estática
PHPExcel_Cell::setValueBinder(new PHPExcel_Cell_AdvancedValueBinder());
antes instancia su objeto de libro, o cargarlo desde el archivo
Entonces PHPExcel identificará que su valor es una fecha, y manejar la conversión a una fecha de Excel/marca de tiempo y el formato de forma automática
$dateString = '2010-07-16';
$sheet->setCellValueByColumnAndRow($column, $row, $dateString);
Esa es una gran respuesta. ¡Gracias! – ISBL
No puede estar mal si es respondido por uno de los creadores de PHPExcel él mismo –