XLSX

Younghwan Cha·2023년 4월 9일
0
  • workbook
    하나의 파일
  • worksheet
    workbook 안에 존재하는 여러개의 sheet 들
# workbook 생성
const workbook = XLSX.utils.book_new();

# worksheet 에 추가할 데이터 생성
const worksheet = XLSX.utils.json_to_sheet(data);

# workbook 에 testName 이라는 worksheet 생성
workbook.SheetNames.push('testName');

# testName 이라는 worksheet 에 데이터 할당
workbook.Sheets['testName'] = worksheet;

# workbook 을 특정 경로에 파일로 생성
XLSX.writeFile(workbook, 'route');
  async uploadKbExcelToS3() {
    return new Promise((resolve, reject) => {
      const source = fs.createReadStream(
        path.resolve(__dirname, '../../uploads/test.xlsx'),
      );
      const destination = fs.createWriteStream(
        path.resolve(__dirname, '../../uploads/test_final.xlsx'),
      );

      source.pipe(destination);

      destination.on('finish', async () => {
        try {
          const workbook = new ExcelJS.Workbook();
          await workbook.xlsx.readFile(
            path.resolve(__dirname, '../../uploads/test_final.xlsx'),
          );
          const worksheet = workbook.getWorksheet(1);
			
          // 전체 row 에 작업
          worksheet.eachRow({ includeEmpty: false }, (row) => {
            row.eachCell({ includeEmpty: false }, (cell: any) => {
              cell.fill / cell.border / cell.font 값과 같은 값 작업
            });
          });

          // 개별 row 에 작업
          const cellF3 = worksheet.getCell('F3');
          const originalStyleF3 = { ...cellF3.style };
          cellF3.value = ...
          cellF3.style = ...
          
          const buffer = await workbook.xlsx.writeBuffer();

          await S3UploadExcel();
          resolve('File updated successfully');
        } catch (error) {
          reject(error);
        }
      });
      destination.on('error', (error) => {
        reject(error);
      });
    });
  }
profile
개발 기록

0개의 댓글