개발 꿀팁/PHP

PhpSpreadsheet 중국어 문서 | Spreadsheet 작업 튜토리얼 예제

Jammie 2022. 9. 16. 14:46
반응형

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]);
반응형