PHP에서 PHPExcel를 이용한 엑셀 다운로드 하기

안녕하세요. AkibaTV입니다.

이번에 소개할 내용은 PHP에서 디비의 데이터등을 가공후

엑셀파일로 다운로드 하는 방법을 소개해 드리도록 하겠습니다.

데이터를 엑셀파일로 만들기 위해서 오픈소스인 PHPExcel를 이용합니다.

PHPExcel를 이용하여 PHPExcel에서 제공해주는 함수를 이용 하시면

간단하고 쉽게 엑셀파일로 가공후 다운로드를 하실수가 있습니다.

그럼 코딩을 하기에 앞서 깃허브에서 PHPExcel를 다운로드 하겠습니다.

https://github.com/PHPOffice/PHPExcel

image

다운로드 받으신 PHPExcel를 적당한곳에 압축을 푸시고

Visual Studio Code(비주얼 스튜디오 코드)로 실행하신후 php_excel.php로 파일을 추가해 주시기 바랍니다.

(php_excel.php파일은 PHPExcel를 압축을 푸신곳에 같이 놔두시기 바랍니다.)

image

DB에 등록한 데이터를 엑셀로 출력을 위해서 디비에 기본 데이터를 추가를 해주도록 하겠습니다.

PHP에서 DB를 사용하는 방법에 대해서는 아래의 내용을 참고해 주시기 바랍니다.

라즈베리파이 또는 리눅스 PHP에서 MariaDB 사용하기

image

DB에는 2건의 데이터를 추가를 해두었습니다.

엑셀을 다운로드를 위해서 아래와 같이 코딩을 해주시기 바랍니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
include "./PHPExcel-1.8/Classes/PHPExcel.php";

$servername = "localhost";
$username = "akibatv";
$password = "akibatv";
$dbname = "akibatv";

// 데이터베이스 생성
$conn = new mysqli($servername, $username, $password, $dbname);

// 데이터베이스 접속
if ($conn->connect_error) {
die("데이터베이스 접속 실패 : " . $conn->connect_error);
}

$phpExcel = new PHPExcel();

$phpExcel->setActiveSheetIndex(0);
$phpExcel->getActiveSheet()
->setCellValue("A1", "NO.")
->setCellValue("B1", "이름")
->setCellValue("C1", "나이")
->setCellValue("D1", "생년월일")
->setCellValue("E1", "사이트URL");

$sql = " SELECT * FROM test2 ";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
$no = 1;
$line = 2;
while($row = $result->fetch_assoc()) {
$phpExcel->setActiveSheetIndex(0)
->setCellValue("A".$line, $no)
->setCellValue("B".$line, $row['name'])
->setCellValue("C".$line, $row['age'])
->setCellValue("D".$line, $row['birthday'])
->setCellValue("E".$line, $row['site_url']);
$no++;
$line++;
}
}

header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="AkibaTV.xls"');
header('Cache-Control: max-age=0');

$objWriter = PHPExcel_IOFactory::createWriter($phpExcel, 'Excel5');
$objWriter->save('php://output');

$conn->close();
?>
Excel Download

image

위와같이 작성을 하셨으면 확인을 해보도록 하겠습니다.

소스파일을 라즈베리파이의 웹폴더에 올려주시기 바랍니다.

image

소스를 올려주셨으면 웹브라우저를 실행하시고 서버에 올린 PHP파일로 접속을 해주시기 바랍니다.

http://라즈베리파이서버 IP/php_excel/php_excel.php

image

위와같이 엑셀파일이 다운로드 된것을 보실수 있습니다.

엑셀파일을 열어주셔서 확인을 해보도록 하겠습니다.

image

DB에 등록한 데이터가 엑셀에 정상적으로 출력이 된것을 확인 하실수 있습니다.