在标题前添加行excel js in angular

hi3rlvi2  于 7个月前  发布在  Angular
关注(0)|答案(2)|浏览(75)

我正在使用excel js导出json到excel。json正在成功地导出到工作表。但现在我想在标题文本上方添加一行描述工作表的详细信息。
更多详情请参考image
代码如下

import { Injectable } from '@angular/core';
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';

const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';
const EXCEL_EXTENSION = '.xlsx';
import { DatePipe } from '@angular/common';
import { Workbook } from 'exceljs';

@Injectable()
export class ExcelService {

  constructor( private datePipe :  DatePipe) { }

  public exportAsExcelFile(json: any[], excelFileName: string): void {
    const title = 'Absent Report';
    const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json);
   
    console.log('worksheet',worksheet);
    const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] };
    const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
    //const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'buffer' });
    this.saveAsExcelFile(excelBuffer, excelFileName);

    let titleRow = worksheet.addRow(title);
    titleRow.font = { name: 'Comic Sans MS', family: 4, size: 16, underline: 'double', bold: true }
    worksheet.addRow([titleRow]);
 
    // let subTitleRow = worksheet.addRow(['Date : ' + this.datePipe.transform(new Date(), 'medium')])

  }

  private saveAsExcelFile(buffer: any, fileName: string): void {
    const data: Blob = new Blob([buffer], {
      type: EXCEL_TYPE
    });
    FileSaver.saveAs(data, fileName + this.datePipe.transform(new Date(),"ddMMyyyy hh:mm") + EXCEL_EXTENSION);
  }

}

字符串

prdp8dxp

prdp8dxp1#

代码的第一个问题是,您正在使用SheetJs库中的XLSX,但您正在导入ExcelJs库。您需要将从EcelJS的导入更正为enter code here“import * as XLSX from 'xlsx';"。其次,如果您想在头文件之前添加信息,则可以使用

const sheetInfo1 = [
      ['preheader', '' + 'Pre header information']
];
 
XLSX.utils.sheet_add_aoa(workbook, sheetInfo1, { origin: 'A1' });
XLSX.utils.sheet_add_aoa(workbook, tableheader, { origin: 'A2' });

字符串

pb3s4cty

pb3s4cty2#

我的代码中有这样的东西,运行良好:

const header = [
      this.translate.instant('grid.column1'),
      this.translate.instant('grid.column2'),
      ...        
      ];
    
    // Add Column header Row
    const headerRow = worksheet.addRow(header);

    // Add Data and Conditional Formatting
    data.forEach(dataRow => {
      const row = worksheet.addRow(dataRow.dataInfo);
      ...

字符串

相关问题