У меня есть файл XLSX с некоторыми ячейками, который имеет значение даты, например: 13/04/2015, когда я конвертирую свой XLSX в CSV, значение даты в моем CSV становится его значением как: 42107
Мне нужно, чтобы значение было одинаковым в обоих файлах, как в XLSX (13/04/2015)
Вот мой скрипт конвертации
include ('./PHPExcel/Classes/PHPExcel.php');
$TypeFile="Excel2007";
$FilePath= "./assets/uploads/files/prf.xlsx";
$objReader = PHPExcel_IOFactory::createReader($TypeFile);
$objReader->setReadDataOnly(true);
$objExcel = $objReader->load($FilePath);
$objCSV = PHPExcel_IOFactory::createWriter($objExcel, 'CSV');
$objCSV->setPreCalculateFormulas(false);
$objCSV->setDelimiter(',');
$objCSV->setEnclosure('"');
$objCSV->save('./assets/uploads/files/prf.csv');
Да, это будет
Дата в MS Excel — это числовое значение, например 42107, которое представляет количество дней с 1 января 1900 года, и единственное, что сообщает MS Excel (или PHPExcel), что его следует рассматривать как дату, — это применяемая маска числового формата. в эту камеру.
Когда вы используете
$objReader->setReadDataOnly(true);
вы говорите PHPExcel читать значения необработанных данных из ячеек и игнорировать любые маски числового формата (или вообще любой стиль) для ячеек, так что это то, что вы получаете.
Если вы хотите, чтобы PHPExcel рассматривал значение как дату, не используйте $objReader->setReadDataOnly(true);
Других решений пока нет …