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

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

QA

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

답변 1

본문

안녕하세요.

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 5
© SIRSOFT
현재 페이지 제일 처음으로