자유게시판

엑셀 (다운로드) 모듈 만들어보기

2022.10.02 16:18
3,285
2

아무리 주말이라지만 24시간이나 새 글이 없다니요.

제가 다이아몬드 메달을 받은 건 다 이유가 있었던 겁니다;;;

 

주말에 시간 내서 엑셀 파일을 다운로드 받을 수 있는 모듈을 만들어봤습니다.

모듈은 역시 어렵네요.

여러모로 신경 쓸 게 많아서 이 파일 저 파일 옮겨 다니면서 수정하고 새로 코딩하고 ... 정신이 없었어요.

그 와중에 기진곰님의 모듈생성기가 없었다면... 생각만 해도 소름입니다;;;

 

암튼 회원목록과 게시판 목록을 엑셀로 다운로드 받게 하는 게 목표인데요.

현재 스코어, 회원목록 엑셀 다운로드 작업이 끝났습니다.

 

모듈을 설치하면 관리자 모듈의 회원 목록 페이지에 아래와 같이 '엑셀 저장' 버튼이 삽입되구요.

0.png

 

클릭하면 다음과 같은 팝업창이 뜹니다.

여기서 엑셀 파일에 포함하고자 하는 항목들을 체크해서 다운로드 받으면 됩니다.

아, 그리고 관리자 모듈의 회원 목록 페이지를 기준으로 목록을 그대로 가져오게 되는데요.

이때 현재 페이지만 출력할 수도 있고, 전체 페이지를 출력할 수도 있습니다.

1.png

 

이후의 계획은 게시판 목록도 가져오는 건데요.

잘 될지 모르겠습니다.

일단 다른 점이 있다면, 관리자 페이지와 다르게 여러 스킨들이 있다보니 엑셀 팝업창을 띄울 버튼을 자동으로 삽입하기 어렵다는 게 가장 걸립니다.

그리고 현재까지 작업은 회원목록을 기준으로 한 것이어서, 게시판 목록까지 하나의 모듈에 담으려면 기존 코드들을 대거 수리해야 하는 일이 있을 것 같기도 하구요;;;

뭐, 그 외에 예기치 않은 돌발변수도 있겠지요.

 

암튼 10월 첫 주 알차게 보내시고, 다음에 또 소식 남기겠습니다!

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

