메뉴 건너뛰기

조회 수 2 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부

db_key_value()

$db->insert()

$tools->errMsg()

등의 함수는 제가 만들어 쓰는 함수라서

DB입력 부분, alert창 부분은 자신에게 맞게 수정하셔야 해요.

PHPExcel 는 압축 풀어서 현재 디렉토리에 올리시면 됩니다.

 

 

[파일명 : content.php]

 

<form id="residents_excel_up" method="post" enctype="multipart/form-data" action="content_sub.php" enctype="multipart/form-data">
        <input type="file" id="client_excel_file" name="client_excel_file" accept="application/vnd.ms-excel"  style="display: none">
    </form>

 

 

 

<div class="rt">
                    거래처 일괄 등록 (엑셀파일) :
                    <a class="table_top_btn" href="./download.php?file=client_list_sample.xls&url=./files/sample/client_list_sample.xls"><i class="fa fa-download" style="color:#00a5ba;"></i> 샘플파일 다운로드</a>
                    <span class="table_top_btn" onclick="resident_info_lists_up()"><i class="fa fa-upload" style="color:#00a5ba;"></i> 파일등록</span>
                </div>

 

<script>

$("#client_excel_file").change(function(e) {
            if ($(this).val() == '') {
                alert('파일 없음');
                return false;
            }
            // 폼전송
            var formData = new FormData($("#residents_excel_up")[0]);
            $("#residents_excel_up").submit();

        });

 

function  resident_info_lists_up(){
            $("#client_excel_file").click();
        }

</script>

 

 

 

 

 

[파일명 : content_sub.php]

<?php
include_once('./_common.php');

$upfile_dir = "./files";

// 현장 파일업로드 처리
$upfile_name = $_FILES['client_excel_file']['name']; // 파일이름
$upfile_type = $_FILES['client_excel_file']['type']; // 확장자
$upfile_size = $_FILES['client_excel_file']['size']; // 파일크기
$upfile_tmp  = $_FILES['client_excel_file']['tmp_name']; // 임시 디렉토리에 저장된 파일명

// 등록하려는 파일을 현재 자료실의 지정디렉토리에 저장
if(!copy($_FILES['client_excel_file']['tmp_name'],"$upfile_dir/$upfile_name")) {
    //echo"<script>alert('엑셀 업로드에 문제가 발생했습니다.');</script>";
    $tools->errMsg("엑셀 업로드에 문제가 발생했습니다.");
}

if(preg_match("/(\.(csv|CSV|xls|xlsx))$/i",$upfile_name)) {
} else {
    echo ("<script>window.alert('업로드를 할수 없는 파일 입니다.\\n\\r확장자가 csv,xls,xlsx 인 경우만 업로드가 가능합니다.'); history.go(-1) </script>");
    exit;
}

