Angular导出Excel客户端

Gia*_*ris 6 excel typescript angular

我正在使用Angular v4,我想如何从组件中的对象开始构建Excel电子表格.我需要点击一个按钮下载Excel文件,我必须做这个客户端.我有一个由数组组成的json文件,我需要在excel文件上传输它,可能是风格可定制的.可能吗?如果有,怎么样?

编辑:请不要使用js库,需要使用Typescript和Angular来完成

par*_*ath 17

yourdata = jsonData

ConvertToCSV(objArray) {
            var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
              var str = '';
            var row = "";

            for (var index in objArray[0]) {
                //Now convert each value to string and comma-separated
                row += index + ',';
            }
            row = row.slice(0, -1);
            //append Label row with line break
            str += row + '\r\n';

            for (var i = 0; i < array.length; i++) {
                var line = '';
                for (var index in array[i]) {
                    if (line != '') line += ','

                    line += array[i][index];
                }
                str += line + '\r\n';
            }
            return str;
        }
Run Code Online (Sandbox Code Playgroud)

在你的HTML中:

<button (click)="download()">export to excel</button>
Run Code Online (Sandbox Code Playgroud)

在组件中:

download(){    
 var csvData = this.ConvertToCSV(yourdata);
                        var a = document.createElement("a");
                        a.setAttribute('style', 'display:none;');
                        document.body.appendChild(a);
                        var blob = new Blob([csvData], { type: 'text/csv' });
                        var url= window.URL.createObjectURL(blob);
                        a.href = url;
                        a.download = 'User_Results.csv';/* your file name*/
                        a.click();
                        return 'success';
}
Run Code Online (Sandbox Code Playgroud)

希望你能帮助你