CodeIgniter3
22. [CodeIgniter3] MySQL에서 CSV파일 내보내기
drizzle0925
2022. 1. 6. 12:54
728x90
데이터 가져오기 및 내보내기 CSV(쉼표로 구분된 값)는 웹 개발에서 가장 널리 사용되는 파일 형식입니다.
CSV 파일을 생성하기 위해 fqutcsv()라는 PHP 메서드를 사용하거나 파일에 쉼표로 구분된 내용을 직접 입력하여 만들 수 있습니다.
이번 포스팅에서는 CodeIgniter를 사용하여 MySQL의 데이터를 CSV 파일로 내보내는 방법을 해보겠습니다.
Database
아래 쿼리를 사용하여 `tbl_user` 테이블을 생성합니다.
CREATE TABLE IF NOT EXISTS `tbl_user`(
id int not null primary key auto_increment,
name varchar(25) not null,
phone varchar(30) not null,
email varchar(200) not null
);
Controller
application/controllers/ExportController.php 파일을 만들고 아래 코드를 입력합니다.
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
class ExportController extends CI_Controller
{
public function __construct()
{
parent::__construct();
// $this->load->helper('url');
$this->load->model('ExportModel');
}
public function index()
{
$data = array();
$data['usersData'] = $this->ExportModel->getUserDetails();
$this->load->view('export_view', $data);
}
// CSV 형식으로 데이터 내보내기
public function exportCSV()
{
// CSV 파일 이름
$filename = 'users_'.date('Ymd').'.csv';
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$filename");
header("Content-Type: application/csv");
// 데이터 가져오기
$usersData = $this->ExportModel->getUserDetails();
// 파일 만들기
$file = fopen('php://output', 'w');
$header = array("No", "이름", "모바일", "이메일");
fputcsv($file, $header);
foreach($usersData as $line)
{
fputcsv($file, $line);
}
fclose($file);
exit;
}
}
?>
Model
application/models/ExportModel.php 파일을 만들고 아래 코드를 입력합니다.
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
class ExportModel extends CI_Model
{
function getUserDetails()
{
$response = array();
// Select record
$this->db->select('*');
$q = $this->db->get('tbl_user');
$response = $q->result_array();
return $response;
}
}
?>
View
application/views/export_view.php 파일을 만들고 아래 코드를 입력합니다.
<?php
if(!defined('BASEPATH')) exit('No direct script access allowed');
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MySQL의 데이터를 CSV파일로 내보내기</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
</head>
<body>
<!-- Export Data -->
<a href="<?php echo base_url('/ExportController/exportCSV'); ?>" class="btn btn-primary">내보내기</a><br /><br />
<!-- User Records -->
<table class="table table-bordered">
<thead>
<tr>
<th>이름</th>
<th>이메일</th>
<th>모바일</th>
</tr>
</thead>
<tbody>
<?php
foreach($usersData as $key => $val)
{
echo "<tr>";
echo "<td>".$val['name']."</td>";
echo "<td>".$val['email']."</td>";
echo "<td>".$val['phone']."</td>";
echo "</tr>";
}
?>
</tbody>
</table>
</body>
</html>
아래 URL로 접속합니다.
localhost/exportcontroller/
내보내기 클릭시 다운로드 폴더에 파일이 다운로드 됩니다.
728x90