Angular之怎样前台完成生成csv格式

原创
小哥 3年前 (2022-11-14) 阅读数 34 #大杂烩

直接在代码上

下面是我 log.component.ts中的代码

export class LogComponent implements OnInit {
  userId = ; // 用户ID
  userName = ; // 用户名
  description = ; // 用户描述
  datetime = ; // 登陆时间
  csvSeparator = ,;
  logs: Logs[];
  constructor(private getAllLogsService: GetAllLogsService, private router: Router) { }

  ngOnInit(): void {
    const params = {
      userId: this.userId,
      userName: this.userName,
      description: this.description,
      datetime: this.datetime
    };
    this.getAllLogsService.getAllLogs(params).subscribe((logs: Logs[]) => {
      this.logs = logs;
    });
  }
  exportCSV(value = this.logs, columns = [userId, userName, description, datetime], exportFilename = 用户LOG表) {

    const data = value;
    let csv = ufeff;
    for (let i = 0; i < columns.length; i++) {
      const column = columns[i];
      // columns.header ???
      // columns[i] | column ???
      // 如何自动提取列名
      csv += " + (columns[i]) + ";
      if (i < (columns.length - 1)) {
        csv += this.csvSeparator;
      }
    }
    // body
    data.forEach((record) => {
      csv += 

; // tslint:disable-next-line: variable-name for (let i_1 = 0; i_1 < columns.length; i_1++) { const column = columns[i_1]; csv += " + this.resolveFieldData(record, column) + "; if (i_1 < (columns.length - 1)) { csv += this.csvSeparator; } } }); const blob = new Blob([csv], { type: text/csv;charset=utf-8; }); if (window.navigator.msSaveOrOpenBlob) { navigator.msSaveOrOpenBlob(blob, exportFilename + .csv); } else { const link = document.createElement(a); link.style.display = none; document.body.appendChild(link); if (link.download !== undefined) { link.setAttribute(href, URL.createObjectURL(blob)); link.setAttribute(download, exportFilename + .csv); link.click(); } else { csv = data:text/csv;charset=utf-8, + csv; window.open(encodeURI(csv)); } document.body.removeChild(link); } } resolveFieldData(data, field) { if (data && field) { if (field.indexOf(.) === -1) { return data[field]; } else { const fields = field.split(.); let value = data; for (let i = 0, len = fields.length; i < len; ++i) { if (value === null) { return null; } value = value[fields[i]]; } return value; } } else { return null; } } }

下面是html中引用的代码

 

事实上,我也向很多人学习过。让我们把链接放在下面作为参考。
https://blog.csdn.net/xcx0215/article/details/78799403?utm\_medium=distribute.pc\_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.nonecase&depth\_1-utm\_source=distribute.pc\_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-8.nonecase

版权声明

所有资源都来源于爬虫采集,如有侵权请联系我们,我们将立即删除

热门