Nodejs를 사용하여 Excel 파일을 작성하는 방법
저는 nodejs 프로그래머입니다.이제 Excel 파일 형식으로 저장하고자 하는 데이터 테이블을 가지고 있습니다.이걸 어떻게 해야 하죠?
노드 라이브러리를 몇 개 찾았습니다.하지만 대부분은 Excel Writer가 아닌 Excel Parsers입니다.Linux Server를 사용하고 있습니다.따라서 Linux에서 실행할 수 있는 것이 필요합니다.알고 있는 도움이 되는 라이브러리가 있으면 알려주세요.
또는 CSV 파일을 xls 파일로 변환하는 방법(프로그래밍 방식으로)이 있습니까?
Excel4node는 공식 사양으로 작성된 유지 보수된 기본 Excel 파일 생성자입니다.다른 답변에서 언급한 msexcel-builder보다 더 잘 유지되고 있습니다.
// Require library
var excel = require('excel4node');
// Create a new instance of a Workbook class
var workbook = new excel.Workbook();
// Add Worksheets to the workbook
var worksheet = workbook.addWorksheet('Sheet 1');
var worksheet2 = workbook.addWorksheet('Sheet 2');
// Create a reusable style
var style = workbook.createStyle({
font: {
color: '#FF0800',
size: 12
},
numberFormat: '$#,##0.00; ($#,##0.00); -'
});
// Set value of cell A1 to 100 as a number type styled with paramaters of style
worksheet.cell(1,1).number(100).style(style);
// Set value of cell B1 to 300 as a number type styled with paramaters of style
worksheet.cell(1,2).number(200).style(style);
// Set value of cell C1 to a formula styled with paramaters of style
worksheet.cell(1,3).formula('A1 + B1').style(style);
// Set value of cell A2 to 'string' styled with paramaters of style
worksheet.cell(2,1).string('string').style(style);
// Set value of cell A3 to true as a boolean type styled with paramaters of style but with an adjustment to the font size.
worksheet.cell(3,1).bool(true).style(style).style({font: {size: 14}});
workbook.write('Excel.xlsx');
나는 방금 간단한 출구를 알아냈다.이 방법은 유효합니다.
구분자로 Tabs를 사용하여 파일을 작성합니다(CSV와 비슷하지만 쉼표를 Tab으로 바꿉니다).확장자 .X로 저장합니다.LS. 파일은 Excel에서 열 수 있습니다.
도움이 되는 몇 가지 코드--
var fs = require('fs');
var writeStream = fs.createWriteStream("file.xls");
var header="Sl No"+"\t"+" Age"+"\t"+"Name"+"\n";
var row1 = "0"+"\t"+" 21"+"\t"+"Rob"+"\n";
var row2 = "1"+"\t"+" 22"+"\t"+"bob"+"\n";
writeStream.write(header);
writeStream.write(row1);
writeStream.write(row2);
writeStream.close();
그러면 파일이 XLS 파일 형식으로 생성됩니다.XLS가 아닌 XLSX를 시도하면 동작하지 않습니다.
msexcel-builder를 사용합니다.설치 방법:
npm install msexcel-builder
그 후, 다음과 같이 입력합니다.
// Create a new workbook file in current working-path
var workbook = excelbuilder.createWorkbook('./', 'sample.xlsx')
// Create a new worksheet with 10 columns and 12 rows
var sheet1 = workbook.createSheet('sheet1', 10, 12);
// Fill some data
sheet1.set(1, 1, 'I am title');
for (var i = 2; i < 5; i++)
sheet1.set(i, 1, 'test'+i);
// Save it
workbook.save(function(ok){
if (!ok)
workbook.cancel();
else
console.log('congratulations, your workbook created');
});
이 질문에는 몇 가지 답변이 있지만, 지금은 약간 시대에 뒤떨어져 있을 수 있습니다.
새로운 독자는 xlsx 또는 "sheetsJs" 패키지를 검토하는 것을 선호할 수 있습니다.이 패키지는 현재 이 사용 사례에서 가장 인기 있는 노드 패키지가 되었습니다.
현재 상위 답변에서는 excel4node를 권장하고 있습니다.이러한 노드는 매우 좋아 보이지만, 후자의 패키지는 전자의 패키지에 비해 유지 보수(인기)가 적은 것 같습니다.
xlsx를 사용하여 질문에 직접 답변:
const XLSX = require('xlsx');
/* create a new blank workbook */
const wb = XLSX.utils.book_new();
// Do stuff, write data
//
//
// write the workbook object to a file
XLSX.writeFile(workbook, 'out.xlsx');
CSV 및 XLSX 형식으로 동작합니다.
XLSX 스트림 읽기/쓰기에 최적.XLSX 다운로드를 Express 응답 객체에 스트리밍하기 위해 사용해 왔습니다.기본적으로 다음과 같습니다.
app.get('/some/route', function(req, res) {
res.writeHead(200, {
'Content-Disposition': 'attachment; filename="file.xlsx"',
'Transfer-Encoding': 'chunked',
'Content-Type': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
})
var workbook = new Excel.stream.xlsx.WorkbookWriter({ stream: res })
var worksheet = workbook.addWorksheet('some-worksheet')
worksheet.addRow(['foo', 'bar']).commit()
worksheet.commit()
workbook.commit()
}
스트리밍 기능이 훨씬 제한적이기 때문에 대용량 파일에 매우 적합하며, Excel4node보다 훨씬 뛰어난 퍼포먼스를 발휘합니다(20장의 400만 셀이 포함된 파일에 대해 거의 5분 후에 메모리 사용량이 증가하고 노드 프로세스가 "메모리 부족" 크래시 발생). (데이터를 생성 즉시 "commit()"할 수 없습니다.)
fs 패키지를 사용하여 JSON 데이터로 Excel/CSV 파일을 만들 수 있습니다.
1단계: JSON 데이터를 변수에 저장합니다(여기서는 jsn 변수).
2단계: 빈 문자열 변수(여기서는 데이터)를 만듭니다.
스텝 3: put을 추가하는 동안 문자열 변수 데이터에 jsn의 모든 속성을 추가합니다.'\t'
'\n'을 사용하다'\n'을 말합니다.
코드:
var fs = require('fs');
var jsn = [{
"name": "Nilesh",
"school": "RDTC",
"marks": "77"
},{
"name": "Sagar",
"school": "RC",
"marks": "99.99"
},{
"name": "Prashant",
"school": "Solapur",
"marks": "100"
}];
var data='';
for (var i = 0; i < jsn.length; i++) {
data=data+jsn[i].name+'\t'+jsn[i].school+'\t'+jsn[i].marks+'\n';
}
fs.appendFile('Filename.xls', data, (err) => {
if (err) throw err;
console.log('File created');
});
새 Office의 XLSX는 XML 및 기타 파일의 압축된 모음일 뿐입니다.생성 후 압축할 수 있습니다.
보너스: 스타일 등으로 매우 멋진 템플릿을 만들 수 있습니다.
- '즐겨찾는 스프레드시트 프로그램'에서 템플릿을 만듭니다.
- ODS 또는 XLSX로 저장
- 내용을 압축 해제합니다.
- 베이스와 필링으로 사용
content.xml
(오류)xl/worksheets/sheet1.xml
를 가지고 )을(를) - 서빙하기 전에 모두 지퍼로 잠급니다.
ODS Office 더 쉽다는 것을 Office( Office)에서 찾은 ).이치노content.xml
<table:table-row table:style-name="ro1">
<table:table-cell office:value-type="string" table:style-name="ce1">
<text:p>here be a1</text:p>
</table:table-cell>
<table:table-cell office:value-type="string" table:style-name="ce1">
<text:p>here is b1</text:p>
</table:table-cell>
<table:table-cell table:number-columns-repeated="16382"/>
</table:table-row>
또는 파일 저장 및 읽기를 피하기 위해 Express를 사용하여 @Jamaica Geek의 답변을 기반으로 합니다.
res.attachment('file.xls');
var header="Sl No"+"\t"+" Age"+"\t"+"Name"+"\n";
var row1 = [0,21,'BOB'].join('\t')
var row2 = [0,22,'bob'].join('\t');
var c = header + row1 + row2;
return res.send(c);
Excelj를 설치
npm i exceljs --save
excelj를 Import
var Excel = require('exceljs');
var workbook = new Excel.Workbook();
워크북 작성
var options = {
filename: __dirname+'/Reports/'+reportName,
useStyles: true,
useSharedStrings: true
};
var workbook = new Excel.stream.xlsx.WorkbookWriter(options);
워크시트 생성 후
var worksheet = workbook.addWorksheet('Rate Sheet',{properties:{tabColor:{argb:'FFC0000'}}});
worksheet.column 배열에서는 열 이름을 헤더에 전달하고 배열 키를 전달합니다.
worksheet.columns = [
{ header: 'column name', key: 'array key', width: 35},
{ header: 'column name', key: 'array key', width: 35},
{ header: 'column name', key: 'array key', width: 20},
];
for 사용 후 각 루프 행을 하나씩 exel 파일에 추가합니다.
array.forEach(function(row){ worksheet.addRow(row); })
또한 각 exel 행과 셀에서 루프를 수행할 수 있습니다.
worksheet.eachRow(function(row, rowNumber) {
console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));
});
row.eachCell(function(cell, colNumber) {
console.log('Cell ' + colNumber + ' = ' + cell.value);
});
Exceljs 라이브러리를 사용하여 기존 Excel 시트를 만들고 작성합니다.
자세한 설명은 이 튜토리얼을 참조하십시오.
첫 번째 매개 변수는 소스 파일입니다.
두 번째 매개 변수는 구분 기호입니다.
세 번째 파라미터는 결과 파일(*.xlsx)입니다.
주의: 노드 힙 사용을 늘리려면 node --max-old-space-size=4096 index.disples.disples.
const fs = require('fs');
var xl = require('excel4node');
const data = fs.readFileSync(process.argv[2], 'utf-8');
const lines = data.split(/\r?\n/);
const linesFromOne = [null].concat(lines);
var wb = new xl.Workbook();
var ws = wb.addWorksheet('Planilha 1');
for (let j=1;j<=linesFromOne.length-1;j++){
// Create a reusable style
var style = wb.createStyle({
font: {
color: '#050000',
size: 12,
},
});
pieces = linesFromOne[j].split(process.argv[3])
pieces.forEach((element, index) =>{
ws.cell(j, index+1).string(element)
.style(style);
});
}
wb.write(process.argv[4]);
언급URL : https://stackoverflow.com/questions/17450412/how-to-create-an-excel-file-with-nodejs
'IT' 카테고리의 다른 글
행 끝 유지 (0) | 2023.04.18 |
---|---|
위 행에서 현재 행으로 값 반환 (0) | 2023.04.18 |
"git reset --hard"를 통해 커밋되지 않은 변경 손실로부터 복구 (0) | 2023.04.18 |
VBA를 사용하여 Excel에서 워크시트 삭제 (0) | 2023.04.18 |
Retina 디스플레이 검출 (0) | 2023.04.18 |