PHP Excelを使用してExcelファイルを読みました。
しかし、そのExcelファイルには日付(時間形式)が含まれていますPHP Excelはその場合に誤った値を返します
私のコードは下にあります
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 />";
}
誰でもこれを助けることができます。この場合、PHPExcelに特定の機能があります。
入力Excelファイルは下にあります
2013年12月12日、2013年12月13日
私の出力は以下にあります
41621、41631
日付形式の出力データを変換する方法はありますか?
PHPExcel_Reader_Excel5 libを使用してxlsファイルを読み取る場合、ファイル内のデータは39984ですが、Excelは日付フォーマットマスクを使用して「2009-06-20」としてフォーマットしますか?
Excelは、1900年1月1日(Windows 1900カレンダー上)からの日数のカウントとして日付を保持します。 PHPExcelは同じ方法で日付を保存しますが、日付を自動的にフォーマットしません。
PHPExcel_Style_NumberFormat::toFormattedString(39984,PHPExcel_Style_NumberFormat::FORMAT_DATE_DDMMYYYY)
を使用して、自分でフォーマットできます。
またはその他のフォーマットマスク
_PHPExcel_Style_NumberFormat
_
、またはPHPを使用して日付に変換しますPHPExcel_Shared_Date::ExcelToPHP(39984)
次に、PHPのdate()
を使用します
希望どおりにフォーマットする関数
例:
_$val = date('Y-m-d', PHPExcel_Shared_Date::ExcelToPHP($cell->getValue()));
_
もう1つの方法は、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
日付を取得するには、ExcelタイムスタンプからLinuxタイムスタンプに変換する必要があります。あなたが知る必要があるのは:
gmdate();
で変換しないでください代わりにdate();
したがって、ExcelからLinuxに単純に変換するには、次のことを行う必要があります。
25569
86400
これはコードです:
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
それはすべての人々です。
ExcelのインポートにExcel_readerを使用している場合は、次のようなコードを使用できます。
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
そして、時間のために
$j['IST_Time'] = '0.416666666667';
echo date('h:i A',$xlsx_class->unixstamp($j['IST_Time'])); //10:00 AM
またはsimplexlsx.class.phpを表示