[php] db데이터 불러와 엑셀파일 만들기

db에 있는 데이터를 엑셀로 뽑아야하는 경우가 있어 구글링하면서 나름대로 방법을 찾아봤습니다.

style 속성을 통해 셀의 배경색, 높이, 넓이 등 스타일을 지정해 줄수도 있습니다.  이미지 위치조정을 위해서 margin이나 left 사용해 봤는데 적용되지 않았습니다.

<?php
include 'wp-config.php';
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
$query = $mysqli->query("SELECT * FROM `wp_posts`");

header("Content-Type: application/xls");
header("Content-Disposition: attachment; filename=file.xls");
header("Pragma: no-cache");
header("Expires: 0");

?>
<table>
    <thead>
        <tr>
            <th>이미지</th>
            <th>제목</th>
            <th>날짜</th>
        </tr>
    </thead>
    <tbody>
        <?php 
        for ($i=0; $row = $query->fetch_array(MYSQLI_ASSOC); $i++) { 
            ?>
            <tr>
                <td style="width:100px; height: 100px;"><img src="http://placehold.it/100x100" alt=""></td>
                <td><?php echo $row['post_title'];?></td>
                <td><?php echo $row['post_date'];?></td>
            </tr>
            <?php
        }
        ?>
    </tbody>
</table>

한글이 깨지는 경우 header값을 수정하고  utf-8 BOM 객체를 생성합니다.

<?php
header('Content-Encoding: UTF-8');
header("Content-Type: application/xls; charset=UTF-8");    
header("Content-Disposition: attachment; filename=file.xls");  
header("Pragma: no-cache"); 
header("Expires: 0");
echo "\xEF\xBB\xBF"; // UTF-8 BOM
?>