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

phpexcel 범위설정관련해서 질문드립니다. 채택완료

시우우 6년 전 조회 4,144

안녕하세요.

phpexcel을 이용해 excel파일을 그누보드에서 읽어드리는 기능을 테스트중입니다..

현재 아래와 같은 코드로 A부터 Z열까지는 읽을수 있게 설정은 가능하나,

range가 AA나, AC 등으로 넘어가면 그냥 A까지만 읽힙니다.

이부분 어떻게 해결해야 할까요 ?ㅠㅠ

 

</p>

<p><?</p>

<p>php

include_once('./_common.php'); //database설정관련 

include 'Classes/PHPExcel.php'; 

include 'Classes/PHPExcel/IOFactory.php'; //phpexcel 불러오기 

 

//-- 읽을 범위 필터 설정

$rangeArr = range('A','Z');  <-- 질문에 들어간 범위설정

class MyReadFilter implements PHPExcel_Reader_IReadFilter

{

    public function readCell($column, $row, $worksheetName = '') {

        global $rangeArr;

        // Read rows 1 to 7 and columns A to E only

        if (in_array($column,$rangeArr)) {

            return true;

        }

        return false;

    }

}</p>

<p>$filterSubset = new MyReadFilter();

 

$filename = 'test.xlsx';

$upfile_path = './' . $filename;

$path = pathinfo($filename);

$UpFileExt = strtolower($path['extension']);

$inputFileType = '';

 

//파일 타입 설정 (확자자에 따른 구분)

if($UpFileExt == "xls") {

    $inputFileType = 'Excel5';    

}elseif( $UpFileExt == 'xlsx' ){

    $inputFileType = 'Excel2007';

}

 

 

if( file_exists ($upfile_path) && $inputFileType ) {

 

 

    //엑셀리더 초기화

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

 

    //데이터만 읽기(서식을 모두 무시해서 속도 증가 시킴)

    $objReader->setReadDataOnly(false);    

 

    //범위 지정(위에 작성한 범위필터 적용)

    $objReader->setReadFilter($filterSubset);

 

    //업로드된 엑셀 파일 읽기

    $objPHPExcel = $objReader->load($upfile_path);

 

    //첫번째 시트로 고정

    $objPHPExcel->setActiveSheetIndex(0);

 

    //고정된 시트 로드

    $objWorksheet = $objPHPExcel->getActiveSheet();

 

    //시트의 지정된 범위 데이터를 모두 읽어 배열로 저장

    $sheetData = $objPHPExcel->getActiveSheet()->toArray(null,true,true,true);

    $total_rows = count($sheetData);

 

//echo "<pre>";print_r($sheetData);echo "</pre>\n";

 

    $kk = 0;

    echo '<table border="1" cellpadding="0" cellspacing="0" width="100%">';

    foreach($sheetData as $rows) {

        if( $kk ==0 ){

            echo '<tr>';

            foreach( $rangeArr as $key=>$val ){

                echo '<td>'.$rows[$val].'</td>';            }

            echo '</tr>';

        }else{

            echo '<tr>';

            foreach( $rangeArr as $key=>$val ){

                echo '<td>'.$rows[$val].'</td>';

            }

            echo '</tr>';

        }

 

        $kk++;

    }//end foreach

    echo '</table>';

 

}else{

    echo 'Error!!';

}

 

?>

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

답변 1개

채택된 답변
+20 포인트
e
6년 전

//범위 지정(위에 작성한 범위필터 적용)

//$objReader->setReadFilter($filterSubset);

위의 소스를 주석해보세요. 범위를 지정하지 않으면 전체를 읽어들입니다.

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

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

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

로그인