html - 如何以角度在一个csv文件中导出多个html表?
问题描述
我在一个文件中有多个 html 表。我想导出 csv 文件中的所有表。
我正在使用“XLSX”包。
exportAsXLSX() {
let element = document.querySelectorAll('csv-table');
const ws: XLSX.WorkSheet = XLSX.utils.table_to_sheet(element);
const wb: XLSX.WorkBook = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, 'sheet1');
XLSX.writeFile(wb, this.fileName);
}
有没有其他方法可以将我的所有表导出到一个 csv 文件中。
解决方案
在我看来,在这种情况下没有必要使用该xlsx
库。您当然是HTML
根据组件类中存在的数据模型创建表的。因此,您可以简单地连接来自不同表的数据并将它们一起写入一个CSV
文件。
这可以通过以下服务来完成(从koia.io借来的代码)。
import { Injectable } from '@angular/core';
import { DatePipe } from '@angular/common';
import * as FileSaver from 'file-saver';
@Injectable({
providedIn: 'root'
})
export class CSVExportService {
private static readonly TYPE_CSV = 'text/csv;charset=UTF-8';
private newline = '\n';
private datePipe = new DatePipe('en-US');
private timeFormat = 'yyyy-mm-dd_HHmmss';
exportAsCSV(data: Object[], baseFileName: string): void {
const csv = this.toCSV(data, ',');
const blob: Blob = new Blob([csv], { type: CSVExportService.TYPE_CSV });
FileSaver.saveAs(blob, this.generateFileName(baseFileName, '.csv'));
}
private toCSV(data: Object[], delimiter: string): string {
const keys = Object.keys(data[0]);
return keys.join(delimiter) + this.newline +
data.map(e => this.toCSVLine(e, keys, delimiter))
.join(this.newline);
}
private toCSVLine(element: Object, keys: string[], delimiter: string) {
return keys.map(k => element[k])
.join(delimiter);
}
private generateFileName(baseFileName: string, extension: string): string {
const formattedDate = this.datePipe.transform(new Date().getTime(), this.timeFormat);
return baseFileName + '_' + formattedDate + extension;
}
}
推荐阅读
- json - 在 laravel 中以 json 数据的形式从验证器发出响应
- sql-server - 无法使用 localhost 或(本地)连接到 SQL Server, ::1 和 127.0.0.1 工作
- python - django select_related() 每次引用对象时调用数据库,而不是只调用一次
- mapbox - 如何从剃刀页面使 index.html 中定义的变量可见?
- elasticsearch - 我们在 elk stack 中应用 sigma 规则的地方
- c - /dev/net/tun 是如何工作的?我能拿回我写的东西吗?
- java - 当我从一个班级切换到另一个班级时,为什么我会丢失 ArrayList 的内容?
- node.js - 为什么突然收到错误“No gulpfile found”?前几天还在上班
- ruby-on-rails - Ruby on Rails 未定义方法“course_name”,用于 nil:NilClass
- postgresql - 如何快速从 JSOB 获取不同的密钥?