node.js + typescript + exceljs 로 엑셀 파일 생성 및 내보내기를 진행하다가
Exceljs의 addTable 로 테이블을 작성했었다.
이후에 코드리뷰를 받고 table 생성을 아예 하지않고 아예 columns 추가 및 데이터를 InsertRows로 생성하도록 변경했다. 여기서 내가 어려움이 있었던 부분은
I decided to use "worksheet.columns" + "insertRows" instead of using "addTable" function because the data I got from db is an array of objects and I had to refine the data for the rows of table again. but I can just use the data itself with insertRows right away without refining. but one problem I had was that if I use worksheet columns then it starts from the 'A1', the top of the sheet, and there is no way to set the location (if i'm not wrong)
worksheet.columns = [
{ header: 'Id', key: 'id', width: 10 },
{ header: 'Name', key: 'name', width: 32 },
{ header: 'D.O.B.', key: 'DOB', width: 10, outlineLevel: 1 }
];
이렇게 하면 엑셀의 첫 A1부터 Row 가 시작된다. addTable 매서드는 위치를 지정하는 값이 있었는데 columns는 없는 것 같다. (못찾은 걸수도..) 일단 찾은 방법은 모든 columns + rows 를 만들고 (+css) 그 다음에 맨 위에 row를 splice 해서 새로운 빈 row 를 추가해주는 것이다.
One solution I found was splicing rows from the top of the excel and add 4 empty rows, then the columns(headers) and data will be moved to 4 cells below.
worksheet.spliceRows(1, 0, [], [], [], []);
이렇게 해주면 [] x 4 = 4개의 빈 rows가 맨 위에부터 추가되어 기존의 columns (headers) 와 데이터들이 아래로 이동한다. --> headers가 'A5' row에 위치하게 됨.
만약 더 좋은 방법이 있다면 댓글로 남겨주시면 감사하겠습니다!!
If you have a better way, please leave a comment!
Reference : https://www.npmjs.com/package/exceljs
'Node.js' 카테고리의 다른 글
[Node.js] Excel.js 사용법 총정리 / How to use Exceljs (테이블 만들기, insertRows, columns, value 등) (2) | 2022.07.12 |
---|---|
[컴퓨터 네트워크] 웹 서비스 동작 원리 / URL 뜻 / APM 동작 원리 (0) | 2022.07.11 |
Node.js excel file download 엑셀 다운로드 사용법 예제 (0) | 2022.06.28 |
[Node.js] How to use xlsx with Typescript / xlsx 사용법 (0) | 2022.06.24 |