2013-07-24 4 views
0

PHPExcel 라이브러리를 사용하여 스프레드 시트 데이터를 읽습니다. 이 라이브러리는 '날짜'값을 읽는 데 어려움을 겪고 있습니다.PHPExcel - 날짜 값 읽기

질문 : 방법 'setReadDataOnly'가 '거짓'으로 설정되어있는 경우에도 제대로 'DATE'값을 읽을 수있는 PHPExcel을 지시하는?

설명 :

PHPExcel 버전 2.1, 환경 :

$objReader = \PhpExcel\PHPExcel_IOFactory::createReaderForFile($spreadSheetFullFilePathString); 
$objReader->setReadDataOnly(true); 
$objPHPExcel = $objReader->load($spreadSheetFullFilePathString); 
$objWorksheetObject = $objPHPExcel->getActiveSheet(); 

오전 'DATE'대 '정수'의 값을 얻고 칼럼 : 우분투 12

여기서 부호 블록 값을 기본값으로 사용합니다.

'$ objReader-> setReadDataOnly (true)'라는 줄이 문제를 일으키는 것으로 나타났습니다. 그래서 '$ objReader-> setReadDataOnly (false)'로 변경했습니다.

이 변경 후 날짜 열 값이 올바르게 표시됩니다. 그러나 이제 독자는 Excel에서 발견되는 모든 행 + 열을 읽습니다.

도움을 주시면 감사하겠습니다.

+0

PHPExcel의 버전은 무엇입니까? 1.7.9는 최신 프로덕션 릴리스입니다. 2.0.0이 될 릴리스를 계속 작업하고 있습니다. –

답변

1

$objReader->setReadDataOnly(true); 인 경우 날짜를 식별 할 수있는 유일한 판독기는 Gunumeric Reader입니다. 날짜 값은 숫자 서식 마스크로만 식별 할 수 있으며 setReadDataOnly(true)은 Reader에게 서식을 읽을 수 없도록 지시하므로 날짜를 식별 할 수 없습니다 (Gnumeric은 문제가 확인 된 후에 작성 되었기 때문에 예외입니다. 다른 독자는 setReadDataOnly 값에 관계없이이 정보를 읽도록 수정되었습니다. 날짜를 식별해야하는 경우이 시점의 유일한 옵션은 $objReader->setReadDataOnly(false);

입니다. 그러나 날짜 셀의 경우 정수 값을 가져서는 안됩니다 부동 소수점을 가져와야합니다 : Excel 날짜 시간 일련 번호 값의 시간 부분을 식별하는 십진수입니다.

날짜가 포함 된 셀을 알고 있으면 유닉스 타임 스탬프로 변환 할 수 있습니다 또는 PHPExcel_Shared_DateTime 클래스에 정의 된 도우미 함수를 사용하는 PHPExcel DateTime 객체 (모든 표준 PHP 날짜 처리 함수를 사용할 수 있음).

독자가 이제 ALL the ROWS + COLUMNS found in the excel을 읽는다고 가정하면 setReadDataOnly 값과 관계없이 읽어야합니다. 모든 행과 열을 읽지 않으려면 읽기 필터를 설정해야합니다.