如何使用Angular2从数据库中获取数据并导出到csv文件

时间:2017-09-11 10:11:50

标签: javascript angular csv typescript

我需要从数据库中获取数据到csv文件。我能够获取所有数据,但无法获取对象格式的数据,它在csv文件中显示为[object object]。

TS文件:

getData() {
   let source = this.resultList;
   let destination = [];
     for (let i = 0; i < source.length; i++) {
         let entry = new Entry();
         entry.id = source[i]['id'];
         entry.participantId = source[i]['participantId'];
         entry.completedOn = moment(source[i]['completedOn']).format('DD/MM/YYYY');
          if (typeof source[i]['satisfaction'] == 'string') {
              entry['satisfaction'] = source[i]['satisfaction']
            } else {
                for (var property in source[i]['satisfaction']) {
                    if (source[i]['satisfaction'].hasOwnProperty(property)) {
                     entry[property] = source[i]['satisfaction'][property]
                    }
            }
          }
         destination.push(entry);
     }
     return destination;
    }
  }

我无法将“prodandService”中的对象提取到csv文件,它显示为[object object]而不是显示项目。

JSON数据:

{ “满意”:{ “prodandService”:[{ “索引”: “Orbiz”},{ “索引”: “qwerq”},{ “索引”: “ASFD”},{ “索引”:” test“},{”index“:”test123“},{”index“:”TestWD“},{”index“:”IOS app“},{”index“:”Lipstick“},{”index“: “Foundation”},{“index”:“lipstick”},{“index”:“Website”},{“index”:“App IOS”},{“index”:“Shampoo Vanilla”},{“index “:”Shampoo Strawberry“},{”index“:”car“},”Lipstick“],”price“:”medium“,”customer“:”yes“,”recomondation“:”4“,”sales“ : “电话”], “phoneVist”: “3”, “重要性”: “质量”], “频”: “季”, “满意”: “3”}, “completedOn”:“2017-08 -28T09:39:54.676Z”, “标识”:10 “participantId”:217}

请帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用库导出到CSV文件,这对我来说很有用:

我一直在使用外部库来从Angular4应用程序导出文档:https://github.com/eligrey/FileSaver.js/

以下是我用于提取数据的示例代码。我将此方法绑定到按钮以触发事件:

TypeScript组件:(已编辑)

  // Notice the parameters from the service call that give me back my filtered datas
  exportDatas(documentType: string) {
    // I believe you store your service data you want to export in this.resultList
    let source = this.resultList;
    const blob = new Blob([source.blob()]);
    const objectUrl = URL.createObjectURL(blob);
    FileSaver.saveAs(blob, 'Export.' + documentType);
  }

模板方:(已编辑)

<div>
  <button (click)="exportDatas('csv')" type="button">CSV</button>
  <button (click)="exportDatas('pdf')" type="button">PDF</button>
</div>

效果很好,代码更容易维护。

编辑:

使用NPM安装:

  • npm install file-saver --save
  • npm install @types/file-saver --save-dev(如果您需要,可以使用类型,我没有使用它们)

并在您的组件中导入(我正在使用Angular-CLI):

  • 没有类型:import * as FileSaver from 'file-saver';
  • 使用类型(未经测试,但我认为它是正确的):import { FileSaver } from 'file-saver';