2016-09-19 3 views
1

Excel 스프레드 시트를 만들었습니다. 두 번째 열에서는 0:11:23 및 2:03:33과 같은 값을 가지며 수천 행의 가치가 있습니다. PHP를 사용하여 형식을 다음과 같이 설정했습니다.PHPExcel String to Time

$sheet->getStyle($colRange)->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); 

그러나 셀은 모두 여전히 문자열입니다. 0:11:22에서 0:11:33과 같은 다른 셀로 셀을 편집하면 셀이 시간으로 변환됩니다. 맨 위에는 "0:11:22"에서 "0:11:33 AM"으로 바뀝니다.이 AM 자동 추가 기능은 큰 변화 인 것 같습니다. 그런 다음 파일로 원하는 것을 할 수 있습니다.

수천 개의 셀을 "0:11:22"에서 "0:11:22 AM"으로 어떻게 바꿀 수 있습니까?

답변

0

시도; PHPExcel Documentation에 설명되어 있으며 /Examples 폴더의 02types.php에 표시됩니다.

당신이 실제 MS 엑셀 타임 스탬프 값을 저장하면, 당신은 그것에 형식을 적용 할 수 있습니다

$objPHPExcel->getActiveSheet()->setCellValue('A12', 'Date/Time') 
    ->setCellValue('B12', 'Time') 
     ->setCellValue('C12', PHPExcel_Shared_Date::PHPToExcel($dateTimeNow)); 
$objPHPExcel->getActiveSheet() 
    ->getStyle('C12') 
    ->getNumberFormat() 
    ->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_TIME4); 
+0

안녕하세요 마크, FORMAT_DATE_TIME8로 전환했습니다. 타임 스탬프 형식. 그들이 원하는 방식의 약 90 %입니다. 유일한 것은 이제 0시 01 분 02 초를 약간 변경하고 12시 1 분 0 초라고 말하면서 변경하면 탁월하다는 것입니다. 그러나 프로그래밍을 통해 프로그래밍을하면 엑셀 공식 바에 "09/20/2016 12:01:03 AM"이 표시됩니다. 원하는 시간뿐 아니라 ... 당신이 질문에 대답했음을 이해합니다.하지만 날짜 부분을 표시하지 않는 방법에 대한 아이디어는 수동으로 시간을 변경할 때처럼 발생합니까? – Sparfy

+0

그리고 Excel 날짜의 날짜 부분을 제거하여 내 "09/20/2016 12:01:03 AM"문제를 수정했습니다. 12345.6789 -> 0.6789 $ val = $ objPHPExcel-> getActiveSheet() -> getCell ($ cell) -> getValue(); $ timestamp = DateTime :: createFromFormat ('H : i : s', $ val); $ excelTime = PHPExcel_Shared_Date :: PHPToExcel ($ timestamp); $ excelTime = $ excelTime - (int) $ excelTime; $ objPHPExcel-> getActiveSheet() -> setCellValue ($ cell, $ excelTime); – Sparfy

0

당신은 MS 엑셀 직렬화 된 타임 스탬프 날짜/시간을 변환하고, 셀에 그 값을 저장하기 때문이다이

$sheet 
    ->getStyle($colRange) 
    ->getNumberFormat() 
    ->setFormatCode('[$-C09]d mmm yyyy;@'); 
+0

안녕 데니, 시간을내어 주셔서 감사합니다 - 나는 시간에 그것을 필요없는 날짜 형식. 내가 타임 스탬프를 올바르게 포맷 한 시간 형식으로 코드를 사용하려고했지만 내 문제가 처음에 타임 스탬프를 사용하지 못했습니다 ... – Sparfy