Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以CSV、Excel、PDF格式以AngularJS导出数据_Javascript_Angularjs_Excel_Pdf - Fatal编程技术网

Javascript 以CSV、Excel、PDF格式以AngularJS导出数据

Javascript 以CSV、Excel、PDF格式以AngularJS导出数据,javascript,angularjs,excel,pdf,Javascript,Angularjs,Excel,Pdf,我想在我的应用程序中添加CSV、Excel、PDF格式的导出表数据功能 我正在使用angularjs 1.2.16构建应用程序 在Excel中导出数据 我用过 <script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script> 以上代码运行良好。 以CSV、PDF格式导出数据 同样,我希望以CSV和PDF格式导出数据。

我想在我的应用程序中添加CSV、Excel、PDF格式的导出表数据功能

我正在使用angularjs 1.2.16构建应用程序

在Excel中导出数据 我用过

<script src="https://rawgithub.com/eligrey/FileSaver.js/master/FileSaver.js" type="text/javascript"></script>
以上代码运行良好。

以CSV、PDF格式导出数据 同样,我希望以CSV和PDF格式导出数据。
我曾经用CSV导出数据,但在ubuntu libre office中它不能正常工作(文件显示了损坏的数据)。

有谁能告诉我如何在angularjs中导出CSV、Excel和PDF格式的表格数据吗?

如果您对CSV文件感到满意,那么ngCsv模块就是最好的选择。您不从DOM加载元素,而是直接导出数组。在这里,您可以看到ngCsv的一个示例

html:

 <h2>Export {{sample}}</h2>
  <div>
      <button type="button" ng-csv="getArray" filename="test.csv">Export</button>
</div>

您可以使用JavaScript库将数据从AngularJS导出为XLS、XLSX、CSV和制表符格式

在代码中包含两个库:

要将数据导出为Excel格式,请在控制器代码中创建函数:

function myCtrl($scope) {
    $scope.exportData = function () {
       alasql('SELECT * INTO XLSX("mydata.xlsx",{headers:true}) FROM ?',[$scope.items]);
    };
    $scope.items = [{a:1,b:10},{a:2,b:20},{a:3,b:30}];
};
然后在HTML中创建一个按钮(或任何其他链接):


或者使用TXT()、CSV()、TAB()、XLS()、XLSX()函数获得正确的文件格式。

saveAs;要更改注册的文件扩展名,例如:“f:\folder\report.html”目录

