导出excel也是经常用到的一个功能,目前遇到一个比较简单的需求,就是导出统计报表,需要请求服务器,然后把接收的json转化成浏览器可导出的形式,再推给浏览器进行导出
下面是数据转化部分,每行记录都需要通过换行符隔开。
var exportPrefix = '\uFEFF';
var exportHeader = "任务ID,处理人ID,发生时间,截止时间,任务标记,任务内容 \n";
var exportColumns = ['ID', 'Handler', 'OccurDate', 'LimitDate', 'FinishStatus', 'TaskDetail'];
var exportContent = exportPrefix + exportHeader;
for (var i in data) {
for (var c in exportColumns) {
exportContent += '' + data[i][exportColumns[c]] + ',';
}
exportContent += '\n';
}
调用FileSaver的api来生成文件并导出
var blob = new Blob([exportContent], {type: "text / plain;charset = utf - 8"});
var date = new Date();
saveAs(blob, date.getFullYear() + '' + (date.getMonth() + 1) + '' + (date.getDate()) + '.csv');
FileSaver是常用的浏览器插件,通过Blob对象来传入文件内容,第一个参数就是内容,第二个参数是文件相关的配置,例如编码设置成utf-8,最后调用saveAs方法来保存文件即可,第一个参数是Blob对象,第二个参数是文件名
FileSaver可以保存各种形式的文件,例如图片
var canvas = document.getElementById("my-canvas"), ctx = canvas.getContext("2d");
// draw to canvas...
canvas.toBlob(function(blob) {
saveAs(blob, "pretty image.png");
});
文本文件:
var file = new File(["Hello, world!"], "hello world.txt", {type: "text/plain;charset=utf-8"});
FileSaver.saveAs(file);