2026, 새로운 도약을 시작합니다.

phpexcel 셀 병합 후 채택완료

안녕하세요.

현재 PHPExcel 라이브러리를 이용하여 엑셀을 다운로드 받는 코드를 작성중입니다.

상단에 DB를 연결하여 DB값을 불러와 엑셀의 데이터에 넣어줄 예정인데요, DB 연결에는 문제가 없습니다.

다만, 1열 2열을 병합했으면 데이터가 3열부터 나와야하는데 2열부터 나오게 됩니다.

코드는 다음과 같습니다.

Copy


    // 셀 병합

    $objPHPExcel->getActiveSheet()->mergeCells('A1:A2');

    $objPHPExcel->getActiveSheet()->mergeCells('B1:B2');

    $objPHPExcel->getActiveSheet()->mergeCells('C1:H1');

    $objPHPExcel->getActiveSheet()->mergeCells('I1:I2');

 

    $objPHPExcel -> setActiveSheetIndex(0)

                ->setCellValue('A1', '상태')

                ->setCellValue('B1', '코드번호')

                ->setCellValue('C1', '수정 전')

                ->setCellValue('I1', '시간')

                ->setCellValue('C2', '품명')

                ->setCellValue('D2', '위치')

                ->setCellValue('E2', '수량')

                ->setCellValue('F2', '담당자')

                ->setCellValue('G2', '사용자')

                ->setCellValue('H2', '메모');

이렇게 실행해주면 아래 이미지처럼 테이블 병합된 부분이 잘 실행됩니다.

1935365004_1657082977.4499.png

다만, 데이터 넣는 코드를 추가해주면 2열부터 데이터가 들어와집니다.

원래는 3열부터 데이터가 들어와야 합니다.

Copy


    // 셀 병합

    $objPHPExcel->getActiveSheet()->mergeCells('A1:A2');

    $objPHPExcel->getActiveSheet()->mergeCells('B1:B2');

    $objPHPExcel->getActiveSheet()->mergeCells('C1:H1');

    $objPHPExcel->getActiveSheet()->mergeCells('I1:I2');

 

    $objPHPExcel -> setActiveSheetIndex(0)

                ->setCellValue('A1', '상태')

                ->setCellValue('B1', '코드번호')

                ->setCellValue('C1', '수정 전')

                ->setCellValue('I1', '시간')

                ->setCellValue('C2', '품명')

                ->setCellValue('D2', '위치')

                ->setCellValue('E2', '수량')

                ->setCellValue('F2', '담당자')

                ->setCellValue('G2', '사용자')

                ->setCellValue('H2', '메모');

 

    // db 데이터 값 불러오기

    $num = 2;

    while( $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC) ){ 

        $objPHPExcel -> setActiveSheetIndex(0)                  

                    -> setCellValue(sprintf("A%s", $num), $row['StatusName'])

                    -> setCellValue(sprintf("B%s", $num), $row['ProductCode'])

                    -> setCellValue(sprintf("C%s", $num), $row['BeforeName'])

                    -> setCellValue(sprintf("D%s", $num), $row['BeforeLocation'])

                    -> setCellValue(sprintf("E%s", $num), $row['BeforeCount'] == 0 ? '' : $row['BeforeCount'])

                    -> setCellValue(sprintf("F%s", $num), $row['BeforeCharge'])

                    -> setCellValue(sprintf("G%s", $num), $row['BeforeUser'])

                    -> setCellValue(sprintf("H%s", $num), $row['BeforeNote'])

                    -> setCellValue(sprintf("I%s", $num), date_format($row['InsertDate'], 'Y-m-d H:i'));

        $num++;

    }

1935365004_1657083292.3165.png

혹시 데이터가 3열부터 들어오게 하는 방법에 대해 아시는 분 계실까요?

감사합니다..

답변 2개

채택된 답변
+20 포인트

num=2 를 3으로 하면 되지 않나요?

상단 타이틀을 2까지 사용했으니?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

허 정말 바보같은 질문이었네요..
PHPExcel 라이브러리를 충분히 이해했다고 생각했는데 이렇게 간단한거조차 몰랐다니 아직 한참 부족했나봅니다..
정말 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

c3로 코드 바꿔도 동일할까요?

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

도와주셔서 감사합니다!!
$num값을 3으로 변경하니까 해결됐습니다. 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고