반응형
Spreadsheet 지원 excel 함수 식 사용
<?php
namespace app
# 클래스 파일의 네임스페이스 이름을 지정합니다
use PhpOffice\PhpSpreadsheet\Spreadsheet;
# Xlsx 클래스 스프레드쉬트를 파일에 저장합니다
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
# 인스턴스화된 Spreadsheet 개체
$spreadsheet = new Spreadsheet();
# 활동 워크시트 가져오기
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue('A1','10');
$sheet->setCellValue('B1','15');
$sheet->setCellValue('C1','20');
$sheet->setCellValue('D1','25');
$sheet->setCellValue('E1','30');
$sheet->setCellValue('G1','35');
$sheet->setCellValue('A2', '총계:');
$sheet->setCellValue('B2', '=SUM(A1:G1)');
$sheet->setCellValue('A3', '평균수:');
$sheet->setCellValue('B3', '=AVERAGE(A1:G1)');
$sheet->setCellValue('A4', '최소수:');
$sheet->setCellValue('B4', '=MIN(A1:G1)');
$sheet->setCellValue('A5', '최대수:');
$sheet->setCellValue('B5', '=MAX(A1:G1)');
$sheet->setCellValue('A6', '최대수:');
$sheet->setCellValue('B6', '\=MAX(A1:G1)'); // 이스케이프 문자 사용
// 대량 할당
$sheet->setCellValue('A1','ID');
$sheet->setCellValue('B1','이름');
$sheet->setCellValue('C1','연령');
$sheet->setCellValue('D1','키');
$sheet->fromArray(
[
[1,'오양크','18세','188cm'],
[2,'황용','17세','165cm'],
[3,'곽정','스물한 살','180cm']
],
3,
'A2'
);
// 셀을 병합하면 A1에 시작 좌표만 할당할 수 있습니다
$sheet->mergeCells('A1:B5');
$sheet->getCell('A1')->setValue('오양크');
# Xlsx 클래스 스프레드쉬트를 파일에 저장합니다
$writer = new Xlsx($spreadsheet);
$writer->save('1.xlsx');
// 클라이언트 파일 다운로드
header('Content-Type:application/vnd.ms-excel');
header('Content-Disposition:attachment;filename=1.xls');
header('Cache-Control:max-age=0');
$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xls');
$writer->save('php://output');
표 파일 읽기
<?php
namespace app;
# 읽기 작업 만들기
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xlsx');
# 파일 열기, 엑셀 불러오기
$spreadsheet = $reader->load('1.xlsx');
# 활동 워크시트 가져오기
$sheet = $spreadsheet->겟액티veSheet();
# 셀 값과 좌표 가져오기
$cellC1 = $sheet ->get셀('B2''));
echo '값: ', $cellC1->getValue(),PHP_EOL;
echo '좌표: ', $cellC1->getCoordinate(),PHP_EOL;
$sheet->setCellValue('B2', '오양펑'');
# 셀 값과 좌표 가져오기
$cellC2 = $sheet ->get셀('B2''));
echo '값: ', $cellC2->getValue(),PHP_EOL;
echo '좌표: ', $cellC2->getCoordinate();
가져오기 기능
<?php
$file = $_FILES['file']['tmp_name'];
# composer 자동 파일 불러오기
require 'vendor/autoload.php';
# 리포지토리에 로드
require 'function.php';
# 읽기 작업 만들기
$reader = \PhpOffice\PhpSpreadsheet\IOFactory::createReader('Xl)sx');
# 파일 열기, 엑셀 불러오기
$spreadsheet = $reader ->load($file);
# 활동 워크시트 가져오기
$sheet = $spreadsheet ->getActiveSheet();
# 총 열 수 가져오기
$highestColumn = $sheet->getHighestColumn();
# 총 행수 가져오기
$highestRow = $sheet ->getHighestRow();
# 열 수를 숫자 표시로 바꾸기
$highestColumnIndex = \PhpOffice\PhpSpreadsheet\Cell\Coordinate::columnIndexFromString($highest)Column)
$log = [ ];
for($a=2;$a<$highestRow;$a++){
$title = $sheet ->getCellByColumnAndRow(1,$)a)->getValue();
$cat_fname = $sheet->getCellByColumnAndRow(2,$a)->getValue();
$cat_name = $sheet->getCellByColumnAndRow(3,$a)->getValue();
$price = $sheet ->getCellByColumnAndRow(4,$)a)->getValue();
$img = $sheet ->getCellByColumnAndRow(5,$a)->getValue();
$cat_fid = find('shop_cat', 'id', 'name=').$cat_fname.''')
$cat_id = find('shop_cat', 'id', 'name=').$cat_name.''')
$data = [
'title' => $title,
'cat_fid' => $cat_fid['id'],
'cat_id' => $cat_id['id'],
'price' => $price,
'img' => $img,
'add_time' => time(),
];
$ins = insert('shop_list', $data);
if($ins){
$log[] = '.$a.조, 삽입 성공';
}else{
$log[] = '.$a.조, 삽입 실패';
}
}
echo json_encode(['code'=>0, 'msg'=>'성공', 'da'ta'=>$log]);
반응형
'개발 꿀팁 > PHP' 카테고리의 다른 글
PHP 객체 지향 요점 (0) | 2022.09.19 |
---|---|
php-fpm과 swoole의 최신 성능 대비 (1) | 2022.09.16 |
php 생성 PDF에 사용되는 클래스 MPDF (1) | 2022.09.16 |
PHP 조작 Excel – PHP Excel 기본 사용법 상세 (0) | 2022.09.15 |
아직 등록된 글이 없습니다.새 글 쓰기 (0) | 2022.09.15 |