Showing
3 changed files
with
154 additions
and
1 deletions
... | @@ -417,6 +417,11 @@ | ... | @@ -417,6 +417,11 @@ |
417 | "ms": "2.0.0" | 417 | "ms": "2.0.0" |
418 | } | 418 | } |
419 | }, | 419 | }, |
420 | + "deepmerge": { | ||
421 | + "version": "3.2.0", | ||
422 | + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-3.2.0.tgz", | ||
423 | + "integrity": "sha512-6+LuZGU7QCNUnAJyX8cIrlzoEgggTM6B7mm+znKOX4t5ltluT9KLjN6g61ECMS0LTsLW7yDpNoxhix5FZcrIow==" | ||
424 | + }, | ||
420 | "delayed-stream": { | 425 | "delayed-stream": { |
421 | "version": "1.0.0", | 426 | "version": "1.0.0", |
422 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | 427 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
... | @@ -516,6 +521,36 @@ | ... | @@ -516,6 +521,36 @@ |
516 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", | 521 | "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", |
517 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" | 522 | "integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ=" |
518 | }, | 523 | }, |
524 | + "excel4node": { | ||
525 | + "version": "1.7.2", | ||
526 | + "resolved": "https://registry.npmjs.org/excel4node/-/excel4node-1.7.2.tgz", | ||
527 | + "integrity": "sha512-3XSsPSSbUeGloTRQMTmgf4aA1WDGa9fWQitOCGN/URG8NvwPjgVdbyG7FWKukqTdl5XBz9jv0vVBz3BBIo52tg==", | ||
528 | + "requires": { | ||
529 | + "deepmerge": "3.2.0", | ||
530 | + "image-size": "0.7.2", | ||
531 | + "jszip": "3.2.1", | ||
532 | + "lodash.get": "4.4.2", | ||
533 | + "lodash.isequal": "4.5.0", | ||
534 | + "lodash.isundefined": "3.0.1", | ||
535 | + "lodash.reduce": "4.6.0", | ||
536 | + "lodash.uniqueid": "4.0.1", | ||
537 | + "mime": "2.4.0", | ||
538 | + "uuid": "3.3.2", | ||
539 | + "xmlbuilder": "11.0.1" | ||
540 | + }, | ||
541 | + "dependencies": { | ||
542 | + "mime": { | ||
543 | + "version": "2.4.0", | ||
544 | + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.0.tgz", | ||
545 | + "integrity": "sha512-ikBcWwyqXQSHKtciCcctu9YfPbFYZ4+gbHEmE0Q8jzcTYQg5dHCr3g2wwAZjPoJfQVXZq6KXAjpXOTf5/cjT7w==" | ||
546 | + }, | ||
547 | + "xmlbuilder": { | ||
548 | + "version": "11.0.1", | ||
549 | + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", | ||
550 | + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" | ||
551 | + } | ||
552 | + } | ||
553 | + }, | ||
519 | "exit-on-epipe": { | 554 | "exit-on-epipe": { |
520 | "version": "1.0.1", | 555 | "version": "1.0.1", |
521 | "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", | 556 | "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", |
... | @@ -743,6 +778,16 @@ | ... | @@ -743,6 +778,16 @@ |
743 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", | 778 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", |
744 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" | 779 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" |
745 | }, | 780 | }, |
781 | + "image-size": { | ||
782 | + "version": "0.7.2", | ||
783 | + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.2.tgz", | ||
784 | + "integrity": "sha512-CBmVIFHyDyiWi1U24eNHl8SH0Iir2IgmEv1RwdRVZxWsEbSCvV5b/eXaYP8epOFv2dbw5uNBOrn1Nc5P5KvsUA==" | ||
785 | + }, | ||
786 | + "immediate": { | ||
787 | + "version": "3.0.6", | ||
788 | + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", | ||
789 | + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" | ||
790 | + }, | ||
746 | "inherits": { | 791 | "inherits": { |
747 | "version": "2.0.3", | 792 | "version": "2.0.3", |
748 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", | 793 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
... | @@ -851,11 +896,55 @@ | ... | @@ -851,11 +896,55 @@ |
851 | "promise": "^7.0.1" | 896 | "promise": "^7.0.1" |
852 | } | 897 | } |
853 | }, | 898 | }, |
899 | + "jszip": { | ||
900 | + "version": "3.2.1", | ||
901 | + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.2.1.tgz", | ||
902 | + "integrity": "sha512-iCMBbo4eE5rb1VCpm5qXOAaUiRKRUKiItn8ah2YQQx9qymmSAY98eyQfioChEYcVQLh0zxJ3wS4A0mh90AVPvw==", | ||
903 | + "requires": { | ||
904 | + "lie": "~3.3.0", | ||
905 | + "pako": "~1.0.2", | ||
906 | + "readable-stream": "~2.3.6", | ||
907 | + "set-immediate-shim": "~1.0.1" | ||
908 | + } | ||
909 | + }, | ||
910 | + "lie": { | ||
911 | + "version": "3.3.0", | ||
912 | + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", | ||
913 | + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", | ||
914 | + "requires": { | ||
915 | + "immediate": "~3.0.5" | ||
916 | + } | ||
917 | + }, | ||
854 | "lodash": { | 918 | "lodash": { |
855 | "version": "4.17.15", | 919 | "version": "4.17.15", |
856 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", | 920 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", |
857 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" | 921 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" |
858 | }, | 922 | }, |
923 | + "lodash.get": { | ||
924 | + "version": "4.4.2", | ||
925 | + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", | ||
926 | + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=" | ||
927 | + }, | ||
928 | + "lodash.isequal": { | ||
929 | + "version": "4.5.0", | ||
930 | + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", | ||
931 | + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=" | ||
932 | + }, | ||
933 | + "lodash.isundefined": { | ||
934 | + "version": "3.0.1", | ||
935 | + "resolved": "https://registry.npmjs.org/lodash.isundefined/-/lodash.isundefined-3.0.1.tgz", | ||
936 | + "integrity": "sha1-I+89lTVWUgOmbO/VuDD4SJEa+0g=" | ||
937 | + }, | ||
938 | + "lodash.reduce": { | ||
939 | + "version": "4.6.0", | ||
940 | + "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz", | ||
941 | + "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=" | ||
942 | + }, | ||
943 | + "lodash.uniqueid": { | ||
944 | + "version": "4.0.1", | ||
945 | + "resolved": "https://registry.npmjs.org/lodash.uniqueid/-/lodash.uniqueid-4.0.1.tgz", | ||
946 | + "integrity": "sha1-MmjyanyI5PSxdY1nknGBTjH6WyY=" | ||
947 | + }, | ||
859 | "media-typer": { | 948 | "media-typer": { |
860 | "version": "0.3.0", | 949 | "version": "0.3.0", |
861 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", | 950 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
... | @@ -986,6 +1075,11 @@ | ... | @@ -986,6 +1075,11 @@ |
986 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", | 1075 | "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", |
987 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" | 1076 | "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" |
988 | }, | 1077 | }, |
1078 | + "pako": { | ||
1079 | + "version": "1.0.11", | ||
1080 | + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", | ||
1081 | + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" | ||
1082 | + }, | ||
989 | "parseurl": { | 1083 | "parseurl": { |
990 | "version": "1.3.3", | 1084 | "version": "1.3.3", |
991 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", | 1085 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", |
... | @@ -1300,6 +1394,11 @@ | ... | @@ -1300,6 +1394,11 @@ |
1300 | "send": "0.16.2" | 1394 | "send": "0.16.2" |
1301 | } | 1395 | } |
1302 | }, | 1396 | }, |
1397 | + "set-immediate-shim": { | ||
1398 | + "version": "1.0.1", | ||
1399 | + "resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz", | ||
1400 | + "integrity": "sha1-SysbJ+uAip+NzEgaWOXlb1mfP2E=" | ||
1401 | + }, | ||
1303 | "setprototypeof": { | 1402 | "setprototypeof": { |
1304 | "version": "1.1.0", | 1403 | "version": "1.1.0", |
1305 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", | 1404 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", | ... | ... |
... | @@ -11,6 +11,7 @@ | ... | @@ -11,6 +11,7 @@ |
11 | "crypto-js": "^4.0.0", | 11 | "crypto-js": "^4.0.0", |
12 | "debug": "~2.6.9", | 12 | "debug": "~2.6.9", |
13 | "ejs": "^3.1.3", | 13 | "ejs": "^3.1.3", |
14 | + "excel4node": "^1.7.2", | ||
14 | "express": "~4.16.1", | 15 | "express": "~4.16.1", |
15 | "express-session": "^1.17.1", | 16 | "express-session": "^1.17.1", |
16 | "formidable": "^1.2.2", | 17 | "formidable": "^1.2.2", | ... | ... |
... | @@ -3,6 +3,7 @@ var router = express.Router(); | ... | @@ -3,6 +3,7 @@ var router = express.Router(); |
3 | const XLSX = require('xlsx'); | 3 | const XLSX = require('xlsx'); |
4 | var multer = require('multer'); | 4 | var multer = require('multer'); |
5 | var fs = require('fs'); | 5 | var fs = require('fs'); |
6 | +var xl = require('excel4node'); | ||
6 | // var pool = require('./../routes/modules/database'); | 7 | // var pool = require('./../routes/modules/database'); |
7 | 8 | ||
8 | //파일 저장위치와 파일이름 설정 | 9 | //파일 저장위치와 파일이름 설정 |
... | @@ -88,7 +89,59 @@ contact_download : 연락처 파일 다운로드 모듈 | ... | @@ -88,7 +89,59 @@ contact_download : 연락처 파일 다운로드 모듈 |
88 | input : 사용자의 연락처 다운로드 요청 | 89 | input : 사용자의 연락처 다운로드 요청 |
89 | output : 연락처 다운로드 성공 여부 및 csv, xlsx 파일 | 90 | output : 연락처 다운로드 성공 여부 및 csv, xlsx 파일 |
90 | */ | 91 | */ |
91 | -router.get('/contact_download', function(req, res, next) { | 92 | +router.post('/contact_download', function(req, res, next) { |
93 | + | ||
94 | + var filename = 'public/upload/contactdownload.xlsx'; | ||
95 | + fs.exists(filename, function (exists) { | ||
96 | + console.log(exists); | ||
97 | + if(exists == true) | ||
98 | + { | ||
99 | + fs.unlink(filename, function (err) { | ||
100 | + if (err) throw err; | ||
101 | + console.log('file deleted'); | ||
102 | + }); | ||
103 | + } | ||
104 | + }); | ||
105 | + | ||
106 | + // Create a new instance of a Workbook class | ||
107 | + var wb = new xl.Workbook(); | ||
108 | + | ||
109 | + // Add Worksheets to the workbook | ||
110 | + var ws = wb.addWorksheet('Sheet 1'); | ||
111 | + | ||
112 | + ws.cell(1, 1) | ||
113 | + .string('name'); | ||
114 | + ws.cell(1, 2) | ||
115 | + .string('phone'); | ||
116 | + ws.cell(1, 3) | ||
117 | + .string('email'); | ||
118 | + ws.cell(1, 4) | ||
119 | + .string('added_date'); | ||
120 | + | ||
121 | + var user_id = req.query.id; | ||
122 | + var sqlquery = "SELECT * FROM contact WHERE user_id = ?"; | ||
123 | + connection.query(sqlquery, [user_id], function (err, rows) { | ||
124 | + if (err) { | ||
125 | + console.log("download contact failed"); | ||
126 | + throw err; | ||
127 | + } else { | ||
128 | + if(rows.length != 0) | ||
129 | + { | ||
130 | + for(var i=0;i<rows.length;i++) | ||
131 | + { | ||
132 | + ws.cell(i+2, 1).string(rows[i].name); | ||
133 | + ws.cell(i+2, 2).string(rows[i].phone); | ||
134 | + ws.cell(i+2, 3).string(rows[i].email); | ||
135 | + ws.cell(i+2, 4).string(rows[i].added_date); | ||
136 | + } | ||
137 | + } | ||
138 | + wb.write('public/upload/contactdownload.xlsx'); | ||
139 | + var file = __dirname + '/public/upload/contactdownload.xlsx'; | ||
140 | + // console.log(file); | ||
141 | + res.download(file); | ||
142 | + } | ||
143 | + | ||
144 | + }); | ||
92 | }); | 145 | }); |
93 | 146 | ||
94 | /* | 147 | /* | ... | ... |
-
Please register or login to post a comment