Excel 파일에서 JavaScript 개체를 만드는 방법

8317 단어 nodenpmjavascript
당신이 나와 같다면 가끔 엑셀 파일을 사용하여 특정 데이터를 추적하는 것을 좋아할 것입니다. 결국 이것은 숫자를 추적하고 해당 숫자에 추가하고 조작할 수 있는 시각적 인터페이스를 갖는 꽤 보편적인 표준입니다. Excel 파일에서 데이터를 읽을 수 있는 단일 npm 명령으로 설치할 수 있는 도구가 있다는 사실에 놀랄 수도 있습니다. 이 블로그에서는 이 작업을 수행하는 방법과 개체를 만들고 해당 개체를 SQL 데이터베이스에 삽입하는 방법을 보여줍니다.

이것이 유용할 수 있는 많은 이유가 있습니다. 예를 들어 교사가 학생의 성적을 Excel 파일에 저장하고 자동으로 JS 앱으로 가져오고 싶다고 가정합니다. 다음과 같은 스프레드시트가 있을 수 있습니다.



시작하려면 이 명령을 터미널에 입력하십시오(Node도 설치해야 합니다. 저는 VS 코드를 사용하고 있습니다).

npm install read-excel-file


이제 JS 파일에서 이 require 문을 맨 위에 추가하기만 하면 됩니다.

const xlsxFile = require('read-excel-file/node');

그리고 이것이 전체 설정입니다! xlsxFile 함수는 Excel 파일의 경로를 문자열로 나타내는 단일 인수를 사용합니다. 파일 경로는 xlsxFile가 "필수"인 JS 파일에 상대적입니다. 따라서 'ExcelFile.xlsx'라는 Excel 파일이 있고 동일한 폴더에 있는 경우 경로는 './ExcelFile.xlsx'와 같습니다.
xlsxFile 함수를 성공적으로 호출하면 Excel 파일의 모든 행 배열이 포함된 약속이 반환됩니다. 이러한 각 행은 각 셀의 값을 포함하는 배열이기도 합니다. 따라서 모든 것을 하나로 모으려면 다음을 수행하십시오.

const xlsxFile = require('read-excel-file/node');

xlsxFile('./ExcelFile.xlsx')
  .then((rows) => {
    rows.forEach((row) => {
      row.forEach((cell) => {
        console.log(cell);
      });
    });
  });

위 함수는 콘솔의 모든 단일 셀을 왼쪽에서 오른쪽 위에서 아래로 표시합니다. 이제 해당 데이터를 보다 유용한 것으로 조작하려면 다음을 수행하십시오.

xlsxFile('./ExcelFile.xlsx')
  .then((rows) => {
    const columnNames = rows.shift(); // Separate first row with column names
    const objs = rows.map((row) => { // Map the rest of the rows into objects
      const obj = {}; // Create object literal for current row
      row.forEach((cell, i) => {
        obj[columnNames[i]] = cell; // Use index from current cell to get column name, add current cell to new object
      });
      return obj;
      console.log(objs); // Display the array of objects on the console
    });
  });

이제 각 행은 첫 번째 행을 키 이름으로 사용하여 JavaScript 객체로 변환되었으며 이후의 모든 행은 셀의 키 값과 열 상단에 이름의 키 이름이 있는 객체를 생성하는 데 사용됩니다. 기본적으로 다음과 같습니다. Excel-to-JavaScript 생성자 함수.

마지막으로 Sequelize와 같은 ORM을 사용하여 데이터베이스에 삽입하려는 경우:

    xlsxFile('./ExcelFile.xlsx')
      .then(async (rows) => {
        const columnNames = rows.shift();
        const promises = rows.map((row) => { // Map the rows array into an array of promises that each create an entry in the DB
          const obj = {};
          row.forEach((cell, i) => {
            obj[columnNames[i]] = cell;
          });
          return Grade.create(obj); // 'Grade' is a hypothetical Sequelize model where the grades can be saved
        });
        await Promise.all(promises); // Use Promise.all to execute all promises
      });

그리고 튜토리얼입니다! 개발자가 명시적으로 언급하지는 않았지만 가져올 수 있는 .xlsx 파일의 크기에 대한 제한이 있다는 점에 유의해야 합니다. 이것은 Excel과 JavaScript 데이터 사이를 오가며 데이터를 처리하는 절대적으로 가장 실용적인 방법은 아닐 수 있지만 소규모 프로젝트에 확실히 유용할 수 있으며 이전 데이터 세트를 업데이트하고 가져와야 하는 경우 많은 시간을 절약할 수 있습니다. JavaScript 프로젝트용입니다.
이 앱과 해당 개발자에 대한 자세한 내용은 GitHubhttps://gitlab.com/catamphetamine/read-excel-file에서 확인할 수 있습니다.

좋은 웹페이지 즐겨찾기