728x90
반응형

1. 엑셀 파일 생성
- 고객 정보를 엑셀 파일을 생성하는 예제
const xlsx = require('xlsx');
const workbook = xlsx.utils.book_new(); // 가상의 엑셀 파일 생성
const customers = [
{A: '고객명', B: '이메일', C: '연락처'}, // 첫 번째 행 - 컬럼명에 해당하는 데이터
{A: '아무개1', B: 'kim@gmail.com', C: '010-00000-00000'},
{A: '테스트', B: 'test@gmail.com', C: '010-1111-1111'},
{A: '홍길동', B: 'hhhh@gmail.com', C: '010-2222-22222'},
{A: '테스트2', B: 'ttttt@gmail.com', C: '010-3333-3333'},
{A: '테스트3', B: 'test123@gmail.com', C: '010-4444-4444'},
];
// json_to_sheet 방식으로 데이터 생성
const firstSheet = xlsx.utils.json_to_sheet(customers, {header :["A", "B", "C"],
skipHeader: true}); // skipHeader가 false이면 엑셀 시트의 첫 번째 행에 header에 해당하는 A, B, C 가 삽입
// 칼럼 넓이 지정
firstSheet["!cols"] = [
{ wpx : 120 }, // A열
{ wpx : 250 }, // B열
{ wpx : 200 }, // C열
];
// 첫 번째 시트에 작성한 데이터를 넣는다.
xlsx.utils.book_append_sheet(workbook, firstSheet, "Customers");
// 엑셀 파일을 생성하고 저장
xlsx.writeFile(workbook, "./xlsx/customers.xlsx");
1) XLSX.utils.book_new() 함수를 사용해서 가상의 workbook 생성
2) 엑셀 시트에 기록할 데이터 생성
3) 엑셀 시트 생성(json_to_sheet() 함수 사용)
4) workbook에 엑셀 시트 추가
5) 새로운 엑셀 파일을 생성하고 workbook 내용을 기록
- 엑셀 파일 생성 결과

2. 셀 스타일
- 셀(cell)에 스타일을 주기 위해서 xlsx 모듈 자체를 이용하지 않고 xlsx 모듈의 깃허브 레파지토리를 포크 해서 스타일 기능을 추가한
xlsx-js-style 모듈을 사용
- xlsx-js-style 설치
npm install xlsx-js-style
- 고객 정보 엑셀 파일 생성 예제 수정
const xlsx = require('xlsx-js-style'); // xlsx-js-style 모둘 시용
const workbook = xlsx.utils.book_new(); // 가상의 엑셀 파일 생성
const customers = [
{A: '고객명', B: '이메일', C: '연락처'}, // 첫 번째 행 - 컬럼명에 해당하는 데이터
{A: '아무개1', B: 'kim@gmail.com', C: '010-00000-00000'},
{A: '테스트', B: 'test@gmail.com', C: '010-1111-1111'},
{A: '홍길동', B: 'hhhh@gmail.com', C: '010-2222-22222'},
{A: '테스트2', B: 'ttttt@gmail.com', C: '010-3333-3333'},
{A: '테스트3', B: 'test123@gmail.com', C: '010-4444-4444'},
];
// json_to_sheet 방식으로 데이터 생성
const firstSheet = xlsx.utils.json_to_sheet(customers, {header :["A", "B", "C"],
skipHeader: true}); // skipHeader가 false이면 엑셀 시트의 첫 번째 행에 header에 해당하는 A, B, C 가 삽입
// 칼럼 넓이 지정
firstSheet["!cols"] = [
{ wpx : 120 }, // A열
{ wpx : 250 }, // B열
{ wpx : 200 }, // C열
];
firstSheet["A1"].s = { // 스타일 변경
font: {
name: "Calibri",
sz: 24,
bold: true,
color: {rgb: "FFFFAA00"}
}
}
// 첫 번째 시트에 작성한 데이터를 넣는다.
xlsx.utils.book_append_sheet(workbook, firstSheet, "Customers");
// 엑셀 파일을 생성하고 저장
xlsx.writeFile(workbook, "./xlsx/customers_style.xlsx");
- 엑셀 파일 생성 결과

- xlsx-js-style 모듈에서 지정할 수 있는 스타일
| 스타일 속성 | 스타일 속성의 하위 속성 | 적용값 |
| fill | patternType | 'solid' 혹은 'none' |
| fgColor | 전경색(COLOR_SPEC) | |
| bgColor | 배경색(COLOR_SPEC) | |
| font | name | 폰트명 |
| sz | 폰트 크기 | |
| color | 폰트 색상 | |
| bold | 볼드체 여부(true or false) | |
| underline | 밑줄 여부(true or false) | |
| italic | 이탤릭체 여부(true or false) | |
| strike | 취소선 여부(true or false) | |
| outline | 아웃라인 여부(true or false) | |
| vertAlign | 그림자 여부(true or false) | |
| numFmt | '0' '0.00%' ''mm/dd/yy' |
|
| aligment | vertical | 세로 정렬(bottom, center, top) |
| horizontal | 가로 정렬('left', 'center', 'top') | |
| wrapText | 줄 바꿈 여부(true or false) | |
| readongOrder | 값이 2이면 RTL(Right To Left) | |
| textRotation | 0에서 180 사이 숫자 90은 90도만큼 회전 |
|
| border | top | 위쪽 경계선으로 아래와 같이 style과 color값에 대한 오브젝트 {style: BORDED_STYLE, color: COLOR_SPEC } |
| bottom | 아래쪽 경계선으로 아래와 같이 style과 color값에 대한 오브젝트 {style: BORDED_STYLE, color: COLOR_SPEC } |
|
| left | 왼쪽 경계선으로 아래와 같이 style과 color값에 대한 오브젝트 {style: BORDED_STYLE, color: COLOR_SPEC } |
|
| right | 오른쪽 경계선으로 아래와 같이 style과 color값에 대한 오브젝트 {style: BORDED_STYLE, color: COLOR_SPEC } |
|
| diagonal | 대가선으로 아래와 같이 style과 color값에 대한 오브젝트 {style: BORDED_STYLE, color: COLOR_SPEC } |
|
| diagonaUp | 아래에서 위로 긋는 대각선 여부 (true or false) |
|
| diagonaDown | 위에서 아래로 긋는 대각선 여부 (true or false) |
728x90
반응형
'Runtime > Node.js' 카테고리의 다른 글
| 29. 크롤링 (0) | 2023.04.30 |
|---|---|
| 28. 웹소켓 (1) | 2023.04.30 |
| 26. 엑셀 파일 처리(엑셀 파일 내용 수정) (3) | 2023.04.24 |
| 25. 엑셀 파일 처리(엑셀 파일 읽기) (4) | 2023.04.24 |
| 24. 작업 스케줄러(Job Scheduler) (3) | 2023.04.23 |