모듈

엑셀

추천 수 11 댓글 53
Extra Form
자료 소개 엑셀 파일로 관리자 페이지에서 '회원목록'과 '문서목록'을 다운받을 수 있으며, 각 게시판에서도 '문서목록'을 다운받을 수 있습니다
설치 경로 ./modules/excel
테스트 환경 Rhymix 2.0
라이선스 GPL v2
이름 버전 날짜 다운수
excel.0.0.2.zip 0.0.2 2022-10-21 48
excel.0.0.1.zip 0.0.1 2022-10-10 39

0.0.2 업데이트 (2022.10.21)
- 게시판 목록 header 수집시 확장변수 중복 수집 문제 해결
- model.php에 남아 있던 debugPrint 함수 삭제
- 게시판 목록에 카테고리 리스트가 없을 때 팝업창에서 카테고리 항목 기본 체크 방지
- 등록일 등 datetime 형식을 가진 셀의 너비를 확장 (라이브러리에 auto fit 기능이 없음ㅜ)
- 회원목록 가져올 때 승인/거부 상태, 가입일, 최근 로그인, 회원 그룹 등도 사전 체크하도록 함
- 회원목록에서 가입 승인/미인증/임시제한/거부 상태 등을 세분화해서 표시
- 회원 확장변수에서 date 형식 가져오지 못하는 문제 수정 (똑띠님)

 

 

1. 소개
- 관리자 페이지에서 '회원목록'과 '문서목록'을 엑셀 파일(*.xlsx)로 다운받을 수 있으며,
- 각 게시판에서도 '문서목록'을 다운받을 수 있습니다.

- 라이믹스 2.0.22 버전, php 7.4 버전대에서 제작되었습니다. 사용하실 때 참고하시면 좋겠습니다.

- 사용 후 의견주시면 완성도를 높이는 데 참고하도록 하겠습니다.

 

2. 설치 및 설정
- 설치경로는 ./modules/excel 입니다.
- 설치 후 관리자 페이지 대시보드(첫 화면)에서 모듈 관련 트리거 설정을 끝내주셔야 합니다.
- 또한 관리자 페이지 > 고급 > 설치된 모듈 > 엑셀로 들어가서 기본 설정을 해주시면 됩니다.
- 그리고 각 게시판의 설정 페이지 > 추가 설정 하단쯤(대강 '위지윅 에디터' 다음?)에서 '엑셀 저장' 쪽에서 게시판별로 개별 설정을 할 수 있습니다.

 

3. 작동방식
- 세 가지 형태의 목록을 다운로드할 수 있습니다.
    : 1) 관리자 페이지의 회원 목록, 2) 관리자 페이지의 문서 목록, 3) 게시판별 문서 목록
- 각 목록에서 팝업창을 띄우게 되는데
    : 부모창의 목록을 기준으로 목록을 생성하게 됩니다.
- 또한 목록의 페이지를 지정할 수 있습니다.
    : 현재/전체/맞춤 페이지 생성이 가능합니다.

 

4. 다운로드 팝업창 버튼의 활성화
- 관리자 페이지 좌측 내비게이션에서 '회원 > 회원목록'으로 들어가면 '엑셀 저장' 버튼이 활성화되는데, 버튼을 눌러 팝업창을 띄운 후 엑셀 파일을 다운로드 받을 수 있습니다.
- 관리자 페이지 좌측 내비게이션에서 '콘텐츠 > 문서'로 들어가면 '엑셀 저장' 버튼이 활성화되는데, 버튼을 눌러 팝업창을 띄운 후 엑셀 파일을 다운로드 받을 수 있습니다.
- 각 게시판 목록에서의 팝업창 버튼은 다음과 같은 코드를 통해 출력할 수 있습니다. 사용하시는 게시판 모듈 스킨의 list.html 적당한 곳에 다음의 코드를 응용하여 기입해주세요.

{@
    $excel_enable = getModel('excel') && !ExcelModel::getExcelGrantMessage('document', 'dispExcelGenerateBoard', $module_info->module_srl);
    $excel_url = getFullUrl('', 'module', 'excel', 'act', 'dispExcelGenerateBoard');
}
<a cond="$excel_enable" class="btn_img" href="#" onclick="popopen('{$excel_url}'.setQuery('target_url', current_url), 'excelGenerate'); return false;">엑셀 저장</a>

 

5. 미리보기

https://dev.aporia.blog/board_fKje46

