Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8916

【Node Express】DBのデータをExcellで出力。

$
0
0

使うもの

1)sheet.js
エクセルファイルの書き換え等ができる。
今回はオブジェクトをエクセルファイルに変換するのに使用した。
https://www.npmjs.com/package/xlsx

インストール:
npm install --save xlsx

2)moment.js
時間を扱うのに便利そうだったため。
https://www.npmjs.com/package/moment

インストール:
npm install --save moment

実装

main.js
constexpress=require('express')constapp=express()constmodel=require('モデルのパス')constPREFS=require('定数ファイル').PREFSconstxlsx=require('xlsx')constmoment=require('moment')app.get('/get_excel',async(req,res)=>{try{constselectData=['user_id','user_name','user_pref']constuserSearch=awaituser.getUsers(selectData)if(userSearch){varnewData=userSearch.map(function(record){record.ID=record.user_idrecord.ユーザー名=record.user_name//都道府県をINTで管理していると仮定して。record.都道府県=PREFS[record.user_pref]//数字は返しても仕方ないので消す。deleterecord.user_prefreturnrecord})//エクセルファイルを作成varnewWB=xlsx.utils.book_new()//エクセルシートを作成varnewWS=xlsx.utils.json_to_sheet(newData)//日付をつけた方が資料の管理がしやすそうなので、不要であればいらないです。constcreateTime=moment(Date.now()).format('YYYYMMDD')//ファイル名もといパスを指定constfileName='エクセルファイルの保存先のパス'+createTime+'_ユーザー情報.xlsx'//エクセルファイルにするxlsx.utils.book_append_sheet(newWB,newWS,'ユーザー情報')xlsx.writeFile(newWB,fileName)//エクセルのパスを返すreturnres.status(200).download(fileName)}else{returnres.status(500).json({message:'エラー発生!'})}}catch(err){returnres.status(500).json({message:'エラー発生!'})}})

モデル

model.js
constmysql=require('mysql2')constmodels={}//データベースの設定constconnection=mysql.createConnection({host:ホスト,user:ユーザー,password:パスワード,database:データベース名,port:ポート番号,multipleStatements:true//複数のコールを有効化})//モデルmodel.getUsers=(selectData)=>{returnnewPromise((resolve,reject)=>{connection.query('SELECT ?? FROM user',[selectData],(err,results)=>{if(err)returnreject(err)elsereturnresolve(results)})})}module.exports.model=model

Viewing all articles
Browse latest Browse all 8916

Trending Articles