자료실

엑셀

2022.10.10 07:22
14,936
14
자료 유형 모듈
간단한 소개 엑셀 파일로 관리자 페이지에서 '회원목록'과 '문서목록'을 다운받을 수 있으며, 각 게시판에서도 '문서목록'을 다운받을 수 있습니다
설치 경로 ./modules/excel
코어 지원 범위 Rhymix 2.0
PHP 지원 범위 기타
자료 구분 공개 자료
라이선스 GPL v2
파일명버전날짜용량다운로드 수
excel.0.0.4.zip 0.0.4 2023.11.20 44.4KB 66
excel.0.0.3.zip 0.0.3 2023.09.28 45.1KB 23
excel.0.0.2.zip 0.0.2 2022.10.21 44.8KB 81
excel.0.0.1.zip 0.0.1 2022.10.10 44.1KB 50

0.0.4 업데이트 (2023.11.21 : 라이믹스 2.1.9에 대응)

 

1. 스킨 업데이트

- 스킨의 폼에서 사용하는 필터를 코어에서 신규 제공하고 있는 rx_ajax 클래스로 변경

- 스킨의 폼에서 전달하는 act값을 proc류의 함수명으로 명시화

- 스킨의 폼에서 전달하는 module값을 excel로 명시화

 

2. 모듈 업데이트

- procExcelGenerateMember 함수 : getMemberList() 메소드를 non-static 방식으로 가져옴

- _setExcelMemberData 함수 : $obj->id_item, $obj->target_item, $obj->main_info, $obj->extra_info 등의 변수가 배열로 들어오는 것에 대응

- _setExcelMemberData 함수 : 회원가입 미승인, 거부 상태를 명확하게 식별할 수 있도록 수정

- _setExcelDocumentData 함수 : $obj->config, $obj->document_info, $obj->document_setting, $obj->extra_info 등의 변수가 배열로 들어오는 것에 대응

 

 

0.0.3 업데이트 (2023.09.28)

- model에서 함수를 public static 처리

=> excel.model.php 수정

- 코어 2.1.3 이후에 대응하기 위해 회원목록의 다국어 처리 방식 수정 (똑띠님)

=> excel.controller.php 수정

 

 

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

윤삼 Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.

