Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在exceljs中为angular添加表格

如何在exceljs中为angular添加表格
EN

Stack Overflow用户
提问于 2020-04-03 12:22:36
回答 2查看 1.9K关注 0票数 0

当我尝试添加包含数据的表时。它显示错误。AddTable不起作用。

代码语言:javascript
运行
AI代码解释
复制
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],
  ],
});

请建议如何进行?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2020-04-04 17:53:28

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

从“ExcelJS /dist/exceljs”导入*作为exceljs;从“file-saver”导入*作为fs;

代码语言:javascript
运行
AI代码解释
复制
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");
        });
      }
票数 0
EN

Stack Overflow用户

发布于 2020-04-30 07:23:44

您是否尝试使用xlsx-renderer生成复杂的xlsx文件?它是基于在Excel中制作的模板,所以许多复杂的样式可以不需要一行代码就可以使用。

例如,此模板:

通过数据提供:

(来源:https://github.com/Siemienik/xlsx-renderer/tree/master/tests/integration/data/Renderer009-ForEach-Average)

Xlsx渲染器这是一个由ExcelJs驱动的库,所以它们可以很好地协同工作

代码语言:javascript
运行
AI代码解释
复制
    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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61011852

复制
相关文章
python中实现有序字典
  那如何生成一个有序的字典呢,可以使用collections模块中的OrderdDict类,可以这样
py3study
2020/01/07
4690
在pandas中使用数据透视表
经常做报表的小伙伴对数据透视表应该不陌生,在excel中利用透视表可以快速地进行分类汇总,自由组合字段聚合计算,而这些只需要拖拉拽就能实现。
bugsuse
2020/11/06
2.9K0
在pandas中使用数据透视表
在pandas中使用数据透视表
经常做报表的小伙伴对数据透视表应该不陌生,在excel中利用透视表可以快速地进行分类汇总,自由组合字段聚合计算,而这些只需要拖拉拽就能实现。
朱卫军 AI Python
2022/04/03
3.1K0
在pandas中使用数据透视表
将pandas数据显示到现有的flask html表中
2 pandas读写数据库 在python连接好数据库后,pandas可以利用read_sql()方法将数据读入DataFrame。这里可以看一下代码。
赵云龙龙
2020/12/15
4.4K0
将pandas数据显示到现有的flask html表中
pandas中在groupby后,用first来实现分离代码
plt.scatter(center[1,0], center[1,1], s = 200, c = 'b', marker = 's')
好派笔记
2022/06/07
1.3K0
用Pandas在Python中可视化机器学习数据
为了从机器学习算法中获取最佳结果,你就必须要了解你的数据。
Hans He
2018/02/05
6.2K0
iOS开发中在swift项目中使用HandyJSON将字典转成模型
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/80271914
用户1451823
2018/09/13
2.4K0
iOS开发中在swift项目中使用HandyJSON将字典转成模型
用Pandas在Python中可视化机器学习数据
您必须了解您的数据才能从机器学习算法中获得最佳结果。
花落花飞去
2018/02/06
2.9K0
在pandas中使用pipe()提升代码可读性
我们在利用pandas开展数据分析时,应尽量避免过于碎片化的组织代码,尤其是创建出过多不必要的中间变量,既浪费了内存,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性,因此以流水线方式组织代码非常有必要。
Feffery
2020/11/09
4920
在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比
来源:Deephub Imba本文约1400字,建议阅读15分钟在 Pandas 中有很多种方法可以进行DF的合并。本文将研究这些不同的方法,以及如何将它们执行速度的对比。 合并DF Pandas 使用 .merge() 方法来执行合并。 import pandas as pd     # a dictionary to convert to a dataframe data1 = {'identification': ['a', 'b', 'c', 'd'],       'Customer_Name':
数据派THU
2022/06/02
1.4K0
在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比
在pandas中使用pipe()提升代码可读性
我们在利用pandas开展数据分析时,应尽量避免过于「碎片化」的组织代码,尤其是创建出过多不必要的「中间变量」,既浪费了「内存」,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性,因此以流水线方式组织代码非常有必要。
朱卫军 AI Python
2022/04/03
3970
在pandas中使用pipe()提升代码可读性
在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比
在 Pandas 中有很多种方法可以进行DF的合并。本文将研究这些不同的方法,以及如何将它们执行速度的对比。
deephub
2022/06/04
2K0
在 Pandas 中使用 Merge、Join 、Concat合并数据的效率对比
在pandas中遍历DataFrame行
inp = [{'c1':10, 'c2':100}, {'c1':11,'c2':110}, {'c1':12,'c2':120}]
用户7886150
2020/12/26
3.4K0
在函数中接受元组与字典
# 在函数中接受元组与字典 有一种特殊方法,即分别使用 * 或 ** 作为元组或字典的前缀,来使它们作为一个参数为 函数所接收。当函数需要一个可变数量的实参时,这将非常有用。 # 代码 # 当args变量前面添加了一个*时,函数的所有其他的参数都将传递到args中,并作为一个元组储存 # 如果采用的是 ** 前缀,则额外的参数将被视为字典的键值—值配对。 def powersum(power, *args): '''Return the sum of each argument raised to
benym
2022/07/14
1.2K0
.NET中的密钥加密
本教程将演示如何通过System.Security.Cryptography在.NET Framework 1.1中实现对称加密/密钥加密。
MelodyS
2018/03/12
3.1K0
.NET中的密钥加密
在现有线程安全类中添加功能
Java类库中包含许多有用的“基础模块”类。通常应该优先选择重用这些类而不是开发新类:重用能降低开发工作量、开发风险以及维护成本。很多情况这些现有的类只能提供大部分工作,我们需要在不破坏线程安全的情况下添加一些新的操作。 要添加一个新的原子操作,有以下几种方法: 第一种:修改原始的类 这种方法最简单最安全。但通常情况下无法访问或修改类的源代码。 第二种:扩展类机制(通过继承) 下面的代码中BetterVector扩展了Vector,并添加了新方法putIfAbsent。但并非所有的类都像Vector那样将状
SuperHeroes
2018/05/31
7240
Android新手之旅(11) 在现有页面中插入新的view
  一些特定的情况下,无法用静态的方法定义页面中用到的view。如自定义的曲线图,就是一个独立的view,要把它作为一个部分插入到页面中,需要以下的方法: LinearLayout l = new LinearLayout(this);   //l就是当前的页面的布局 l.addView(myView);   //加入新的view l.setPadding(20, 390, 20, 40);  //设置位置 LinearLayout.LayoutParams p = new LinearLayout.Lay
用户1075292
2018/01/23
1.4K0
Python中使用item()遍历字典
Python中通常使用for...in遍历字典,本文使用item()方法遍历字典。
py3study
2020/01/09
1.5K0
Python中使用item()遍历字典
使用 Pandas 在 Python 中绘制数据
在有关基于 Python 的绘图库的系列文章中,我们将对使用 Pandas 这个非常流行的 Python 数据操作库进行绘图进行概念性的研究。Pandas 是 Python 中的标准工具,用于对进行数据可扩展的转换,它也已成为从 CSV 和 Excel 格式导入和导出数据的流行方法。
用户1880875
2021/09/15
7.2K0
【Python基础】在pandas中使用pipe()提升代码可读性
我们在利用pandas开展数据分析时,应尽量避免过于「碎片化」的组织代码,尤其是创建出过多不必要的「中间变量」,既浪费了「内存」,又带来了关于变量命名的麻烦,更不利于整体分析过程代码的可读性,因此以流水线方式组织代码非常有必要。
黄博的机器学习圈子
2020/11/17
9360
【Python基础】在pandas中使用pipe()提升代码可读性

相似问题

Java Hashtable在'put‘期间用新的密钥覆盖现有的密钥

41

用python字典处理密钥错误

13

用公共密钥合并python字典

51

Pandas -将字典添加到现有行

20

在pandas中遍历字典

115
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档