댓글 25

  • 2022.10.02 17:42 #1712106
    역시 멋있는 윤삼님
    화이팅 ~ 응원합니다.
  • 2022.10.03 00:53 #1712124
    진짜 습작 수준이어서 라이믹스 공부하는 느낌으로 하고 있어요ㅎㅎ
  • 2022.10.02 22:57 #1712117
    와 다이아다! 다이아!!!
    (일시켜드릴 명분이 생겻다 얏호)
  • 2022.10.03 00:56 #1712133
    앗, 뭔가 함정이 있었던 것인가요 ㄷㄷㄷ
  • 2022.10.03 00:55 #1712128

    phpspreadsheet 이용하나요?

  • 2022.10.03 01:01 #1712137
    매우 민망하게도 js로 처리했습니다;;;
    phpspreadsheet 생각을 하긴 했는데 사이즈가 너무 큰 느낌이어서, 목록 데이터를 table 형태의 html로 렌더링해서 콜백함수로 넘기고, sheetJS라는 게 있길래 cdn으로 실행시켜서 html을 xlsx로 출력... 쿨럭..
  • 2022.10.03 01:04 #1712141
    phpspreadsheet 는 php 7.3 이상만 쓸수 있어서 어떻게 하셨나 궁금했습니다.
    sheetJs 는 php 버전에 상관없이 쓸수 있으니 좋네요 ㅎㅎ
  • 2022.10.03 01:10 #1712145
    그런 이슈를 봤던 것 같아요.
    근데 js로 처리하고, 그것도 cdn으로 실행시키니까 몹시 부끄럽습니다ㅋㅋㅋ
  • 2022.10.03 02:53 #1712159

    PHP 7.3 이상 지원하는 라이브러리가 꼭 필요하다면 그냥 PHP 7.3 이상에서만 돌아가는 모듈이라고 선언해 버리면 됩니다. 최대한 많은 사람에게 판매해야 하는 유료 자료가 아니라면 이 정도는 문제가 되지 않습니다.

    다만, phpspreadsheet는 데이터 양이 조금만 늘어나도 메모리 사용량이 말도 안 되게 폭증하기 때문에 전체 목록을 출력하는 데는 적합하지 않습니다. 서버단에서 엑셀 파일을 생성할 때는 XLSXWriter를 사용해 보세요.

  • 2022.10.03 03:33 #1712163
    Xlsxwriter 사용 해봐야겠네요 ㅎㅎ
  • 2022.10.03 04:10 #1712184
    오 저도 한번 참고해보겠습니다~
  • 2022.10.03 02:52 #1712155
    우와....................................................아........................
  • 2022.10.03 04:10 #1712188
    두 번째 '아....'는 뭡니까ㅋㅋㅋ
  • 2022.10.03 06:46 #1712197
    입이 안닫아져서 닫느라 힘들었네요.
  • 2022.10.03 07:06 #1712203
    엑셀 다운로드할 때 필요할 것 같은 기능 있으면 말씀해주세요. 아이디어💡 대환영입니다.
  • 2022.10.03 07:49 #1712207
    다운로드 할때 암호적용도 되나요? zip으로 압축하고 비밀번호 설정하면 좋겠네요.
  • 2022.10.03 07:59 #1712211
    으악, 저한테는 너무 어려운 퀘스트입니다ㅜㅜ
  • 2022.10.04 03:13 #1712280

    또 하나의 큰 획을 그으시네요. 향후 게시판은 게시판별로 엑셀을 저장하는 기능으로 해서 하나의 모듈에 담지 말고 분리하시는게 어떠실지. 항상 멋진 작품 감사합니다. 

  • 2022.10.04 03:52 #1712300
    각 게시판별로 설정 페이지의 추가 설정 탭 같은 곳에 노출이나 권한 설정을 두면 좋겠다는 말씀이신 거죠?
  • 2022.10.04 04:29 #1712304

    네..맞습니다. 아무래도 회원디비랑 같이 묶으면 개발 하실때도 복잡해지실듯 하고...
    저는 게시판 스킨에  기능 추가해서 사용하기는 하는데  대부분 확장변수로 특정값들을 입력 받을때 활용을 하는 형태네요.

     

    엑셀저장.png

    스킨별로 처리되긴 무리일듯 싶고, 관리자페이지나  게시판 설정에서 처리를 하시는 형태가 되게 하시는게 좋지 않을까 생각을 해봅니다.

     

     

     

  • 2022.10.04 05:30 #1712315
    버튼 삽입 자동화가 고민이었는데, 스킨별로 삽입 지점을 잡는 게 사실상 불가능해서요.
    말씀하신대로 모듈별로 엑셀 모듈 사용여부를 설정하고 스킨에서는 수동적으로 버튼을 삽입하는 방식이 좋을 것 같네요.
    좋은 말씀 감사합니다 :)
  • GG
    2022.10.21 00:01 #1715135
    요고 구현하실때 가장 고려되어야 하는것이 콘텐츠 내용물이 많을때 메모리 오버나면서 에러나지 않도록 하는게 아닐까 하는 생각을 해봅니다.
  • 2022.10.21 00:25 #1715144
    한계치를 테스트해보고, 몇 천 단위나 몇 만 단위로 끊어서 작동시키는 게 어떨까 생각해봤는데
    제 기술력으로는 ㅎㅎㅎ
    그렇게 하려면 서버에서 특별한 설정이 있어야 한다든가 해야 하나요?
  • GG
    2022.10.21 00:56 #1715152
    이건 기진곰님께 문의를 해보셔요 ㅋㅋ 저는 잘 몰라요.
  • 2022.10.21 02:11 #1715172

    PHPSpreadsheet 사용하면 메모리 초과로 뻗습니다. XLSXWriter는 괜찮아요. 이건 xls가 아닌 xlsx 포맷만 지원하는데, xlsx 포맷이 나온 지 15년이 넘었으니 이젠 상관없겠죠~