var blob = new Blob([document.getElementById('exportable').innerHTML], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8" }); 
saveAs(blob, "report.xls");

我已经研究了几种方法,并得出以下结论,类型安全(definitetyped):

exportAsExcel(tableId:string,fileName:string,linkElement:any){
var uri='data:application/vnd.ms excel;base64',
模板=“{table}”,
base64=函数{
返回window.btoa(decodeURI(encodeURIComponent));
},
格式=函数(s,c){
返回s.replace(/{(\w+)}/g,函数(m,p){
返回c[p];
});
};
//获取表数据
var table=document.getElementById(tableId);
变量ctx={
工作表:文件名,
表:table.innerHTML
};
//如果浏览器是IE,则将文件另存为blob,在IE10和IE11上进行测试
var browser=window.navigator.appVersion;
if((browser.indexOf('Trident')!=-1&&browser.indexOf('rv:11')!=-1)||
(browser.indexOf('MSIE 10')!=-1)){
var builder=新的MSBlobBuilder();
append(uri+格式(模板,ctx));
var blob=builder.getBlob('application/vnd.openxmlformats officedocument.spreadsheetml.sheet');
window.navigator.msSaveBlob(blob,文件名+'.xlsx');
}否则{
var元素=document.getElementById(linkElement);
var a=document.createElement('a');
a、 href=uri+base64(格式(模板,ctx));
a、 目标='u blank';
a、 setAttribute('download',fileName+'.xlsx');
文件.正文.附件(a);
a、 单击();
}
toastr.success(“太棒了!”,“我们已经为您创建了一个Excel报告,您应该在浏览器中下载它。”);
}

当然,那些在各种文章中做出贡献的人也会受到赞誉。我们可以将表格中的数据导出为各种格式,包括 Json、Xml、Pdf

你可以找到详细的解释 注意:此实现不会在IE中运行

你需要什么? 安格拉斯 Jquery.js 下面引用的文件 tableExport.js、JqueryBase64.js、html2canvas.js、base64.js、Jspdf.js、sprintf.js

 <script type="text/javascript">
    var myAppModule = angular.module('myApp', []);
    myAppModule.controller('myCtrl', function ($scope) {
        $scope.exportData = function () {
            $('#customers').tableExport({ type: 'json', escape: 'false' });
        };
        $scope.items = [
            {
                "FirstName": "Prathap",
                "LastName": "Kudupu",
                "Address": "Near Anjana Beach"
            },
            {
                "FirstName": "Deepak",
                "LastName": "Dsouza",
                "Address": "Near Nariman Point"
            }
        ];

    });

var myAppModule=angular.module('myApp',[]);
控制器('myCtrl',函数($scope){
$scope.exportData=函数(){
$('#customers').tableExport({type:'json',escape:'false'});
};
$scope.items=[
{
“名字”:“Prathap”,
“姓氏”:“库杜普”,
“地址”:“安贾纳海滩附近”
},
{
“名字”:“迪帕克”,
“姓氏”:“Dsouza”,
“地址”:“纳里曼角附近”
}
];
});

这很奇怪。。。它是在Mac下用Chrome开发的,我还在另一台电脑上用Win8进行了测试。你有什么版本的Chrome?我的是39.0.2171.71(64位)。您是否从JSFIDLE运行了示例嘿,我有一个问题。您能否提供一些详细信息,说明它如何在没有服务器调用的情况下创建文件?我使用FileSaver库()。此外,您还可以查看Alasql实用程序库,其中包含用于在节点和浏览器中加载和保存文件的函数()导出pdf文件如何?你有推荐的库吗?知道如何逃逸像分号这样的字符吗?
<div ng-controller="myCtrl">
    <button ng-click="exportData()">Export</button>
</div>
alasql("SELECT * INTO CSV('mydata.csv', {headers:true}) FROM ?",[$scope.mydata]);
var blob = new Blob([document.getElementById('exportable').innerHTML], {
type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8" }); 
saveAs(blob, "report.xls");
   exportAsExcel(tableId: string, fileName: string, linkElement: any) {



        var uri = 'data:application/vnd.ms-excel;base64,',
            template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
            base64 = function (s) {
                return window.btoa(decodeURI(encodeURIComponent(s)));
            },

            format = function (s, c) {
                return s.replace(/{(\w+)}/g, function (m, p) {
                    return c[p];
                });
            };
        // get the table data
        var table = document.getElementById(tableId);
        var ctx = {
            worksheet: fileName,
            table: table.innerHTML
        };
        // if browser is IE then save the file as blob, tested on IE10 and IE11
        var browser = window.navigator.appVersion;
        if ((browser.indexOf('Trident') !== -1 && browser.indexOf('rv:11') !== -1) ||
            (browser.indexOf('MSIE 10') !== -1)) {
            var builder = new MSBlobBuilder(); 
            builder.append(uri + format(template, ctx));
            var blob = builder.getBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'); 
            window.navigator.msSaveBlob(blob, fileName + '.xlsx'); 
        } else {
            var element = document.getElementById(linkElement);
            var a = document.createElement('a');
            a.href = uri + base64(format(template, ctx));
            a.target = '_blank';
            a.setAttribute('download', fileName + '.xlsx');
            document.body.appendChild(a);
            a.click();

        }
        toastr.success("Awesome!", "We've created an Excel report for you and you should get it as a download in your browser.");
    }
 <script type="text/javascript">
    var myAppModule = angular.module('myApp', []);
    myAppModule.controller('myCtrl', function ($scope) {
        $scope.exportData = function () {
            $('#customers').tableExport({ type: 'json', escape: 'false' });
        };
        $scope.items = [
            {
                "FirstName": "Prathap",
                "LastName": "Kudupu",
                "Address": "Near Anjana Beach"
            },
            {
                "FirstName": "Deepak",
                "LastName": "Dsouza",
                "Address": "Near Nariman Point"
            }
        ];

    });