node.js에서 단순 데이터베이스로 Excel 파일 사용
node.js에서 단순 데이터베이스로 Excel 파일 사용
MySQL을 사용할수록 과장하지 않고 손쉽게 데이터베이스를 사용하고 싶은 경우, 간이 데이터베이스로서 Excel을 도입하는 것도 좋은 손이라고 생각합니다.
Excel이라면 일부러 SQL을 쓰지 않고 익숙한 UI로 데이터 갱신을 할 수 있으므로 간편한 이점이 있네요.
그래서 node.js에서 Excel 파일을 읽고 쓸 수있는 라이브러리를 찾았습니다.
가능하면 헤더 등은 색칠해 두고 싶기 때문에 서식 정보는 유지한 채로 저장하고 싶은 전제입니다.
SheetJS
고기능입니다만 Pro판이 아니면 서식 정보가 보존되지 않기 때문에 이번은 패스.
공식 페이지
xlsx-populate
xlsx-populate를 사용하면 서식 정보를 유지하면서 Excel 파일을 읽고 쓸 수 있습니다.
Github
설치 방법
npm install xlsx-populate
사용법
const XlsxPopulate = require('xlsx-populate')
XlsxPopulate.fromFileAsync("./Input.xlsx")
.then(book => {
const sheet1 = book.sheet("Sheet1")
sheet1.cell("A2").value(10)
sheet1.cell("B2").value(20)
sheet1.cell("C2").value(30)
book.toFileAsync("./Output.xlsx")
})
xlsx-populate-wrapper
xlsx-populate를 랩핑한 xlsx-populate-wrapper를 사용하면 더욱 사용하기 쉬워집니다. 이 방법이 가장 추천합니다.
Github
설치 방법
npm install xlsx-populate-wrapper
사용법
const xPopWrapper = require("xlsx-populate-wrapper")
const path = require("path")
const filePath = path.resolve('./sample_data.xlsx')
const workbook = new xPopWrapper(filePath)
workbook.init()
.then(wb => {
// シート名の一覧を取得
console.log(wb.getSheetNames())
// => ['Sheet1', 'Sheet2', 'Sheet3']
// シート名を指定してヘッダ一覧の取得
console.log(workbook.getHeadings('Sheet1'))
// => ['Title1', 'Title2', 'Title3']
// シート名を指定してJSONデータとして取得
const jsonData = workbook.getData('Sheet1')
console.log(jsonData)
/*
[
{
'Title1': '1',
'Title2': '2',
'Title3': '3',
},
{
'Title1': '5',
'Title2': '6',
'Title3': '7',
},
{
'Title1': '11',
'Title2': '12',
'Title3': '13',
}
]
*/
// データを書き換える
jsonData[0].Title3 ='a'
jsonData[1].Title3 ='b'
jsonData[2].Title3 ='c'
workbook.update('Sheet1', jsonData) // 更新
return workbook.commit() // ファイルに書き込み
})
.catch(error => {
throw error
})
다시 쓰기 전에 Excel 파일
실행 로그
다시 쓰기 후 Excel
Excel 데이터를 JSON 데이터로 취급 할 수 있으므로 jQuery와 underscore를 조합하면 where 검색이나 좁히기를 할 수 있으므로 꽤 사용할 수있는 노하우라고 생각합니다 ☺
엔지니어에게 도움이 되는 정보를 Twitter에서도 발신하고 있으므로 좋으면 Twitter도 팔로우를 잘 부탁드립니다!
트위터 링크는 여기
Reference
이 문제에 관하여(node.js에서 단순 데이터베이스로 Excel 파일 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/mr_t_free/items/91ee38807ae00220c6f2
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
npm install xlsx-populate
const XlsxPopulate = require('xlsx-populate')
XlsxPopulate.fromFileAsync("./Input.xlsx")
.then(book => {
const sheet1 = book.sheet("Sheet1")
sheet1.cell("A2").value(10)
sheet1.cell("B2").value(20)
sheet1.cell("C2").value(30)
book.toFileAsync("./Output.xlsx")
})
npm install xlsx-populate-wrapper
const xPopWrapper = require("xlsx-populate-wrapper")
const path = require("path")
const filePath = path.resolve('./sample_data.xlsx')
const workbook = new xPopWrapper(filePath)
workbook.init()
.then(wb => {
// シート名の一覧を取得
console.log(wb.getSheetNames())
// => ['Sheet1', 'Sheet2', 'Sheet3']
// シート名を指定してヘッダ一覧の取得
console.log(workbook.getHeadings('Sheet1'))
// => ['Title1', 'Title2', 'Title3']
// シート名を指定してJSONデータとして取得
const jsonData = workbook.getData('Sheet1')
console.log(jsonData)
/*
[
{
'Title1': '1',
'Title2': '2',
'Title3': '3',
},
{
'Title1': '5',
'Title2': '6',
'Title3': '7',
},
{
'Title1': '11',
'Title2': '12',
'Title3': '13',
}
]
*/
// データを書き換える
jsonData[0].Title3 ='a'
jsonData[1].Title3 ='b'
jsonData[2].Title3 ='c'
workbook.update('Sheet1', jsonData) // 更新
return workbook.commit() // ファイルに書き込み
})
.catch(error => {
throw error
})
Reference
이 문제에 관하여(node.js에서 단순 데이터베이스로 Excel 파일 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mr_t_free/items/91ee38807ae00220c6f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)