phpexcel 셀 병합 후

phpexcel 셀 병합 후

QA

phpexcel 셀 병합 후

답변 2

본문

안녕하세요.

현재 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로 코드 바꿔도 동일할까요?

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 29
© SIRSOFT
현재 페이지 제일 처음으로