excel.js 모듈 + 노드를 사용하여 열 머리글 앞에 행 추가
node.js의 excel.js 모듈을 사용하여 xslx 파일을 생성하려고 합니다.열을 만들고 값을 추가할 수 있었습니다.그러나 열 머리글 앞에 몇 개의 행을 삽입해야 합니다. 여기서 몇 가지 설명을 볼 수 있습니다.내가 어떻게 그럴 수 있을까?
어떤 도움이든 감사하겠습니다.
제가 시도한 코드는
var worksheet = workbook.getWorksheet(1);
worksheet.mergeCells('A1:B1');
var row = worksheet.getRow(1);
row.getCell(1).value =' Hello, World!';
// ... merged cells are linked
worksheet.getCell('A1').value = 'PI';
worksheet.columns = [
{header: 'Id', key: 'id', width: 10},
{header: 'Name', key: 'name', width: 32},
{header: 'complexity', key: 'complexity', width: 10},
{header: 'hours', key: 'hours', width: 10},
{header: 'cost', key: 'cost', width: 10}
];
worksheet.addRow({name:'m', complexity: 'd', hours:5, cost: 7});
https://github.com/guyonroche/exceljs/issues/433 에서 답을 찾을 수 있습니다.
> @rihabbs: 이 예처럼 해야 합니다 [![여기에 이미지 설명 입력][1][1] [1]: https://i.stack.imgur.com/9oRE4.png
> @habahmirukman:
/*TITLE*/
sheet.mergeCells('C1', 'J2');
sheet.getCell('C1').value = 'Client List'
/*Column headers*/
sheet.getRow(9).values = ['idClient', 'Name', 'Tel', 'Adresse'];
/*Define your column keys because this is what you use to insert your data according to your columns, they're column A, B, C, D respectively being idClient, Name, Tel, and Adresse.
So, it's pretty straight forward */
sheet.columns = [
{ key: 'idClient'},
{ key: 'name'},
{ key: 'tel'},
{ key: 'adresse'}
]
/*Let's say you stored your data in an array called arrData. Let's say that your arrData looks like this */
arrData = [{
idClient: 1,
name: 'Rihabbs',
tel: '0123456789',
adresse: 'Home sweet home'
},
{
idClient: 2,
name: 'mfahmirukman',
tel: '0123456789',
adresse: 'Indonesia'
}
]
/* Now we use the keys we defined earlier to insert your data by iterating through arrData and calling worksheet.addRow()
*/
arrData.forEach(function(item, index) {
sheet.addRow({
idClient: item.idClient,
name: item.name,
tel: item.tel,
adresse: item.adresse
})
})
@dim answer의 exceljs가 제공한 예제는 설명된 대로 작동하지 않습니다.
사용 사례는 실제 사용 사례가 어떻게 보일지에 대한 정말 나쁜 예일 뿐만 아니라, 단순히 작동하지 않습니다.이러한 상황에서 대부분의 사용자가 원하는 것은 테이블 헤더를 열 레이블의 행 위에 병합되고 중앙에 있는 셀로 만들고 키로 데이터를 추가하는 것입니다.나는 그것을 얻기 위해 많은 것들을 시도했습니다.sheet.columns데이터의 첫 번째 행을 그대로 두는 기능을 사용할 수 있지만 항상 열 머리글을 추가합니다.
시도해 보았습니다: 정의하기 전에 제목 값을 추가합니다.sheet.columns(예시와 같이)
정의하기 전에 열 헤더를 원시 목록으로 추가sheet.columns(예시와 같이)
표에 사용된 열에서 병합된 제목 셀 간격띄우기(예시와 같이)(아무나 이 작업을 수행할 이유가 있습니까?
제목과 열 머리글 사이에 행 추가(예시와 같이)(또 왜?)
둘 이상의 행을 제목 셀에 병합(예:
Microsoft Excel을 사용하여 타이틀 셀에 있는 마지막 열 키 이외에는 아무것도 제공되지 않습니다.정의를 내리는 시점은sheet.columns정의되는 테이블의 범위와 관련이 없습니다.실제 표의 열 밖에 있는 제목 셀을 추가하는 것이 효과적일 것이라고 확신하지만, 앞서 언급했듯이 대부분의 표준 사용 사례에서는 이 기능이 그다지 유용하지 않습니다.
확인한 해결 방법은 다음과 같습니다.
- 마지막 열을 시트로 만듭니다. 테이블 제목을 키로 사용하고, 머리글 행에 테이블 제목에 대한 내용을 포함하지 않으며, 해당 키를 사용하여 테이블 데이터가 들어오지 않도록 하십시오. (단점은 제목이 테이블 데이터 외부의 추가 열과 병합되어 약간 재미있고 중심에서 벗어난 것처럼 보인다는 것입니다.
- 줄에 세 번째 , 두 번 행 에 제 셀 만 들 고 행 머 에 을 글 리 번 들 고 니 다 만 합 설 정 째 세 째 을 목 다 니 ▁make 합 ▁your 설 ▁on 정 ▁set ▁and , ▁cell ▁on ▁the ▁the 두 ▁your ▁title ▁headers고
sheet.getRow(1).hidden = true없이 2행부터 입니다.) 줄입니다.
저는 첫 번째 해결책의 길을 따라 내려가면서 표의 양쪽 끝에 있는 빈 열을 예약했습니다. 적어도 제목 셀의 균형을 맞추기 위해 말이죠. 하지만 너무 이상하게 보였기 때문에 두 번째 해결책을 사용하기로 했습니다.
0개의 제거로 첫 번째 행을 스플라이스하고 행 값을 추가할 수 있습니다.
titleValues1 = ["colA1","colb1"];
titleValues2 = ["colA2","colb2"];
worksheet.spliceRows(1, 0, titleValues1,titleValues2);
그런 다음 행을 가져와서 원하는 대로 병합하거나 조작합니다.
이것이 여러분(또는 미래의 모든 사람)의 요구에 부응하기를 바랍니다.
딤의 답변에서 따왔지만 헤더를 추가해야 하기 전에 코드가 이미 작동했습니다.따라서 가능한 한 변화가 적을 경우 다음과 같이 나타납니다.
fields = [{key:'a', width:12}, {key:'b', label:'2nd', width:15}, {key:'c', width:12}]
data = [{a:'a', b:'b', c:'c'},...]
// first add header info, then
worksheet.columns = fields
const titles = worksheet.addRow(this.fields.map(f => f.label || f.key))
// uncomment following line to freeze header and column title rows
// worksheet.views = [{state: 'frozen', ySplit: worksheet.lastRow._number}]
const dataRows = worksheet.addRows(data)
언급URL : https://stackoverflow.com/questions/37830513/add-rows-before-the-column-header-using-excel-js-module-node
'programing' 카테고리의 다른 글
| Spring Boot 애플리케이션을 종료하는 동안 DataSource JMX Mean의 등록을 취소하지 못함 (0) | 2023.06.24 |
|---|---|
| 단일 이벤트를 반복적으로 관찰하는 대신 쿼리를 사용하여 소셜 네트워크 앱에 대한 게시물 가져오기 속도 향상 (0) | 2023.06.24 |
| 서로 다른 인증 공급자와 함께 여러 WebSecurityConfigurerAdapter 사용(API용 기본 인증자 및 웹 앱용 LDAP) (0) | 2023.06.24 |
| MariaDB 10.3.9 시스템 버전 테이블에서 DateTime 사용은 rowStart에는 작동하지만 rowEnd에는 작동하지 않습니다. (0) | 2023.06.24 |
| 오류: "MongoDB Atlas 클러스터의 서버에 연결할 수 없습니다." (0) | 2023.06.24 |
