1
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';

//Values
$path = getcwd(); 

        $latest_ctime = 0;
        $latest_filename = '';    

        $d = dir($path);
        while (false !== ($entry = $d->read())) {
        $filepath = "{$path}/{$entry}";
        // could do also other checks than just checking whether the entry is a file
        if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
          $latest_ctime = filectime($filepath);
         $latest_filename = $entry;
        }}

//Reading Excel File

$objPHPExcel = PHPExcel_IOFactory::load($latest_filename);

foreach ($objPHPExcel->getWorksheetIterator() as $worksheet){
     $worksheetTitle = $worksheet->getTitle();
     $highestRow = $worksheet->getHighestRow(); // e.g. 10 For all rows
     $highestColumn = $worksheet->getHighestColumn(); // e.g 'F'
     $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);
}

//Calculationg Columns
$nrColumns = ord($highestColumn) - 64;

//Displaying Sheet Details

echo "File name: " . $path;
echo '<br>';
echo "Sheet name: " . $worksheetTitle;
echo '<br>';
echo "No. of Columns: " . $nrColumns;
echo '<br>';
echo "No. of Rows: " . $highestRow;
echo '<br><br>';
$i=1;
$j=0;
for ($row = 2; $row <= $highestRow; ++ $row) {
$val=array();
for ($col = 0; $col < $highestColumnIndex; ++ $col) {
$cell = $worksheet->getCellByColumnAndRow($col, $row);
$val[] = $cell->getValue();
}
$var=$val[2];   //the date value is in the 3rd column
echo date('d/m/Y H:i:s', PHPExcel_Shared_Date::ExcelToPHP($var)); 
echo "<br>";

私が直面している問題は、Excel ファイルから読み取った int 時刻値を mysql 日時形式に変換して DB に挿入することです。 19-09-2015 02:00:00 に変換されます。これは Excel データの値よりも 2 時間多く、これはすべての日付値で発生しており、2 時間余分に追加されているようです。正しい値。

4

1 に答える 1

0

ティアのタイムゾーンに明らかに問題があります。PHP (対応する PHP ドキュメントから始めることができます) と MySQL のタイムゾーンをチェックし、それらが一致していることを確認します。

于 2015-09-22T13:33:39.283 に答える