제작자 윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile

    관리자페이지에는 잘뜨는걸 확인했고 저는 게시판에 넣어 보았는데
    Template not found: /popup_board.html 라고 나옵니다.
    / 경로로 인색하는것 같습니다.

     

    회원 정보에서 뜨긴한데 파일 저장을 누르면

    /modules/excel/libs/xlsxwriter.downloader.php의 웹페이지가 일시적으로 다운되었거나 새 웹 주소로 완전히 이동했을 수 있습니다.
    ERR_INVALID_RESPONSE

     

    가 나오네요.

  • profile profile
    혹시 라이믹스를 별도의 폴더에 설치하셨나요?
  • profile profile

    아닙니다 라이믹스 / 에 설치하였습니다.

    /www/modules/excel

    엑셀 모듈의 경우 위 위치에 설치하였습니다.

     

    / = www/ 입니다.

     

    그리고 제설정은 아래와 같습니다.

    설정.PNG

  • profile profile
    잘 재연이 되질 않네요ㅜㅜ
    excel.view.php 파일의 스킨 템플릿 경로($this->setTemplatePath)를 디버깅해보실 수 있을까요?
  • profile profile
    디버깅 은 웹 F12 콘솔상에서 ($this->setTemplatePath)를 넣고 엔터 누르면 될까요?

    우선 에러 로그를 확인해보면 아래와 같습니다.
    [Thu Dec 08 22:17:43.964062 2022] [php7:notice] [pid 13245] [client 아이피:12652] 2022-12-08 22:17:43:Error: ZipArchive class does not exist\n, referer: https://www.사이트명.com/index.php?module=excel&act=dispExcelGenerateMember
    [Thu Dec 08 22:17:43.965347 2022] [php7:notice] [pid 13245] [client 아이피:12652] PHP Exception: Error #0 "Class 'ZipArchive' not found" in modules/excel/libs/xlsxwriter.class.php on line 100\n#0 /home/사이트명/www/modules/excel/libs/xlsxwriter.class.php(74): XLSXWriter->writeToFile()\n#1 /home/사이트명/www/modules/excel/libs/xlsxwriter.downloader.php(48): XLSXWriter->writeToStdOut(), referer: https://www.사이트명.com/index.php?module=excel&act=dispExcelGenerateMember
  • profile profile
    xlsx 파일을 생성하는 라이브러리가 제대로 실행되려면 ZipArchive가 설치되어 있어야 하는데요.
    보통은 대부분 기본 지원하는 것으로 알고 있는데 혹시 가능하시다면 확인해보시겠어요?
  • profile profile

    그리고 그것과는 별개로 excel.view.php 안에
    debugPrint($this->getTemplatePath());
    를 넣고 디버그 패널이나 파일에 어떤값이 출력되는지 한번 봐주세요.

     

    현재 모바일이어서 정확한 삽입 위치는 특정할 수 없는데, debugPrint함수 삽입 위치를 못찾으시겠다면 오늘 밤 아주 늦게쯤 확인해보고 말씀드릴 수 있을 것 같아요.

  • profile profile
    설치하고 아파치 재실행했더니 엑셀이 다운로드 됩니다!!!!
    Error: ZipArchive class does not exist\
    이제보니 에러 로그에 뻔히 ZipArchive 라고 적혀있네요. 눈 뜬장님을 저를 보고 이르는것 같네요
    항상 감사합니다. !!!
  • profile profile
    <?php
    debugPrint($this->getTemplatePath());
    이렇게 둘째줄에 넣고 출력되나 보니 에러가 나옵니다.~

    Error #0 "Using $this when not in object context" in modules/excel/excel.view.php on line 2
  • profile profile
    오옷 다행입니다.
    게시판 팝업창 띄우는 건 어떤가요?
  • profile profile

    네 거기보다는 한참 아래일 거예요. 최소 $this->setTemplatePath보다 아래 부분이요

  • profile profile
    게시판에서 엑셀 저장 팝업창 로드가 아직 잘 안 되시는 거죠?
    excel.view.php 파일 134행쯤에 debugPrint($this->getTemplatePath()); 넣고 결과 확인부탁드립니다~
  • profile profile
    아니요 잘되고있어요! 그냥 디버깅 해보고싶었어요ㅎㅎ
  • profile
    와 진짜 유용하네요 감사합니다!
  • profile
    윤삼님 업데이트 감사합니다. 뒷쪽에 숫자 생기는거 제보 하려고 했었는데, 업데이트 하니 사라졌네요. 감사합니다~!!!!
  • profile profile
    네, 확인 감사합니다~!
  • ?
    모듈 설치하고 반영했더니 해당 게시판 리스트 엑셀로 잘 변환됩니다. 너무 좋아요 ㅎㅎ
    한가지 여쭤볼께 있어요. 게시판별 list.html 말씀해주신 코드 기입해서 잘 되는데
    적용한 후 특정 그룹만 보이게 가능할까요? A, B, C 그룹이 있다면
    A,B 그룹만 보이게 할 수 있을까요?^^;
  • ? profile
    엑셀 모듈의 기본 설정 및 게시판별 추가 설정에서 권한 설정이 가능하지 않은가요?
  • profile ?
    미처 못 보고.... 감사합니다.^^
  • ?
    회원 가입폼에 날짜형식을 추가해서 입력받고 저장을 하면 해당 날짜값이 제대로 출력이 안되는 것 같습니다.
    7.4.5p1 버전
    7.0.33 버전
    7.3.1p1 버전

    동일한 증상이네요. 참고로 7.0버전 7.3버전에서도 작동하네요. ^^
  • ? profile

    아앗, 오늘 저녁에 확인해보겠습니다 ^^/

    일단 증상은 확인했습니다.

    제보 감사합니다!

  • ? profile

    controller파일 _setExcelMemberData 함수에서
    if ( $included_vars[$name] === 'date' ) 이것을
    if ( $included_vars[$val] === 'date' ) 이것으로 바꾸니까 문제가 사라지네요.
    다음 버전에 반영하도록 하겠습니다!

  • ? profile
    0.0.2 업데이트 버전 올렸습니다~
  • profile

    윤삼님 감사합니다! 대박입니다~!
    회원과 문서 둘 다 잘 적용 됩니다.
    게시판에 적용을 하고 싶은데..
    제가 초보라서 그런지 어떻게 응용해서 출력하는 지를 모르겠네요.ㅠ
    남겨주신 코드 적당한 곳에 붙여 넣기 했더니...
    엑셀저장은 나오는데...
    새 창에서 페이지 없음으로 출력 됩니다.
    그리고
    --------
    {@
    $excel_enable = getModel('excel') && !ExcelModel::getExcelGrantMessage('document', 'dispExcelGenerateBoard', $module_info->module_srl);
    $excel_url = getFullUrl('', 'module', 'excel', 'act', 'dispExcelGenerateBoard');
    }
    -------
    위 내용은 코드가 먹히질 않고 그대로 출력 됩니다.
    혹시 제가 어떻게 해야 할까요~?
    정말 초보적인 질문이라 죄송합니다...
    좋은 자료 정말 감사합니다~~!

  • profile profile

    해당 코드는 템플릿 문서에 적용되는 전용 코드라서 자동으로 <?php ~~~ ?>로 변환되어야 하는데요.
    혹시 게시판 스킨의 list.html 에 적용하신 게 아닌 건가요?

     

    덧. 근데 링크해주신 곳에서는 코드가 노출되지 않는 것 같은데요?

  • profile profile

    게시판 스킨 설정 자체에 게시판 하단에 입력하기 설정이 있어서 제가 붙여 넣기 했더니 게시판 하단에 코드가 그대로 출력되고 엑셀저장은 나왔는데.... 눌러보니 경로를 못 찾더라고요..

    그래서 제가 다시...

    ---list.html 여기 저기 붙여 넣기 해봤는데... '엑셀저장' 버튼도 출력이 안되더라고요... ---

    아래는 list.html 입니다...

    <include target="_header.html" />
    ---

    초보라 죄송합니다..ㅠㅠ
    답변 감사합니다~~!

  • profile profile

    - 네, 스킨 설정에 넣으면 의미가 없습니다.
    - list.html의 올려주신 코드에는 제가 정리해드린 코드가 안 보이는데요?

  • profile profile
    넵 제가...
    초보라서 코드를 여기 저기 삽입하고 있었는데...
    출력이 안 되더라고요...ㅠ
    잘 몰라서 해결 될까 싶은 심정에...
    소스코드 전체를 올려드렸는데...
    제가 생각이 짧았네요...
    죄송합니다.
    제가 차분히 적용해보고 안되면 댓글 다시 남기겠습니다.ㅠ
    여러가지로 민폐인 것 같아서 죄송하네요.....;
  • profile profile
    윤삼님 덕분에 해결했습니다.
    출력 예측 되는 곳에..
    111, 222, 333, 444 삽입하고 정상 출력되는 곳에 해당 코드 넣으니 정상 작동 됩니다.!!
    정말 정말 감사합니다~~!!!!!
  • profile profile
    좋은 방식으로 시도하셨네요!
    잘 구현된다니 다행입니다!!
  • profile profile
    정말 감사합니다.ㅠㅠ♥♥♥
  • profile
    코드 용량도 작고, 메모리도 적게 소비하네요. PHP 버전 요구사항도 낮네요.
    멋집니다.
  • profile profile

    네, 기진곰님이 추천해주신 라이브러리입니다ㅎㅎ
    다른 거 다 걷어내고 딱 필요한 기능에만 최적화되어 있더라구요.
    그에 비해 모듈 php는 발코딩입니다ㅋㅋㅋ

  • profile ?
    금발이라고 불러 드려야 겠군요..^^
  • ? profile
    저 위에 버튼 코드만 봐도 지저분하잖아요ㅋㅋㅋㅋ
  • profile profile
    ㅋㅋ 지저분한건 깨끗하게 될 가능성이라도 있죠 ㅎㅎㅎ
    윤삼님도 전공은 아니신 것 같은데,
    어떤 식으로 공부하셨나요? ㅎ
  • profile profile

    기존 자료 코드 뜯어보고, 엄청엄청 구글링하고, 타운에서 질의응답하고 그러면서 익혔습니다 ㅎㅎ

  • profile profile
    음... 똑똑한 사람만 되는걸로 ㅎㅎㅎ
  • profile profile
    몇날몇일이 걸리는 걸요ㅎㅎㅎ
  • profile profile
    윤삼님 열정과 끈기가 존경스럽네요 ^^
  • profile
    또 윤삼님의 작품이 나왔군요!!
    정말 좋은 기능인것같습니다.

    특정기간동안 작성된 글을 엑셀로 전환할 수 있으면 더 좋을 것같습니다.
    아직 설치하여 테스트는 못했지만 빨리 적용해보고 싶네요~
  • profile profile

    게시판의 일반적인 목록을 따르기 때문에 거기까진 아마 안 될 거예요.
    등록일 기준으로 목록 추출하는 것 정도겠네요.
    그러고보니 확장변수 다중검색과 호환이 되는지도 궁금해지는데, 이쪽이 더 땡깁니다ㅋㅋ

    확인은 못해봤데 아마 그것도 안 되겠지만요 하하...

  • ?
    회원목록 및 문서 엑셀저장 잘 됩니다.
    게시판 엑셀저장도 게시판에 붙혀서 사용해 봤는데 잘 작동합니다.

    회원목록과 게시판 게시글에서 1차로 조건 검색을 한 뒤 엑셀저장하기 하면 해당 조건에 맞는 것만 엑셀이 출력되어 더더욱 좋네요.

    좋은 프로그램 감사히 잘 사용하겠습니다.
    수고 많으셨습니다.
  • ? profile

    알아봐주셔서 감사합니다 :D
    그 부분에 신경을 많이 썼거든요ㅋㅋ

    회원 목록 팝업창에서는 관리자 화면의 회원목록 페이지에서 기본 사용하는 '상태'(가입/미인증/임시대기/거부), 가입일, 최근 로그인, 그룹 목록 등이 자동 체크가 안 되어 있더라구요.
    이런 식의 버그들을 정리해서 조만간 정식 버전으로 올려보겠습니다.


    감사합니다!

    덧. 라이브러리로 xlsxwriter라는 걸 쓰는데, 처리량과 속도가 좋은 듯합니다. 그 대신 다양한 기능 지원이 안 되거나 까다로운 게 흠이라면 흠이지만요ㅎㅎ

  • profile ?
    네..말씀하신 부분도 놀라웠습니다. 속도가 빨라요. ^^
  • profile
    우왕, 대박이네요.
    윤삼님 드디어 모듈로 ㅋㅋㅋㅋㅋ
    파이팅입니다~!!!
  • profile profile
    이게 잘 되고 있는 건지 얼떨떨합니다.
    처음부터 설계를 잘 해야 하는데, 중간중간 용도변경이 되고 하다보니 완전 막코딩 남발이에요ㅎㅎ
  • profile

    회원목록, 문서목록, 게시판목록 엑셀로 출력 잘 됩니다.

    다운받은 엑셀파일명이 깨져서 나오는 점

  • profile profile
    오, 확인 감사합니다.
    잘 다듬어서 정식 버전으로 올려야겠네요 :D
  • profile profile
    윤삼님 화이팅~
    한가지 욕심이라면 이미지 주소와 섬네일이 같이 출력되면 더 좋을 것 같습니다.
  • profile profile
    섬네일 이미지까지 출력하려면 좀 더 업그레이드된 라이브러리를 써야 하는데요.
    거기까지는 좀 여의치 않더라구요;;;
  • profile
    감사합니다 윤삼님!
  • profile profile
    시간 나실 때 테스트 부탁 드려요오~