Как добавить таблицу в excel js для angular - PullRequest
0 голосов
/ 03 апреля 2020

Когда я пытаюсь добавить таблицу с данными. это показывает ошибку. AddTable не является функцией.

let workbook = new ExcelJS.Workbook();
    let worksheet = workbook.addWorksheet("Data");

worksheet.addTable({
  name: 'MyTable',
  ref: 'A1',
  headerRow: true,
  totalsRow: true,
  style: {
    theme: 'TableStyleDark3',
    showRowStripes: true,
  },
  columns: [
    {name: 'Date', totalsRowLabel: 'Totals:', filterButton: true},
    {name: 'Amount', totalsRowFunction: 'sum', filterButton: false},
  ],
  rows: [
    [new Date('2019-07-20'), 70.10],
    [new Date('2019-07-21'), 70.60],
    [new Date('2019-07-22'), 70.10],
  ],
});

Пожалуйста, предложите, как продолжить?

Спасибо

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Вы пытаетесь использовать xlsx-renderer для создания сложных файлов xlsx? Он основан на шаблонах, созданных в Excel, поэтому многие сложные стили доступны без какой-либо строки кода.

Например, этот шаблон: enter image description here

с данными дает: enter image description here

(Источник: https://github.com/Siemienik/xlsx-renderer/tree/master/tests/integration/data/Renderer009-ForEach-Average)

Xlsx-рендерер - это библиотека, работающая на Excel Js, поэтому они оба прекрасно работают вместе

    const result = await renderer.renderFromFile('./report-template.xlsx', { awesome:"Oh yeah!", items:[/*...*/]});
    // result is a ExcelJs's Workbook object 
    await result.xlsx.writeFile('./my-awesome-report.xlsx');
0 голосов
/ 04 апреля 2020

https://www.ngdevelop.tech/export-to-excel-in-angular-6/

импорт * в формате Excel JS из "exceljs / dist / excel js"; импортировать * как fs из "file-saver";

generateIRODetails() {
        let workbook = new ExcelJS.Workbook();
        let worksheet = workbook.addWorksheet("IRO Data");
        // const title = "RO Details";
        // let titleRow = worksheet.addRow([title]);
        // titleRow.font = {
        //   name: "Comic Sans MS",
        //   family: 4,
        //   size: 16,
        //   underline: "double",
        //   bold: true
        // };
        // worksheet.addRow([]);
        let subTitleRow = worksheet.addRow([
          "Date : " + this.datePipe.transform(new Date(), "medium")
        ]);
        subTitleRow.font = {
          family: 3,
          underline: "double",
          bold: true
        };
        // worksheet.addRow(["IRO_NO"]);
        // worksheet.addRow([this.pdfData.iro_details.iro_id]);
        // worksheet.addRow({ id: 1, name: "John Doe", dob: new Date(1970, 1, 1) });
        // worksheet.addRow({ id: 2, name: "Jane Doe", dob: new Date(1965, 1, 7) });

        //worksheet.addRow(["IRO_NO", this.pdfData.iro_details.iro_id]);
        // var rowValues = [];
        // rowValues[1] = 4;

        // worksheet.columns = [
        //   { header: "Id", key: "id", width: 10 },
        //   { header: "Name", key: "name", width: 32 }
        // ];
        // worksheet.addRow({ id: 1, name: "John Doe" });
        // worksheet.addRow({ id: 2, name: "Jane Doe" });

        //var cell5 = worksheet.getCell('A5');
        worksheet.getCell("A3").value = "RO Details";
        worksheet.getCell("A3").font = {
          family: 2,
          bold: true
        };

        worksheet.getCell("A5").value = "IRO_NO";
        worksheet.getCell("B5").value = this.pdfData.iro_details.iro_id;

        worksheet.getCell("A6").value = "RO No";
        worksheet.getCell("B6").value = this.pdfData.iro_details.ro_no;

        worksheet.getCell("A7").value = "RO Amount";
        //worksheet.getCell("B7").numFmt = "#";
        worksheet.getCell("B7").value = Number(this.pdfData.iro_details.ro_amount);

        worksheet.getCell("A8").value = "RO Date";
        worksheet.getCell("B8").value = this.pdfData.iro_details.ro_date;

        worksheet.getCell("A9").value = "Campaign Through";
        worksheet.getCell("B9").value = this.pdfData.iro_details.campaign_through;

        worksheet.getCell("A10").value = "Currency";
        worksheet.getCell("B10").value = this.pdfData.iro_details.currency;

        worksheet.getCell("A11").value = "Campaign Start Date";
        worksheet.getCell(
          "B11"
        ).value = this.pdfData.iro_details.campaign_start_date;

        worksheet.getCell("A12").value = "Campaign End Date";
        worksheet.getCell("B12").value = this.pdfData.iro_details.campaign_end_date;

        worksheet.getCell("A13").value = "Campaign Name";
        worksheet.getCell("B13").value = this.pdfData.iro_details.campaign_name;

        worksheet.getCell("A14").value = "IRO Status";
        worksheet.getCell("B14").value = Number(
          this.pdfData.iro_details.iro_status
        );

        worksheet.getCell("I3").value = "Advertiser Details";
        worksheet.getCell("I3").font = {
          family: 2,
          bold: true
        };

        worksheet.getCell("I5").value = "Advertiser";
        worksheet.getCell("J5").value = this.pdfData.iro_details.advertiser;

        worksheet.getCell("I6").value = "Brand";
        worksheet.getCell("J6").value = this.pdfData.iro_details.brand;

        worksheet.getCell("I7").value = "Category";
        worksheet.getCell("J7").value = this.pdfData.iro_details.category;

        worksheet.getCell("I8").value = "Agency";
        worksheet.getCell("J8").value = this.pdfData.invoice_details.agency_name;

        worksheet.getCell("I9").value = "Agency Region";
        worksheet.getCell("J9").value = this.pdfData.invoice_details.agency_region;

        worksheet.getCell("I10").value = "Credit Period";
        worksheet.getCell("J10").value = this.pdfData.invoice_details.credit_period;

        worksheet.getCell("I11").value = "Invoice Type";
        worksheet.getCell("J11").value = this.pdfData.invoice_details.credit_period;

        worksheet.addRow([]);
        worksheet.addRow([]);
        worksheet.addRow([]);
        let pdfDataLength = this.pdfData.cd_details.length;
        const header = [
          "IRO_No",
          "IRO Line ID",
          "platforms",
          "sites",
          "sections",
          "ad_units",
          "creatives",
          "placements",
          "buy_type",
          "no_of_days",
          "cost_per_day",
          "impressions",
          "cpm",
          "clicks",
          "cpc",
          "no_of_leads",
          "cpl",
          "production cost",
          "complete views",
          "cpcv",
          "total_amount",
          "sov_percentage",
          "line_start_date",
          "line_end_date",
          "countries",
          "states",
          "cities",
          "manufacturers",
          "model_names",
          "browser_names",
          "mobile_carrier_names",
          "days",
          "time_intervals",
          "connection_name",
          "frequency_cap",
          "third_party",
          "comments"
        ];
        worksheet.addRow(header).font = {
          family: 2,
          bold: true
        };
        //worksheet.addRow(header);
        var data = [];
        for (let i = 0; i < pdfDataLength; i++) {
          data = [
            this.pdfData.iro_details.iro_id,
            "NA",
            this.pdfData.cd_details[i].platform_name,
            this.pdfData.cd_details[i].site_name.join(", "),
            this.pdfData.cd_details[i].section_name.join(", "),
            this.pdfData.cd_details[i].ad_units_name.join(", "),
            this.pdfData.cd_details[i].creative_type.join(", "),
            this.pdfData.cd_details[i].placement_type.join(", "),
            this.pdfData.cd_details[i].buy_type,
            Number(this.pdfData.cd_details[i].no_of_days),
            Number(this.pdfData.cd_details[i].cost_per_day),
            Number(this.pdfData.cd_details[i].impressions),
            Number(this.pdfData.cd_details[i].cpm),
            Number(this.pdfData.cd_details[i].clicks),
            Number(this.pdfData.cd_details[i].cpc),
            Number(this.pdfData.cd_details[i].no_of_leads),
            this.pdfData.cd_details[i].cpl,
            this.pdfData.cd_details[i].production_cost,
            this.pdfData.cd_details[i].cpcv,
            this.pdfData.cd_details[i].cpcv,
            this.pdfData.cd_details[i].total_amount,
            this.pdfData.cd_details[i].sov_percentage,
            this.pdfData.cd_details[i].line_start_date,
            this.pdfData.cd_details[i].line_end_date,
            this.pdfData.cd_details[i].country_name.join(", "),
            this.pdfData.cd_details[i].state_name.join(", "),
            this.pdfData.cd_details[i].city_name.join(", "),
            this.pdfData.cd_details[i].manufacturer_name.join(", "),
            this.pdfData.cd_details[i].model_name.join(", "),
            this.pdfData.cd_details[i].browser_name.join(", "),
            this.pdfData.cd_details[i].mobile_carrier_name.join(", "),
            this.pdfData.cd_details[i].day_targeting.join(", "),
            this.pdfData.cd_details[i].time_interval.join(", "),
            this.pdfData.cd_details[i].connection.join(", "),
            this.pdfData.cd_details[i].frequency_cap,
            this.pdfData.cd_details[i].clicks,
            this.pdfData.cd_details[i].comment
          ];
          worksheet.addRow(data);
        }

        // worksheet.addRow([this.pdfData.iro_details]);
        workbook.xlsx.writeBuffer().then(data => {
          let blob = new Blob([data], {
            type:
              "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
          });
          fs.saveAs(blob, "IRO_Details.xlsx");
        });
      }
...