phpexcel 셀 병합 후

phpexcel 셀 병합 후

QA

phpexcel 셀 병합 후

본문

안녕하세요.

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

 

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

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

 

코드는 다음과 같습니다.


    // 셀 병합
    $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열부터 데이터가 들어와야 합니다.

 


    // 셀 병합
    $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

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

 

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 29
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT