Node.js에서 Excel ⇒ JSON, JSON ⇒ Excel 변환 할 샘플

할 일



1. Excel 파일을 JSON으로 가져옵니다.
2. JSON 편집 후 새 Excel 파일로 출력합니다.

환경



Node.js



· 설치
htps : // 그래서 js. 오 rg / 그럼 /
추천판(집필 시점:12.18.4)

· package.json 작성
작업용 디렉토리에서 다음을 실행한다.npm init -y (-y:모두 Yes로 디폴트 설정)

xlsx(npm package)



· 설치npm install xlsx
・공식
htps //w w. 음 pmjs. 코 m/파c카게/xlsx

구현



전제



・책의 대출 이력으로부터, 각 유저의 미반환 이력만을 추출하는 상황을 상정.
· 이력 데이터는 사용자 ID와 책 코드로 관리되므로 추출 데이터는 이름과 책 이름을 추가합니다.
· 데이터는 다음과 같다. (BookLendingHistory.xlsx)

<대출 이력>


<사용자 마스터>


<서적 마스터>


Excel 파일 불러오기



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

데이터 획득(JSON)



각 시트마다 JSON으로 가져옵니다.

index.js
let history, users, books
workbook.SheetNames.forEach(sheet =&gt; {
    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
let notReturned = history.filter(function(item) {
    return !("返却日時" in item) 
})

추출 결과


가공



사용자 이름과 책 이름을 더한 JSON을 만듭니다.

index.js
let notReturnedReport = []
notReturned.forEach(item =&gt; {
    item.ユーザ名 = getUserName(item)
    item.書籍名 = getBookName(item)
    notReturnedReport.push(item)
})

/**
 * JSON内のユーザIDに一致するユーザ名を返す
 * @param {*} item 
 */
function getUserName(item){
    let userName = ""
    users.some(function(user) {
        if(user.ユーザID == item.ユーザID) userName = user.ユーザ名
    })
    return userName
}

/**
 * JSON内の貸出書籍コードに一致する書籍名を返す
 * @param {*} item 
 */
function getBookName(item){
    let bookName = ""
    books.some(function(book) {
        if(book.書籍コード == item.貸出書籍コード) bookName = book.書籍名
    })
    return bookName
}

가공 결과


출력(Excel)



새 Excel 파일로 내보냅니다.

index.js
let exportBook = XLSX.utils.book_new()
let sexportSheet = 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

좋은 웹페이지 즐겨찾기