2013-12-13 2 views
0

PHPExcel을 사용하여 PHP에서 XLS 템플릿을 편집하고 있습니다. 데이터를 입력 한 후 파일을 저장하고 사용자에게 보냅니다. 사용자가 XSL 파일에서 내용을 편집 한 후 양식을 다시 제출할 때 문제가 발생합니다. 때로는 날짜 형식이 변경되는 경우가 있습니다. enter image description hereXLS를 편집하면 날짜 형식이 변경되는 경우가 있습니다.

은,이 원인이되는 OS 또는 파일을 편집하는 데 사용되는 클라이언트,하지만 변경 및 모든 3 개 개의 셀에 걸쳐 동일하게 유지하기 위해이 날짜 형식을 방지하기 위해 수행할지 여부를 무엇 몰라? 미리 감사드립니다!

private function setDateInCell(\PHPExcel_Cell $cell, \DateTime $date) 
{ 
    $excelDate = \PHPExcel_Shared_Date::PHPToExcel($date); 
    $cell->setValue($excelDate); 
    $cell->getStyle()->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2); 
} 

편집 : 날짜 형식 변경을 방지 할 수 경우에, 나는 적어도, 날짜 객체로 날짜를 읽을 수 포맷에 관한 것이다. 이 작업을 수행 할 수 있습니까?

+0

공백 포맷에서 사용자의 활동을 방지하는 하나의 방법되게? – pnuts

+0

공백이 없습니다. 날짜를 쓰려면 format ('Y-m-d') 함수를 사용하고 있습니다. – androidu

+0

그래서 '가짜'날짜가 사용자가 추가 한 데이터가 아닙니까? 사용자가 형식을 변경해야합니까? (예 : 다른 행의 셀은 전체 열에 형식을 적용합니다)? – pnuts

답변

1

난 당신이 날짜를 작성하는 Y-m-d 형식을 사용하지만, 셀에 실제 엑셀 직렬화 된 날짜/시간 스탬프 값을 작성하고 날짜의 형식을 설정하는 숫자 형식 마스크를 설정하지 않는 바랍니다. 그것이 날짜 처리에 대한 예상 된 접근법입니다. Y-m-d 형식의 값을 쓰려면 문자열 값인 사람 일 수 있습니다.은 날짜로 해석되지만 MS Excel의 날짜가 아닙니다. MS Excel에서 날짜로 인식하는 경우 그것을 직렬화 된 날짜/시간 스탬프 값으로 변환하고 일반적으로 로케일 고유의 자체 포맷을 선택하십시오.

보호하지만 이들 세포가 확실히 값을 변경 및/또는 날짜 셀

+0

감사합니다. 실제로 'Ymd'PHP 형식을 사용하고 있습니다. 죄송합니다. ! – androidu

+0

아니요, 저는 $ cell-> getStyle() -> getNumberFormat() -> setFormatCode (\ PHPExcel_Style_NumberFormat :: FORMAT_DATE_YYYYMMDD2)로 날짜 입력을 업데이트했지만, 여전히 Windows 컴퓨터에서 Microsoft Office를 사용하면 날짜 셀을 클릭하면 형식이 MM/DD/YYYY로 변경됩니다. – androidu

+0

셀 값이 실제로 서식이 지정된 문자열 값이 아닌 MS Excel 날짜/시간 스탬프인지 확인하십시오. –