도와주세요! 도저히 모르겠습니다 .. ㅠㅠ 채택완료
호다
1년 전
조회 1,566
안녕하세요? 항상 도움 받고 있습니다. 감사합니다.
테이블에 있는 데이터를 엑셀 파일 열에 배치해서 다운로드 기능을 만드는 작업 중인데
테이블이 각각 <td> 태그를 2가지 경우를 만들어서 한 가지 테이블로 합쳐놨는데 문제는 이걸 어떻게 해야 엑셀 파일로 만들 수 있을지 모르겠습니다 ..
테이블 코드는 아래와 같습니다.
</p>
<p><div id="table" class="table01"></p>
<p> <table id="stickyTable"></p>
<p> <colgroup></p>
<p> <col width="*%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> <col width="10%"></p>
<p> </colgroup></p>
<p> <thead></p>
<p> <tr></p>
<p> <th>[장소번호]게시대명</th></p>
<p> <th>면</th></p>
<p> <th>1기<!--
(<?php echo $month; ?>/1 ~ <?php echo $month; ?>/5) --></th></p>
<p> <th>2기<!--
(<?php echo $month; ?>/6 ~ <?php echo $month; ?>/10) --></th></p>
<p> <th>3기<!--
(<?php echo $month; ?>/11 ~ <?php echo $month; ?>/15) --></th></p>
<p> <th>4기<!--
(<?php echo $month; ?>/16 ~ <?php echo $month; ?>/20) --></th></p>
<p> <th>5기<!--
(<?php echo $month; ?>/21 ~ <?php echo $month; ?>/25) --></th></p>
<p> <th>6기<!--
(<?php echo $month; ?>/26 ~ <?php echo $month; ?>/31) --></th></p>
<p> </tr></p>
<p> </thead></p>
<p>
</p>
<p> <?php</p>
<p> for ($i = 0; $row = sql_fetch_array($result); $i++) {</p>
<p> $it_id = $row['it_id'];</p>
<p> ?></p>
<p> <tbody></p>
<p> <tr></p>
<p> <td rowspan="<?php echo $row['wr_4']?>">[<?php echo $row['wr_1']?>] <?php echo $row['wr_subject']?></td></p>
<p> <td>1</td></p>
<p> <?php for ($j = 1; $j <= 6; $j++) : ?></p>
<p> <td></p>
<p> <?php</p>
<p> $banner_data = $banner_array[$it_id][$j][1];</p>
<p> if (!$banner_data[0]) {</p>
<p> echo "-";</p>
<p> } else {</p>
<p> ?></p>
<p> <span class="fixed"><?php echo $banner_data[0]; ?></span><?php echo $banner_data[1]; ?></p>
<p> <?php } ?></p>
<p> </td></p>
<p> <?php endfor; ?></p>
<p> </tr></p>
<p> <?php</p>
<p> for ($j = 2; $j <= $row['wr_4']; $j++) {</p>
<p> ?></p>
<p> <tr></p>
<p> <td><?php echo $j; ?></td></p>
<p> <?php for ($k = 1; $k <= 6; $k++) : ?></p>
<p> <td></p>
<p> <?php</p>
<p> $banner_data = $banner_array[$it_id][$k][$j];</p>
<p> if (!$banner_data[0]) {</p>
<p> echo "-";</p>
<p> } else {</p>
<p> ?></p>
<p> <span class="fixed"><?php echo $banner_data[0]; ?></span><?php echo $banner_data[1]; ?></p>
<p> <?php } ?></p>
<p> </td></p>
<p> <?php endfor; ?></p>
<p> </tr></p>
<p> <?php } ?></p>
<p> </tbody></p>
<p> <?php } ?></p>
<p> </p>
<p> </table></p>
<p>
위와 같이 <td> 가 '1' 인 테이블과 <td> 가 $j 인 테이블을 각각 만들어서 2가지 for문을 만들어서 한 테이블로 합쳤습니다.
저는 아래와 같이 코드를 짰습니다.
</p>
<p>while ($row = sql_fetch_array($result)) {</p>
<p> $it_id = $row['it_id'];</p>
<p> $wr_1 = $row['wr_1'];</p>
<p> $wr_subject = $row['wr_subject'];</p>
<p> $wr_4 = $row['wr_4'];</p>
<p> $mb_name = $row['mb_name'];</p>
<p> $mb_company = $row['mb_company'];</p>
<p> $od_memo = $row['od_memo'];</p>
<p> </p>
<p> // 면 열의 셀을 합병하기 위해 해당 행을 여러 번 추가</p>
<p> for ($i = 0; $i < $wr_4; $i++) {</p>
<p> $row_data = array(</p>
<p> ($i === 0) ? $wr_1 : '', // 장소번호 (첫 번째 행에서만 표시)</p>
<p> ($i === 0) ? $wr_subject : '', // 게시대명 (첫 번째 행에서만 표시)</p>
<p> $rowCounter++, // 면</p>
<p> );</p>
<p> </p>
<p> for ($j = 1; $j <= 6; $j++) :</p>
<p> $banner_data = $banner_array[$it_id][$j][1];</p>
<p> if (!$banner_data[0]) {</p>
<p> $row_data[] = "-";</p>
<p> } else {</p>
<p> $row_data[] = $banner_data[1];</p>
<p> }</p>
<p> endfor;</p>
<p> </p>
<p> for ($j = 2; $j <= $wr_4; $j++) {</p>
<p> $j;</p>
<p> for ($k = 1; $k <= 6; $k++) :</p>
<p> $banner_data = $banner_array[$it_id][$k][$j];</p>
<p> if (!$banner_data[0]) {</p>
<p> $row_data[] = "-";</p>
<p> } else {</p>
<p> $row_data[] = $banner_data[1];</p>
<p> }</p>
<p> endfor;</p>
<p> }</p>
<p> </p>
<p>
</p>
<p> $data[] = $row_data;</p>
<p>
이렇게 하니까 당연히 for문을 2번 도니까 첫 번째 데이터는 엑셀 열에 제대로 들어가는데 2번째는 엑셀 열 바깥으로 생성이 되더라고요. 어떻게 해야 위의 경우처럼 테이블(표) 를 두 번 만들어서 합칠 수 있을까요?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
1년 전
다음과 같은 방법도 있으니 참고해 보세요
</p>
<p><?php
// PHPExcel 라이브러리 로드
require_once 'PHPExcel/PHPExcel.php';</p>
<p>// 엑셀 객체 생성
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$sheet = $objPHPExcel->getActiveSheet();</p>
<p>// 테이블 데이터 가져오기
while ($row = sql_fetch_array($result)) {
$it_id = $row['it_id'];
$wr_1 = $row['wr_1'];
$wr_subject = $row['wr_subject'];
$wr_4 = $row['wr_4'];</p>
<p> // 면 열의 셀을 합병하기 위해 해당 행을 여러 번 추가
for ($i = 0; $i < $wr_4; $i++) {
$row_data = array(
($i === 0) ? $wr_1 : '',
($i === 0) ? $wr_subject : '',
$i + 1, // 면
);</p>
<p> for ($j = 1; $j <= 6; $j++) {
$banner_data = $banner_array[$it_id][$j][($i === 0) ? 1 : ($i + 1)];
$row_data[] = $banner_data[0] ? $banner_data[1] : "-";
}</p>
<p> // 데이터를 엑셀 시트에 추가
$sheet->fromArray([$row_data], null, 'A');
}
}</p>
<p>// 엑셀 파일로 저장
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('output.xlsx');
?>
output.xlsx 은 원하는 파일로 수정 하시면 됩니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
�
호다
1년 전
헐!!!!! 우와!!!! 감사합니다!!!! 어떻게 된거죠!!!!! 해결되었어요!!!!! 정말 정말 감사합니다. 몇 시간동안 헤맸는데!!!!! ㅠㅠㅠㅠㅠ
�
웹메이킹
1년 전
해결되셨다니 다행이네요..~
말로 설명 하기는 좀 어려운 부분이 있네요...^^
즐거운 코딩 되세요~
말로 설명 하기는 좀 어려운 부분이 있네요...^^
즐거운 코딩 되세요~
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인