if ($upfile_name) {
    $Result = array(
        'In_Data' => array(
            'Same' => 0,  // 성공 갯수
            'Success' => 0,  // 실패 갯수
            'Failed' => array()  // 실패한 경우의 배열
        )
    );
    // 저장된 파일을 읽어 들인다
    $filename = $upfile_dir . "/" . $upfile_name; // 읽어들일 엑셀 파일의 경로와 파일명을 지정한다.

    require_once "./PHPExcel/Classes/PHPExcel.php"; // PHPExcel.php을 불러옴.
    $objPHPExcel = new PHPExcel();
    require_once "./PHPExcel/Classes/PHPExcel/IOFactory.php"; // IOFactory.php을 불러옴.

    //try {
    $objReader = PHPExcel_IOFactory::createReaderForFile($filename); // 업로드 된 엑셀 형식에 맞는 Reader객체를 만든다.
    $objReader->setReadDataOnly(true); // 읽기전용으로 설정
    $objExcel = $objReader->load($filename); // 엑셀파일을 읽는다
    $objExcel->setActiveSheetIndex(0); // 첫번째 시트를 선택
    $objWorksheet = $objExcel->getActiveSheet();
    $rowIterator = $objWorksheet->getRowIterator();
    foreach ($rowIterator as $row) { // 모든 행에 대해서
        $cellIterator = $row->getCellIterator();
        $cellIterator->setIterateOnlyExistingCells(false);
    }
    $maxRow = $objWorksheet->getHighestRow(); // 마지막 행
    $suc = 0;
    $sam = 0;
    $fail = 0;
    for ($i = 2; $i <= $maxRow; $i++) {
        $dataA = $objWorksheet->getCell('A' . $i)->getValue(); // A열
        $dataB = $objWorksheet->getCell('B' . $i)->getValue(); // B열
        $dataC = $objWorksheet->getCell('C' . $i)->getValue(); // C열
        $dataD = $objWorksheet->getCell('D' . $i)->getValue(); // D열
        $dataE = $objWorksheet->getCell('E' . $i)->getValue(); // E열
        $dataF = $objWorksheet->getCell('F' . $i)->getValue(); // F열
        $dataG = $objWorksheet->getCell('G' . $i)->getValue(); // G열
        $dataH = $objWorksheet->getCell('H' . $i)->getValue(); // H열
        $dataI = $objWorksheet->getCell('I' . $i)->getValue(); // I열

        if ($dataB) {
            $org_business = $dataB;
            $rep_business = str_replace("-", "", $dataB);

            $cnt_before = $db->cnt('거래처관리', 'where 사업자번호 = "' . $org_business . '" or 사업자번호 = "' . $rep_business . '"');

            if ($cnt_before > 0) {
                $Result['In_Data']['Same']++;
                continue;
            } else {
                $client_data = array(
                    '거래처명' => $dataA,
                    '사업자번호' => $dataB,
                    '대표자' => $dataC,
                    '업태' => $dataD,
                    '종목' => $dataE,
                    '주소' => $dataF,
                    '전화번호' => $dataG,
                    '팩스' => $dataH,
                    '이메일' => $dataI,
                    '입력일' => date('Ymd'),
                    'signdate' => time()
                );
                $result = $db->insert("거래처관리", db_key_value($client_data));

                if ($result) {
                    $Result['In_Data']['Success']++;
                } else {
                    $Result['In_Data']['Failed'][] = $dataB;
                }
            }
        }
    }
}
if(!unlink($filename)){ $tools->msg("파일삭제 안됨(unlink)"); }
?>

<script>
    alert('처리되었습니다!\n\n성공: ' + <?php echo $Result['In_Data']['Success']; ?> + '\n실패: ' + <?php echo count($Result['In_Data']['Failed']); ?> + '\n중복: ' + <?php echo $Result['In_Data']['Same']; ?>);
    location.href='gurelist.php';
</script>


List of Articles
번호 제목 날짜 조회 수
70 DatePicker 달력 플러그인을 활용한 날짜 입력 쉽게하기 file 2017.04.12 4611
69 다음날 00시에 쿠키 만료되도록 하는 방법 2014.02.27 4411
68 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-2 file 2017.04.13 4262
67 게시판 글쓰기 페이지에 다음 API 주소 입력기 사용하기 file 2017.04.12 3729
66 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-1 file 2017.04.13 3475
65 여분필드를 활용한 게시판 스킨 제작 - 기초 예제1-3 file 2017.04.13 3276
64 이름이나 연락처 중간 부분을 *** 표시로 숨기기 file 2017.04.12 3063
63 게시판 기본 스킨 목록 페이지 살펴보기 1 - list.skin.php 2017.04.13 2959
62 게시판 기본 스킨 글쓰기 페이지 살펴보기 2 - 상세 설명 2017.04.13 2916
61 여분필드를 활용한 게시판 스킨 제작 - 기본적인 사용 방법 2017.04.13 2892
60 게시판 글쓰기 페이지에 스마트 에디터 2개 이상 사용하기 2017.04.12 2778
59 DatePicker 달력 플러그인을 활용한 날짜 입력 쉽게하기 file 2017.04.12 2761
58 그누보드 확장변수 사용 2016.12.22 2634
57 게시판 기본 스킨 글쓰기 페이지 살펴보기 1 - write.skin.php 2017.04.13 2551
56 게시판 기본 스킨 내용보기 페이지 살펴보기 2 - 상세 설명 2017.04.13 2528
55 여분필드를 활용한 게시판 스킨 제작 - 여분 필드 10개 이상 사용하기 file 2017.04.12 2403
54 게시판 스킨 파일 구조 2016.12.22 2343
53 게시판 기본 스킨 목록 페이지 살펴보기 2 - 상세 설명 2017.04.13 2321
52 배열을 사용해서 여분필드 한 개로 연락처 입력란 3등분하기 file 2017.04.12 2292
51 게시판 스킨 목록 페이지에 이전 다음 페이지 링크 만들기 2017.04.12 1912
Board Pagination Prev 1 2 3 4 Next
/ 4

하단 정보를 입력할 수 있습니다

© k2s0o1d4e0s2i1g5n. All Rights Reserved