phpexcel로 xls 파일에서 사진을 php로 사진으로 출력하는 법 좀 알려 주세요
본문
phpexcel로 xls 파일에서 사진을 php로 사진으로 올리고 궁금한 점이 있습니다 !-->
!-->
!-->!-->
1. xls 파일 => 1406 X 702
2. xls 등록하고
3. width가 504px 되여서 나와요...!-->
width 1408px 원본 크기 대로 나오려면 어떻게 해야 돼요?
<?php
require_once "./PHPExcel/Classes/PHPExcel.php"; // PHPExcel.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
require_once "./PHPExcel/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러와야 하며, 경로는 사용자의 설정에 맞게 수정해야 한다.
$objPHPExcel = new PHPExcel();
$filename = 'x.xlsx'; // 서버에 올려진 파일을 직접 지정할 경우
// excel_upload.php 파일을 이용해 업로드 한 경우
//$filename = $_FILES['excelFile']['tmp_name'];
try {
$file = $filename; //Excel File
//$subDir = "community/data/file/bestbike_bike/".date('Y') . '/' . date('m') . '/' . date('d') . '/';
$subDir = "community/data/file/bestbike_bike/".date('Y') . '/' . date('m') . '/';
$imageFilePath = "..".$basePath . '/'; //图片保存目录
if (!is_dir($imageFilePath . $subDir)) { //如果目录不存在,则创建
mkdir($imageFilePath . $subDir, 0777, true);
}
//echo $imageFilePath . $subDir;
//exit;
$excelReader = new \PHPExcel_Reader_Excel2007();
$objPHPExcel = \PHPExcel_IOFactory::load($file);
$sheet = $objPHPExcel->getSheet(0); // 첫번째 시트
$highestRowNum = $sheet->getHighestRow(); // 마지막 라인
$highestColumn = $sheet->getHighestColumn(); // 마지막 칼럼
$highestColumnNum = \PHPExcel_Cell::columnIndexFromString($highestColumn);
// 1번행 manufacturing, Model... 등등
//$ColumnNum = "manufacturing,Model,number,manufacture,transmission,fuel,color,Accident,AS,distance,sales,Sale Price,sale,N,Convenience,performance/appearance,description,image1,image2";
//$highestColumnNum = explode(",", $ColumnNum);
$titlefiled = array();
for ($i = 0; $i < $highestColumnNum; $i++) {
$cellName = \PHPExcel_Cell::stringFromColumnIndex($i) . '1';
$cellVal = $sheet->getCell($cellName)->getValue(); // 내용
$titlefiled[] = $cellVal;
}
//print_r($titlefiled);
//exit;
// 2번행 이상 배열 시작
$data = array();
for ($i = 2; $i <= $highestRowNum; $i++) {//ignore row 1
$row = array();
for ($j = 0; $j < $highestColumnNum; $j++) {
$cellName = \PHPExcel_Cell::stringFromColumnIndex($j) . $i;
$cellVal = $sheet->getCell($cellName)->getValue();
$row[$titlefiled[$j]] = $cellVal;
}
$data[] = $row;
}
//print_r($data);
//exit;
// 이미지
$is=0;
foreach ($sheet->getDrawingCollection() as $drawing) {
if ($drawing instanceof PHPExcel_Worksheet_MemoryDrawing) {
ob_start();
call_user_func(
$drawing->getRenderingFunction(),
$drawing->getImageResource()
);
$imageContents = ob_get_contents();
ob_end_clean();
switch ($drawing->getMimeType()) {
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG :
$extension = 'png';
break;
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_GIF:
$extension = 'gif';
break;
case \PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_JPEG :
$extension = 'jpg';
break;
}
} else {
$drawing->setWidth(800); // 이미지 크기
$drawing->setOffsetX(35); // 이미지가 시작할 위치를 퍼센트로 적용 셀의 크기에 가로가 35%만큼 이동해서 시작
$drawing->setOffsetY(5); // 이미지가 시작할 위치를 퍼센트로 적용 셀의 크기에 세로가 5%만큼 이동해서 시작
// echo "<pre>";
//print_r($drawing->getPath());
//exit;
$zipReader = fopen($drawing->getPath(),'r');
$imageContents = '';
while (!feof($zipReader)) {
$imageContents .= fread($zipReader,102400);
}
fclose($zipReader);
$extension = $drawing->getExtension();
$base64 = base64_encode($imageContents);
$imgSrc = 'data:image/' . $extension . ';base64,' . $base64;
$image_s = "<img src='" . $imgSrc ."'>";
//$data[$is][image1] = $image_s;
$data[$is][image1] = $image_s;
//print_r($image_s);
}
//print_r($extension);
//print_r($imageFilePath);
list($startColumn, $startRow) = \PHPExcel_Cell::coordinateFromString($drawing->getCoordinates()); //获取列与行号
$startColumnindex = \PHPExcel_Cell::columnIndexFromString($startColumn) - 1;
$name = $subDir . substr(time(), 5) . mt_rand(0, 9999) . '.' . $extension;
//$data[$startRow - 2][$titlefiled[$startColumnindex]] = $name;
$data[$is][images] = file_put_contents($imageFilePath . $name, $imageContents);
$data[$is][image] = $imageFilePath.$name;
//$data[$is][image_s] = $image_s;
//print_r($is);
$is++;
}
echo "<pre>";
print_r($data);
답변을 작성하시기 전에 로그인 해주세요.