node.js를 사용하여 Excel 파일을 읽는 중
좋아요, 그럼 저는FileUploader
각도에서 내 파일을 업로드하는 모듈REST API
:
var uploader = $scope.uploader = new FileUploader({
url: api.getUrl('uploadCompetence',null)
});
이것은 다음과 같이 전송됩니다.POST
기능:
router.route('/api/uploadCompetence')
.post(function (req, res) {
// This is where i want to read the file
var competence = Competence.build(req.body.location);
competence.add(function (success) {
res.json({message: 'quote created!'});
},
function (err) {
res.status(err).send(err);
});
})
이제 내 목표는 그 책을 읽는 것이다.excel
각 행을 데이터베이스에 추가합니다.
하지만 내가 어떻게 그 파일을 읽을 수 있는지 잘 모르겠다.Node.js
서버를 디버깅하고 파일을 찾을 수 없었지만 API가 호출되고 있습니다.Angular
어플
누가 나를 올바른 방향으로 밀어줄 수 있나요?:)
Excel 파일(.xlsx)의 해석을 실행하는 라이브러리가 몇 개 있습니다.흥미롭고 살펴볼 가치가 있는 두 가지 프로젝트를 나열하겠습니다.
노드 xlsx
Excel 파서 및 빌더이것은 Office Open XML 사양의 순수 Javascript 구현인 인기 프로젝트 JS-XLSX의 일종의 래퍼입니다.
파일 구문 분석 예제
var xlsx = require('node-xlsx');
var obj = xlsx.parse(__dirname + '/myFile.xlsx'); // parses a file
var obj = xlsx.parse(fs.readFileSync(__dirname + '/myFile.xlsx')); // parses a buffer
Excel JS
XLSX 및 JSON에 스프레드시트 데이터 및 스타일을 읽고, 조작하고, 쓸 수 있습니다.현재 진행 중인 프로젝트입니다.작성 시점의 최신 커밋은 9시간 전입니다.직접 테스트해 본 적은 없지만 API는 매우 광범위해 보입니다.
코드 예:
// read from a file
var workbook = new Excel.Workbook();
workbook.xlsx.readFile(filename)
.then(function() {
// use workbook
});
// pipe from stream
var workbook = new Excel.Workbook();
stream.pipe(workbook.xlsx.createInputStream());
js-xlsx라는 노드 모듈을 사용할 수도 있습니다.
1) 모듈 설치npm install xlsx
2) Import 모듈 + 코드 스니펫
var XLSX = require('xlsx')
var workbook = XLSX.readFile('Master.xlsx');
var sheet_name_list = workbook.SheetNames;
var xlData = XLSX.utils.sheet_to_json(workbook.Sheets[sheet_name_list[0]]);
console.log(xlData);
excelj를 설치하고 다음 코드를 사용합니다.
var Excel = require('exceljs');
var wb = new Excel.Workbook();
var path = require('path');
var filePath = path.resolve(__dirname,'sample.xlsx');
wb.xlsx.readFile(filePath).then(function(){
var sh = wb.getWorksheet("Sheet1");
sh.getRow(1).getCell(2).value = 32;
wb.xlsx.writeFile("sample2.xlsx");
console.log("Row-3 | Cell-2 - "+sh.getRow(3).getCell(2).value);
console.log(sh.rowCount);
//Get all the rows data [1st and 2nd column]
for (i = 1; i <= sh.rowCount; i++) {
console.log(sh.getRow(i).getCell(1).value);
console.log(sh.getRow(i).getCell(2).value);
}
});
read-excel-file npm 을 사용할 수 있습니다.
여기서 XLSX를 JSON 형식으로 변환하는 JSON Schema를 지정할 수 있습니다.
const readXlsxFile = require('read-excel-file/node');
const schema = {
'Segment': {
prop: 'Segment',
type: String
},
'Country': {
prop: 'Country',
type: String
},
'Product': {
prop: 'Product',
type: String
}
}
readXlsxFile('sample.xlsx', { schema }).then(({ rows, errors }) => {
console.log(rows);
});
편리한 링크
https://ciphertrick.com/read-excel-files-convert-json-node-js/
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var multer = require('multer');
var xlstojson = require("xls-to-json-lc");
var xlsxtojson = require("xlsx-to-json-lc");
app.use(bodyParser.json());
var storage = multer.diskStorage({ //multers disk storage settings
destination: function (req, file, cb) {
cb(null, './uploads/')
},
filename: function (req, file, cb) {
var datetimestamp = Date.now();
cb(null, file.fieldname + '-' + datetimestamp + '.' + file.originalname.split('.')[file.originalname.split('.').length -1])
}
});
var upload = multer({ //multer settings
storage: storage,
fileFilter : function(req, file, callback) { //file filter
if (['xls', 'xlsx'].indexOf(file.originalname.split('.')[file.originalname.split('.').length-1]) === -1) {
return callback(new Error('Wrong extension type'));
}
callback(null, true);
}
}).single('file');
/** API path that will upload the files */
app.post('/upload', function(req, res) {
var exceltojson;
upload(req,res,function(err){
if(err){
res.json({error_code:1,err_desc:err});
return;
}
/** Multer gives us file info in req.file object */
if(!req.file){
res.json({error_code:1,err_desc:"No file passed"});
return;
}
/** Check the extension of the incoming file and
* use the appropriate module
*/
if(req.file.originalname.split('.')[req.file.originalname.split('.').length-1] === 'xlsx'){
exceltojson = xlsxtojson;
} else {
exceltojson = xlstojson;
}
try {
exceltojson({
input: req.file.path,
output: null, //since we don't need output.json
lowerCaseHeaders:true
}, function(err,result){
if(err) {
return res.json({error_code:1,err_desc:err, data: null});
}
res.json({error_code:0,err_desc:null, data: result});
});
} catch (e){
res.json({error_code:1,err_desc:"Corupted excel file"});
}
})
});
app.get('/',function(req,res){
res.sendFile(__dirname + "/index.html");
});
app.listen('3000', function(){
console.log('running on 3000...');
});
'spread_sheet' 노드 모듈을 설치합니다. 로컬 스프레드시트에서 행을 추가하고 가져옵니다.
언급URL : https://stackoverflow.com/questions/28860728/reading-excel-file-using-node-js
'programing' 카테고리의 다른 글
엔드 투 엔드 테스트에 프로젝터 또는 카르마를 사용해야 합니까? (0) | 2023.02.28 |
---|---|
AuthorizationRequest를 대체한 후 HttpSession이 null입니다. (0) | 2023.02.28 |
로컬 워드프레스 설치에서는 홈 페이지만 표시되며 다른 모든 페이지는 찾을 수 없습니다. (0) | 2023.02.28 |
오류 워드프레스에 foreign_key_press =를 설정합니다. (0) | 2023.02.28 |
Angular 4에서 클릭 한 번으로 요소까지 스크롤 (0) | 2023.02.28 |