J'ai lu un fichier Excel en utilisant PHP Excel.
Mais ce fichier Excel contient une date (format d'heure) PHP Excel renvoie des valeurs incorrectes pour ce cas
Mon code est en dessous
enter code hereinclude 'Classes/PHPExcel/IOFactory.php';
$inputFileName = 'index.xlsx';
// Read your Excel workbook
try {
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
} catch (Exception $e) {
die('Error loading file "' . pathinfo($inputFileName, PATHINFO_BASENAME)
. '": ' . $e->getMessage());
}
// Get worksheet dimensions
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
// Loop through each row of the worksheet in turn
for ($row = 1; $row <= $highestRow; $row++) {
// Read a row of data into an array
$rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row,
NULL, TRUE, FALSE);
foreach ($rowData[0] as $k => $v)
echo "Row: " . $row . "- Col: " . ($k + 1) . " = " . $v . "<br />";
}
n'importe qui peut aider pour cela .. Avoir une fonction spécifique pour ce cas dans PHPExcel ..
Mon fichier Excel d'entrée est en dessous
2013-12-12, 2013-12-13
Ma sortie est en dessous
41621, 41631
Vous avez une méthode pour convertir les données de sortie du format de date?
Lorsque vous lisez le fichier xls avec la bibliothèque PHPExcel_Reader_Excel5, les données dans le fichier sont 39984, mais Excel le formate en utilisant un masque de mise en forme de date comme '2009-06-20'?
Excel contient les dates en tant que nombre de jours depuis le 1er janvier 1900 (sur le calendrier Windows 1900). PHPExcel stocke ses dates de la même manière, mais ne les formate pas automatiquement pour vous.
Vous pouvez les formater vous-même en utilisant PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)
ou l'un des autres masques de format dansPHPExcel_Style_NumberFormat
, ou convertissez-le en une date PHP en utilisantPHPExcel_Shared_Date::ExcelToPHP(39984)
puis utilisez PHP date()
fonction pour le formater comme vous le souhaitez
Exemple:
$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
Une autre façon utilise gmdate:
$Excel_date = 43010; //here is that value 41621 or 41631
$unix_date = ($Excel_date - 25569) * 86400;
$Excel_date = 25569 + ($unix_date / 86400);
$unix_date = ($Excel_date - 25569) * 86400;
echo gmdate("Y-m-d", $unix_date);
//result is 2017-10-02
Pour récupérer la date à laquelle vous devez convertir l'horodatage Excel en horodatage Linux. Ce que vous devez savoir, c'est:
gmdate();
mais utilisez simplement date();
Donc, pour vous convertir simplement d'Excel en Linux, vous devez:
25569
86400
Voici le code:
function fromExcelToLinux($Excel_time) {
return ($Excel_time-25569)*86400;
}
$linux_time = fromExcelToLinux(30637);
echo date("Y-m-d",$linux_time);
//should print 1983-11-17
C'est tout le monde.
Si vous utilisez Excel_reader pour l'importation Excel, vous pouvez utiliser du code comme celui-ci.
include('Excel_reader/xlsxreader/simplexlsx.class.php');
$xlsx_class = new SimpleXLSX();
$j['IST_Time'] = '43010';
echo date('Y-m-d',$xlsx_class->unixstamp($j['IST_Time'])); // Result will be 2017-10-02
Et pour le temps
$j['IST_Time'] = '0.416666666667';
echo date('h:i A',$xlsx_class->unixstamp($j['IST_Time'])); //10:00 AM
ou affichez simplexlsx.class.php