댓글 88

  • 2022.12.09 05:22 #1728058

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

  • 2022.12.10 00:04 #1728359
    게시판에서 엑셀 저장 팝업창 로드가 아직 잘 안 되시는 거죠?
    excel.view.php 파일 134행쯤에 debugPrint($this->getTemplatePath()); 넣고 결과 확인부탁드립니다~
  • 2022.12.10 01:14 #1728372
    아니요 잘되고있어요! 그냥 디버깅 해보고싶었어요ㅎㅎ
  • 2023.09.15 13:58 #1785935

    라이믹스 2.1.3 , 라이믹스 2.1.5 버전에서 오류가 발생해서 살펴보고 있습니다.
    회원정보 출력시 제대로 출력을 못시켜서. (낮은 버전에선 잘 작동했습니다.)

    excel.controller.php 파일 407라인정도에
    if ( !is_array($item->{$val}) )
    {
    $item->{$val} = [$item->{$val}];
    }
    $data_list[$i][] = implode(', ', Context::replaceUserLang($item->{$val}));

     

    이부분에서 오류가 나는듯 하네요.
    $data_list[$i][] = implode(', ', Context::replaceUserLang($item->{$val})); 이부분이 현재 먹히질 않네요.

    일단은 
    /*기본변수관련

    if ( !is_array($item->{$val}) )
     {
     $data_list[$i][] = $item->{$val};

     }else{

     $itemValue = $item->{$val};
    $data_list[$i][] = implode(', ', $itemValue);
     }

     

    /*확장변수관련

    if ( !is_array($extra_vars->{$name}) )
     {
     $data_list[$i][] = $extra_vars->{$name};

    }else{

     $extra_varsValue = $extra_vars->{$name};
    $data_list[$i][] = implode(', ', $extra_varsValue);

     }

    이런식으로 수정하니 출력이 되긴 하네요. 제대로 수정을 한건지 잘 모르겠네요.

     

     

  • 2023.09.18 04:23 #1786341
    맥락을 보니 Context::replaceUserLang이 안 먹는 건가 보군요ㅜ
    확인 가능한대로 점검해보겠습니다.
    감사합니다!
  • 2023.09.18 04:35 #1786351
    노고에 늘 감사드립니다. ^^
  • 2023.09.28 01:08 #1787765
    말씀하신 회원목록 부분 수정해서 다국어 출력 잘 되는 것을 확인했는데, 똑띠님도 연휴 끝나고 시간 나실 때 한번 봐주세요~
    추석 연휴 잘 보내세요!!
  • 2023.10.04 01:12 #1788649

    추석 연휴 잘 보내셨습니까? ^^ 수정자료 올려주신것 확인을 해보았습니다. 정상적으로 잘 작동을 하네요. 감사합니다.

  • 2023.09.26 01:35 #1787366
    윤삼님~ 잘 사용하고 있습니다.
    혹시 게시판 엑셀 업로드 모듈 제작 계획은 없으신지요?? 게시판에 엑셀파일을 업로드하면 db에 저장되어 게시판 목록에 뜨는 그런 소스요~~
    그누보드는 소스가 있던데 라이믹스는 소스가 아무리 찾아봐도 없네요..ㅜ.ㅜ
  • 2023.09.26 05:10 #1787385
    최신 코어에서 다운로드 기능에도 문제가 있는 것 같은데 아직 그 부분조차 패치를 못하고 있네요ㅜ
    업로드 기능은 아무래도 따로 제작 의뢰를 하시는 게 좋을 것 같습니다.
  • 2023.11.15 12:06 #1795352
    윤삼님~ 라이믹스 2.1.9 에서 다운로드가 안되는데요?? 오류 수정 안될까요??
  • 2023.11.15 12:16 #1795355
    문제는 인지하고 있는데 실마리를 찾지 못하고 있습니다. 시간이 좀 많이 걸릴 것 같아요.
  • 2023.11.20 15:30 #1795915
    2.1.9 버전에 대응하도록 수정해봤습니다. 테스트 부탁드려요~
  • 2023.11.20 16:24 #1795929
    라이믹스 2.1.9 에서 테스트 완료했습니다.
    회원목록 및 게시판에서 엑셀로 다운로드 잘 동작합니다.
    감사합니다. 윤삼님 짱~
  • 2023.11.20 20:52 #1795934
    확인 감사드려요!!
  • 2023.11.21 00:58 #1795974

    두번 추천했다가 세번 추천 했습니다.

  • 2023.11.21 02:52 #1795987
    ??? 그게 가능해요? 😆 ㅋㅋㅋㅋ
  • 2023.11.21 05:51 #1796011
    음.. 한번은 추천, 두번은 추천취소, 세번은 추천이겠죠? ㅋㅋㅋㅋㅋㅋ
    윤삼님 늘 수고 많으세요 ^^
  • 2023.11.21 05:55 #1796018
    아하 그런 수가 있었군요. 창조경제 같은 느낌이에요ㅋㅋㅋㅋ
  • 2023.11.22 06:12 #1796142
    윤삼님~~ 0.0.4 버전 사용해보니 파일 저장 버튼을 누르면 아래와 같은 오류가 뜨는데요.
    라이믹스 2.1.9 디벨롭 버전, php 8.2.4 버전 입니다.

    Warning: Undefined array key "HTTP_REFERER" in D:\xampp\htdocs\modules\excel\libs\xlsxwriter.downloader.php on line 3
  • 2023.11.22 07:04 #1796145
    혹시 엑셀 모듈 이전버전에서는 잘 사용 중이었는데 이번 버전부터 오류가 난 것인가요?
  • 2023.11.22 07:12 #1796148
    라이믹스 2.1.2 버전에서 excel 0.0.3 버전 잘 사용중이었습니다.
    라이믹스 2.1.9 디벨롭 버전으로 바뀐 후 부터 안되고 excel 0.0.4 버전은 오류가 나네요.
  • 2023.11.22 07:27 #1796151

    php버전 때문인가 했는데 그건 또 아닌가 보네요;;;
    상황 재연을 할 수 있는 여건이 안 되는데ㅜㅜ 어쨌든 할 수 있는 한 검토는 좀 해보겠습니다.

     

    덧. 회원 목록과 게시물 목록 모두 문제인 거죠?

  • 2023.11.22 07:51 #1796158
    네. 동일하게 안 됩니다.
    감사합니다.^^
  • 2023.11.22 08:40 #1796173
    $_SERVER를 통한 도메인 주소 확보가 차단된 것도 같은데요.
    modules\excel\libs\xlsxwriter.downloader.php
    이 파일의 2~6행을 삭제해보시겠어요?
  • 2023.11.22 22:46 #1796236

    삭제하면 오류는 없어지는데 그냥 빈 창만 뜹니다~~

    처음 창에 "흠.. 이 페이지에 연결할 수 없습니다." 라는 메세지가 나오고 바로 빈 창이 뜹니다.

     

  • 2023.11.23 01:02 #1796248

    코어 업데이트에 대한 대응 이슈만은 아닌 것 같습니다.
    $_SERVER['HTTP_REFERER'] 변수를 가져오지 못하는 것을 보면 별도로 헤더 설정이 되어 있다든가 알 수 없는 또 다른 문제가 있나 보네요.
    에러 로그에도 별다른 기록이 안 남나요?

  • 2023.11.23 03:09 #1796280
    $_SERVER['HTTP_REFERER'] 변수는 있을 수도 있고 없을 수도 있습니다. 예외적인 상황은 아니니, isset으로 확인하고 사용하셔야 합니다.
  • 2023.11.23 05:41 #1796308
    php 파일의 직접 실행을 막고자 HTTP_REFERER를 체크하는 코드가 있었는데, 이후 버전에서는 아예 세션값을 전달받아서 확인하는 방법으로 체크를 하려고 합니다.

    근데 위의 댓글에서처럼 HTTP_REFERER 확인하는 코드를 제거해도 오류가 있다는 걸 보면 뭔가 또 다른 문제가 있는 것 같아요. 🤔
  • 2023.11.24 00:26 #1796383

    isset으로 오류는 없앴는데. 다운로드 클릭시 "페이지를 연결할 수 없습니다." 라는 메세지가 나오네요~~
    Edge, Chrome 둘 다 같은 반응입니다. 뭔가 내부 환경에 따른 문제일 수도 있겠네요. 

  • 2023.11.27 00:16 #1796669
    네, 아무래도 최근 라이믹스 업데이트하셨을 즈음에 서버 설정 변경이 있었는지 등도 감안해보시면 좋을 것 같습니다.
    그게 아니라면 에러 코드를 확보하고 전달해주셔서 단서를 잡아가야 할 듯해요.
  • 2024.01.04 00:47 #1802027

    자료 감사합니다.

    현제 제공되는 기능에 추가로 게시물의 문서번호를 엑셀로 다운 받아서 엑셀에서 바로 게시물로 링크 이동을 하려고 시도 중 입니다.


    현재 제공되는 게시판 번호 부분을 문서번호에 해당 되는 코드로 무식하게 시도 중인데요 ^^;; 혹시 간단한 부분이면 팁 좀 받을 수 있을까요?

     

  • 2024.01.04 01:32 #1802042

    excel.controller.php 파일의 602행을 다음과 같이 수정해보세요.

     

    $data_list[$i][] = $no;

    =>

    $data_list[$i][] = '=HYPERLINK("'. getSiteUrl() . getUrl('', 'document_srl', $document->document_srl) .'", "'. $no .'")';

     

     

    + 덧. 아니면 제목 부분에 링크를 걸 수도 있습니다.

    excel.controller.php 파일의 604행에 다음의 코드를 끼워넣어보세요.
    그러면 엑셀 문서에서 게시물 제목 셀 클릭할 때 링크된 게시물 페이지로 이동하는 것 같습니다.

    else if ( $val === 'title' )
    {
    $data_list[$i][] = '=HYPERLINK("'. getSiteUrl() . getUrl('', 'document_srl', $document->document_srl) .'", "'. $document->getTitle() .'")';
    }

  • 2024.01.04 01:41 #1802051
    매번 도움 감사합니다. 알려주신 팁으로 적용 해 보겠습니다.^^
  • 2024.01.04 02:05 #1802072
    알려주신 팁을 적용해 보니 딱 원하던 대로 링크 작동이 잘되고 있습니다.
    다시 한번 감사 말씀 드립니다.
  • 2024.06.01 00:32 #1825595
    안녕하세요. 윤삼님
    공개해주신 엑셀 다운로드 모듈을 정상사용 중에 라이믹스 최신 버젼 ( 2.1.15 )에서 에러가 발생하는 문제로 질문글 ( https://xetown.com/questions/1825557 )을 올렸는데요.

    한가지 궁금한 부분이 윤삼님의 미리보기 ( https://dev.aporia.blog/board_fKje46 ) 게시판에서는 엑셀 다운로드 기능이 정상 작동하는데 혹시 라이믹스 버젼이 최신 ( 2.1.15 ) 버젼이신가요?
  • 2024.06.01 01:23 #1825598
    네, 2.1.15 버전을 깔아놓은 상태이긴 합니다.
    제 사이트에서는 기능이 왜 작동하고 마트몬님 사이트에서는 왜 안 되는지는 저도 잘 모르겠어요.
    다른 점이 있다면, php 8.0에 맞춰 자료를 일부 수정한 게 있는데 그게 주효했는지도 모르겠습니다.
    보완 작업을 마무리해야 하는데 시간이 없다보니 조금 했다가 손 놓고 나중에 까먹어버려서 처음부터 다시 뜯어보고 이러기를 몇 개월째네요ㅠㅠ
  • 2024.06.01 01:43 #1825612
    제 사양이 좀 낮기도 한 부분 ( php 7.3 ) 이 문제의 원인이 된게 아닌가 싶기도 합니다. 번거롭게 해드려서 죄송합니다. ^^;;

    코어를 수정하는 부분이긴 하지만 기진곰님의 조언대로 하니 문제가 해결되었습니다.

    board.model.php 65줄에서
    $module_srl을 intval($module_srl)로 바꿔 보세요.
    엑셀 모듈에서 null을 넘기고 있나 봅니다.