如何将json对象转换为.csv文件以及如何使用Ionic 2 + angular 2导出?

时间:2017-07-04 05:38:24

标签: json csv ionic2

我在angular 2应用程序中使用函数将JSON数据转换并导出到.CSV。以下是我的功能,并在角度2应用程序中正常工作 (网页)。同样我试图在我使用Ionic 2开发的移动应用程序中使用它,它不适用于移动应用程序。有没有办法做到这一点?

谢谢!

saveAsCSV() {
       let sampleJson : any = [{name:'ganesh', age:'24'},{name:'ramesh', age:'24'},{name:'suresh', age:'24'}]
       this.saveData = [];    
       let a = document.createElement("a");    
        a.setAttribute('style', 'display:none;');    
        document.body.appendChild(a);    
       let csvData = ConvertToCSV(sampleJson);    
       let blob = new Blob([csvData], { type: 'text/csv' });    
       let url= window.URL.createObjectURL(blob);    
        a.href = url;    
        a.download = 'sample.csv'; 
        a.click();    
  }

ConvertToCSV(objArray) {    
        let array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
        let str = '';
        let row = ""; 
        for (let 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 (let i = 0; i < array.length; i++) {
            let line = '';
            for (let index in array[i]) {
                if (line != '') line += ',';
                line += array[i][index];
            }
            str += line + '\r\n';
        }
        return str;
    }

1 个答案:

答案 0 :(得分:2)

使用“cordova-plugin-file”在Ionic 2中导出csv。

https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/

如果您看到以下错误 -

代码:1条消息:“NOT_FOUND_ERR”

在config.xml中添加以下行之一来解决它。

<preference name="AndroidPersistentFileLocation" value="Internal" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />

如插件文档中所述,您可以使用以下两个选项之一:

  

选择是否在内部存储文件   文件存储位置,或使用先前的逻辑,具有首选项   在应用程序的config.xml文件中。如果没有这一行,File插件将使用Internal作为   默认。如果存在首选项标签,并且不是其中之一   值,应用程序将无法启动。

     

如果您的应用程序之前已经发送给用户,请使用   这个插件的旧版本(3.0.0之前版本),并且已经存储了文件   持久性文件系统,那么你应该将首选项设置为   兼容性,如果您的config.xml没有指定的位置   持久文件系统。将位置切换为“内部”意味着   升级其应用程序的现有用户可能无法使用   访问以前存储的文件,具体取决于他们的设备。

     

如果您的应用程序是新的,或者之前从未存储过文件   持久性文件系统,然后通常是内部设置   推荐使用。