[excel] Nodejs로 Excel 파일을 만드는 방법은 무엇입니까?

저는 nodejs 프로그래머입니다. 이제 Excel 파일 형식으로 저장하려는 데이터 테이블이 있습니다. 어떻게해야합니까?

몇 가지 Node 라이브러리를 찾았습니다. 하지만 대부분은 Excel Writer가 아닌 Excel Parser입니다. 저는 Linux Server를 사용하고 있습니다. 따라서 Linux에서 실행할 수있는 무언가가 필요합니다. 알고있는 유용한 라이브러리가 있으면 알려주세요.

아니면 CSV 파일을 xls 파일 (프로그래밍 방식)로 변환 할 수있는 방법이 있습니까?



답변

excel4node공식 사양에서 빌드 된 유지 관리되는 기본 Excel 파일 생성기 입니다. 유사하지만 다른 답변에서 언급 한 mxexcel-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');


답변

난 그냥 간단한 방법을 찾았어요. 이것은 작동합니다-

구분 기호로 탭을 사용하여 파일을 만듭니다 (CSV와 유사하지만 쉼표를 Tab으로 대체). 확장자 .XLS로 저장하십시오. 파일은 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');
});


답변

ExcelJS 를 확인해야합니다.

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 보다 훨씬 더 나은 성능을 발휘합니다.스트리밍 기능이 훨씬 제한적이기 때문에 합니다. 데이터가 생성 될 수있는 즉시 청크를 검색하기 위해 “commit ()”데이터를 허용하지 않습니다.)

this SO answer 도 참조하십시오 .


답변

새 Office의 XLSx는 XML 및 기타 파일의 압축 모음 일뿐입니다. 그래서 당신은 그것을 생성하고 그에 따라 압축 할 수 있습니다.

보너스 : 스타일 등으로 매우 멋진 템플릿을 만들 수 있습니다.

  1. ‘좋아하는 스프레드 시트 프로그램’에서 템플릿 만들기
  2. ODS 또는 XLSx로 저장
  3. 콘텐츠 압축 해제
  4. 그것을 기반으로 사용하고 데이터로 채우십시오 content.xml(또는 xl/worksheets/sheet1.xml)
  5. 서빙하기 전에 모두 압축하십시오

그러나 나는 ODS (openoffice)가 훨씬 더 접근하기 쉽다는 것을 알았습니다 (엑셀은 여전히 ​​그것을 열 수 있습니다), 여기에서 찾은 것입니다. 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>


답변

이 질문에는 여러 가지 답변이 있지만 이제는 약간 날짜가있을 수 있습니다.

새로운 독자는 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');


답변

fs 사용 패키지를 JSON 데이터에서 Excel / CSV 파일을 만들 수 있습니다.

1 단계 : JSON 데이터를 변수에 저장 (여기서는 jsn있음) 변수에 있음).

2 단계 : 빈 문자열 변수 생성 (여기 데이터 ).

3 단계 : jsn의 모든 속성 을 문자열 변수 데이터에 추가하고 put을 추가합니다.'\t' 하고 행을 완료 한 후 2 개 셀 사이에 ‘\ 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');
 });

산출