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

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

QA

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

본문

안녕하세요.

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

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

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

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

 


<?
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;
    }
}
$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

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

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 5
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT