테스트 사이트 - 개발 중인 베타 버전입니다

PHPExcel 로 엑셀 파일 업로드시 에러 문의드립니다. (PHPExcel_Calculation_Exception) 채택완료

뽁스 6년 전 조회 5,940

phpexcel 로 엑셀 파일의 내용을 db에 넣어야 되는데
엑셀에 있는 함수 계산식으로 되어 있는 셀에서 에러가 뜹니다.

 

검색해보니 getValue 대신 getCalculatedValue 를 쓰면 된다고 하는데 그렇게 해도 아래와 같은 에러가 뜹니다.

 

Fatal error: Uncaught exception  'PHPExcel_Calculation_Exception' with message 'Sheet1!B2 -> Formula Error: Unexpected~~

 

 

에러 나는 부분의 함수 계산식은 아래 형식처럼 되어 있습니다.(보기 편하게 줄바꿈 처리했고, 실제는 더 길어요)

=IFS(
OR(ISNUMBER(SEARCH({"A","B","C","D","E"},L18))),
IFS(ISNUMBER(SEARCH("0A",J18)),ROUND(U18*1.08+V18,2),
ISNUMBER(SEARCH("0B",J18)),ROUND(U18*1.1+V18,2))

OR(ISNUMBER(SEARCH({"AA","BB","CC","DD","EE"},L18))),
IFS(ISNUMBER(SEARCH("0A",J18)),ROUND(U18*1.08+V18,2),

 

혹시 해결 방법 아시면 도움 부탁 드립니다.
감사합니다.

 

</p>

<p>require_once( G5_PLUGIN_PATH."/PHPExcel/Classes/PHPExcel.php");

 

$objReader = PHPExcel_IOFactory::createReader($FileType);

$obj = $objReader->load($up_file);

$obj->setActiveSheetIndex(0);

$objWorksheet = $obj->getActiveSheet();

 

$row_cnt = $objWorksheet->getHighestRow();

 

for ($i=2; $i<=$row_cnt; $i++) {

    $id = $objWorksheet->getCell('A'.$i)->getValue();

    $price = $objWorksheet->getCell('B'.$i)->getCalculatedValue();

}

 

// $price 부분에서 에러 납니다.</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 4개

채택된 답변
+20 포인트

 $price $objWorksheet->getCell('B'.$i)->getCalculatedValue();

이부분의 셀값이 소수점인가요? 저부분을 소수점이 계속 발생하지 않게 처리를 해주어야합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

뽁스
6년 전
네~ 전부 소수점 입니다. 그런데

B1 = 11.07
B2 = 12.70
B3 = ROUND(U30/0.9+V30,2) => 4.85
B4 = ifs(or(~~~ 함수 계산식 => 77.12


이렇게 되어 있으면 B3 까지는 제대로 출력되는데

B4 에서 에러가 뜨네요.

혹시 다르게 처리할 수 있는 방법이 있을까요?
산타클루스
6년 전
B4 함수계산식중에 소수점이 너무길거나 이런게있는게 아닐가요?
그게없다면 에러는 안날텐데요.. 함수안에서 라운드처리를 한번해보세요.
뽁스
6년 전
함수 안에 라운드 처리는 되어 있습니다.
어디에서 문제가 발생하는 건지 알 수가 없네요..;;

좀 더 찾아보고 안되면 다른 방법으로 처리해야겠네요.

답변 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

6년 전

해당 함수 제거 후 사용하기로 했습니다.

 

답변 주신 분들께 감사드립니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

티로그
6년 전

phpexcel(2007) 에서 허용하지 않는 최신함수(ifs - 2016부터)를 사용한 것이 아닐까요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

붉은바람

클라이언트에게 얘기해서 csv로 변환후 업로드 하셔라라고 하면 안될까요? ㅎ

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

뽁스
6년 전
방법을 못 찾으면 그렇게 할 생각인데 오케이 할지는 모르겠네요~

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인