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

Node.jsでExcel⇒JSON、JSON⇒Excel変換するサンプル

$
0
0

やること

1.ExcelファイルをJSONで取得。
2.JSONの編集後、新しいExcelファイルに出力する。

環境

Node.js

・インストール
 https://nodejs.org/ja/
 推奨版(執筆時点:12.18.4)

・package.jsonの作成
 作業用ディレクトリで以下を実行する。
 node init -y(-y:全てYesでデフォルト設定)

xlsx(npm package)

・インストール
 npm install xlsx

・公式
 https://www.npmjs.com/package/xlsx

実装

前提

・本の貸出履歴から、各ユーザの未返却履歴のみを抽出する状況を想定。
・履歴データはユーザIDと書籍コードで管理されているため、抽出データは氏名と書籍名を追加する。
・データは以下とする。(BookLendingHistory.xlsx)

<貸出履歴>

<ユーザマスタ>

<書籍マスタ>

Excelファイルの読込

index.js
letXLSX=require('xlsx')letworkbook=XLSX.readFile('BookLendingHistory.xlsx',{cellDates:true})// cellDates(日付セルの保持形式を指定)// false:数値(シリアル値)[default]// true :日付フォーマット

データ取得(JSON)

シート毎にJSONで取得します。

index.js
lethistory,users,booksworkbook.SheetNames.forEach(sheet=>{if("history"==sheet)history=XLSX.utils.sheet_to_json(workbook.Sheets[sheet])if("users"==sheet)users=XLSX.utils.sheet_to_json(workbook.Sheets[sheet])if("books"==sheet)books=XLSX.utils.sheet_to_json(workbook.Sheets[sheet])})

history(貸出履歴)
※データが無いセルのJSONプロパティは取得されません。(返却日時)

users(ユーザマスタ)

books(書籍マスタ)

抽出

返却日時が無い履歴を抽出します。

index.js
letnotReturned=history.filter(function(item){return!("返却日時"initem)})

抽出結果

加工

ユーザ名と書籍名を加えたJSONを作成します。

index.js
letnotReturnedReport=[]notReturned.forEach(item=>{item.ユーザ名=getUserName(item)item.書籍名=getBookName(item)notReturnedReport.push(item)})/**
 * JSON内のユーザIDに一致するユーザ名を返す
 * @param {*} item 
 */functiongetUserName(item){letuserName=""users.some(function(user){if(user.ユーザID==item.ユーザID)userName=user.ユーザ名})returnuserName}/**
 * JSON内の貸出書籍コードに一致する書籍名を返す
 * @param {*} item 
 */functiongetBookName(item){letbookName=""books.some(function(book){if(book.書籍コード==item.貸出書籍コード)bookName=book.書籍名})returnbookName}

加工結果

出力(Excel)

新しいExcelファイルに書き出します。

index.js
letexportBook=XLSX.utils.book_new()letsexportSheet=XLSX.utils.json_to_sheet(notReturnedReport)XLSX.utils.book_append_sheet(exportBook,sexportSheet,"sheetName")XLSX.writeFile(exportBook,"NotReturnedReport.xlsx")

出力されたExcelファイル

Github

Sample of Excel to JSON or JSON to Excel


Viewing all articles
Browse latest Browse all 9360

Trending Articles