PHP EXCEL에서 날짜 형식 읽기
저는 PHP 엑셀을 사용하여 엑셀 파일을 읽었습니다.
하지만 그 엑셀 파일에 일부 날짜(시간 형식)가 포함되어 있습니다. PHP 엑셀은 그 경우에 잘못된 값을 반환합니다.
내 코드는 아래에 있습니다.
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에서 이 사례에 대한 특정 기능을 가지고 있습니다.
제 입력 엑셀 파일은 아래에 있습니다.
2013-12-12, 2013-12-13
내 출력은 아래에 있습니다.
41621, 41631
날짜 형식 출력 데이터를 숨기는 방법이 있습니까?
PHPExcel_Reader_로 xls 파일을 읽는 경우Excel5 lib, 파일의 데이터는 39984인데 Excel은 날짜 형식 마스크를 사용하여 '2009-06-20'으로 형식을 지정합니까?
Excel은 1900년 1월 1일 이후(Windows 1900 달력의 경우) 날짜를 계산합니다.PHP Excel은 동일한 방식으로 날짜를 저장하지만 자동으로 형식을 지정하지는 않습니다.
다음을 사용하여 직접 포맷할 수 있습니다.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()));
다른 방법은 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 Timestamp에서 Linux Timestamp로 변환해야 하는 날짜를 검색합니다.알아야 할 것은 다음과 같습니다.
- Excel express 날짜는 일 단위이고 Linux 날짜는 초 단위입니다.
- Excel은 1900년부터 계산하기 시작한 반면 Linux는 1970년부터 계산합니다.
- 모든 타임스탬프는 GM(녹색 스위치)으로 표시되므로 다음과 같이 변환하면 안 됩니다.
gmdate();
하지만 대신 그냥 사용합니다.date();
따라서 Excel에서 Linux로 변환하려면 다음 작업을 수행해야 합니다.
- 70년의 기간을 제거:
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_reader를 사용하는 경우에는 다음과 같은 Code를 사용할 수 있습니다.
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
언급URL : https://stackoverflow.com/questions/32624838/read-date-format-in-php-excel