PHPExcel excel 데이터 읽기

7820 단어 phpexcel
require_once 'PHPExcel.php'; $PHPReader = new PHPExcel_Reader_Excel2007(); $filePath = 'wjyl.xlsx'; if(!$PHPReader->canRead($filePath)){ $PHPReader = new PHPExcel_Reader_Excel5();//  } $PHPExcel = $PHPReader->load($filePath);// Excel   $sheetCount = $PHPExcel->getSheetCount();//  for($s = 0; $s < $sheetCount; $s++){ echo '<b> '.$s."</b><br />"; $currentSheet = $PHPExcel->getSheet($s); // excel  $allColumn = $currentSheet->getHighestColumn(); //  $allRow = $currentSheet->getHighestRow();//  for($currentRow = 2; $currentRow < $allRow; $currentRow++){ for($currentColumn= 'A';$currentColumn < $allColumn; $currentColumn++){ $val = $currentSheet->getCell($currentColumn.$currentRow)->getValue(); echo $val."&nbsp;&nbsp;&nbsp;"; } echo "<br />"; }
}
echo 'Well Done!!!'; exit; /** , iconv , gb2312 utf-8 */ //
echo iconv('utf-8','gb2312', $val);

 
excel표의 총 열수가 26을 넘었을 때, 즉 Z를 넘었을 때, 계속 증가하면 AA, AB, AC로 상승한다...AZ 형식입니다. 이 경우 위 코드는 열 순환에서 첫 번째 A만 순환합니다.
알파벳 비교에 대한 이해:
알파벳의 비교는 실제적으로 알파벳이 ASCII 테이블에 대응하는 10진수 크기의 비교이다. 예를 들어 A의 ASCII 테이블에서 10진수는 65, Z는 90이다.
echo ord('A');//65

echo ord('Z');//90

비교 규칙:
A와 AB를 비교하면 우선, A와 AB 중의 A를 비교하면 같기 때문에 A를 건너뛰고 계속 B와 비교하면
echo 'A' < 'AB' ? 1 : 0;//1

A와 AA를 비교할 때 먼저 알파벳을 하나씩 비교하고 각각이 같은 상황에서 마지막에 문자열의 길이를 비교한 결과
echo 'A' < 'AA' ? 1 : 0;//1

A와 BA를 비교하면 우선 A와 B를 비교하면 A가 B보다 작아서 결과를 얻는다
 
echo 'A' < 'BA' ? 1 : 0;//1

 
결과: 예를 들어 위의 마지막 열이 AP이고 A는 먼저 allRow의 첫 번째 알파벳과 비교한다. 같은 알파벳은 건너뛰고 두 번째 알파벳과 비교한다. AA이기 때문에 첫 번째 알파벳의 판단은 성립되지 않고 순환을 종료한다.
해결 방법:
 
$ColumnArr = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','AA','AB','AC','AD','AE','AF','AG','AH','AI','AJ','AK','AL','AM','AN','AO','AP'); for($currentRow = 2;$currentRow <= $allRow;$currentRow++){ for($c_Column= 0;$c_Column < count($ColumnArr); $c_Column++){ $val = $currentSheet->getCell($ColumnArr[$c_Column].$currentRow)->getValue(); echo $val."&nbsp;&nbsp;&nbsp;"; } echo "<br />"; }

해결 방법의 원리는 열의 순환이 순조롭게 진행될 수 있도록 확보하는 것이다. 위에 고정된 열에서 나온 수조는 이해하기 편리하고 구체적인 조작은 $allCloumn에 대해 동적으로 열과 관련된 데이터를 처리할 수 있다.

좋은 웹페이지 즐겨찾기