PHP 처리 Excel 단계 소개
문제 발생
일상 업무에서 데이터베이스 테이블을 Excel로 내보내거나 Excel을 데이터베이스 테이블로 가져와야 하는 경우가 종종 있습니다. 이 요구 사항은 오래 전에 실현되었으며, 수출입을 용이하게 하기 위해 Brothers www.lampbrother.net에서는 이를 기록으로 두 가지 방법으로 나누었습니다.
Excel로 내보내기
대부분의 경우 Excel 내보내기는 실제로 두 자리 배열을 테이블로 변환하는 것입니다.
PHPExcel 네임스페이스 사용
/**
* @param $name string 저장할 엑셀 이름
* @param $ret_data 테이블의 2차원 배열로 변환
* @throws PHPExcel_Exception
* @throws PHPExcel_Reader_Exception
*/
function importExcel($name, $ret_data){
$objPHPExcel = new PHPExcel()
// 테이블 설정
$objPHPExcel->getProperties()->setCreator($name)
->setLastModifiedBy($name)
->setTitle("Office 2007 XLSX 테스트 문서")
->setSubject ("Office 2007 XLSX 테스트 문서")
> );
$ key2 => $value2) {
$objPHPExcel->setActiveSheetIndex(0)->setCellValue( Cell::stringFromColum nIndex ($i).($num), $value2);
et()->setTitle ($name);
header('Content-Type: application/vnd.ms-excel');
header("Content-Disposition: attachment;filename={$name}.xls"); > header('Cache-Control: max-age=0');
header('Cache-Control: max-age=1')
header('마지막 수정: ' . gmdate('D , d M Y H:i:s') . ' GMT');
header('Cache-Control: 캐시, 재검증')
header('Pragma: public');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output')
}
가져오기 Excel
마찬가지로 Excel 가져오기는 실제로 Excel 데이터를 2차원 배열로 변환하는 것이며, 이를 위해서는 Excel이 형식을 준수해야 합니다.
함수 getRows($inputFileName)
{
if (!file_exists($inputFileName)) {
throw new Exception("파일이 존재하지 않음");
}
$inputFileType = PHPExcel_IOFactory::identify($inputFileName);
$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objPHPExcel = $objReader->load($inputFileName);
$objWorksheet = $objPHPExcel->getActiveSheet();
$highestRow = $objWorksheet->getHighestRow();
$highestColumn = $objWorksheet->getHighestColumn();
$highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn);//总列数
$row = 1;
$curr = 배열();
while ($row for ($col = 0; $col $value = str_replace(array("n", "nr" , "r"), "", $objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
$curr[$row][] = $value;
}
$row++;
}
array_shift($curr);//第一行一般是字段name(Excel中列的标题) ,导入时要移除
return $curr;
}
其他
导出时保存的格式是xlsx,想要改成其他格式需要传入不同参数。
导入时如果에는 더 많은 시트가 있습니다.打开时는 要导入的sheet页(以保证当前sheet为activeSheet)关闭,或者根据sheetname은 程序中选择sheet입니다.