导出带有阿拉伯字符的html表

时间:2017-04-12 13:03:07

标签: javascript jquery angularjs

我需要将带有阿拉伯数据的html表导出到xls,pdf

这是我在Plunker

中的代码

SO Snippet中的代码由于SO沙箱而失败

我需要一个角度js,jquery或javascript解决方案。



[{"code":"1","libelleAr":"الصنف :أ   الصنف الفرعي :أ1","libelleFr":"CAT : A /SCAT : A1","nbre":143211},{"code":"1","libelleAr":"الصنف :أ   الصنف الفرعي :أ1","libelleFr":"CAT : A /SCAT : A1","nbre":11513},{"code":"5","libelleAr":"الصنف ج","libelleFr":"Categorie: C","nbre":13153},{"code":"X","libelleAr":"غير مصنّفون","libelleFr":"Non renseignée","nbre":1201},{"code":"1","libelleAr":"العملة الوحدة 1","libelleFr":"Unite 1","nbre":12152},{"code":"3","libelleAr":"الصنف :أ   الصنف الفرعي :أ3","libelleFr":"CAT : A /SCAT : A3","nbre":24021},{"code":"2","libelleAr":"العملة الوحدة 3","libelleFr":"Unite 3","nbre":15111},{"code":"2","libelleAr":"العملة الوحدة 1","libelleFr":"Unite 1","nbre":43115},{"code":"4","libelleAr":"الصنف ب","libelleFr":"Categorie: B","nbre":51431},{"code":"1","libelleAr":"الصنف د","libelleFr":"Categorie: D","nbre":14151}]

<!DOCTYPE html>
<html>

<head>
  <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
  <script type="text/javascript">
    var myAppModule = angular.module('myApp', []);
    myAppModule.controller('myCtrl', function($scope, $http) {

      $http.get("par_categorie.json")
        .then(function(response) {
          $scope.items = response.data;
        });
      $scope.exportData = function() {
        $('#customers').tableExport({
          type: 'json',
          escape: 'false'
        });
      };

    });
  </script>
</head>

<body>
  <div ng-app="myApp" ng-controller="myCtrl">
    <div class="container">


      <br/>

      <button>XLS</button>
      <button>PDF</button>
      <button>PRINT</button> <br/>
      <br/>
      <table border="1" id="customers" class="table table-striped">
        <thead>
          <tr>
            <th>Code</th>
            <th>LibelleAr</th>
            <th>Nbre</th>

          </tr>
        </thead>
        <tbody>
          <tr ng-repeat="item in items">
            <td>{{item.code}}</td>
            <td>{{item.libelleAr}}</td>
            <td>{{item.nbre}}</td>
          </tr>
        </tbody>
      </table>
    </div>
  </div>
</body>

</html>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

我被这样使用了。请参阅下文或http://embed.plnkr.co/4LmtmuIv6RYM1JCW2Aaj/ ..  这可能会对你有所帮助。

&#13;
&#13;
    var app = angular.module('myApp', []);
    app.controller('myCtrl', function ($scope,$http,$timeout, Excel) {
    $scope.items = [{"code":"1","libelleAr":"الصنف :أ   الصنف الفرعي :أ1","libelleFr":"CAT : A /SCAT : A1","nbre":143211},{"code":"1","libelleAr":"الصنف :أ   الصنف الفرعي :أ1","libelleFr":"CAT : A /SCAT : A1","nbre":11513},{"code":"5","libelleAr":"الصنف ج","libelleFr":"Categorie: C","nbre":13153},{"code":"X","libelleAr":"غير مصنّفون","libelleFr":"Non renseignée","nbre":1201},{"code":"1","libelleAr":"العملة الوحدة 1","libelleFr":"Unite 1","nbre":12152},{"code":"3","libelleAr":"الصنف :أ   الصنف الفرعي :أ3","libelleFr":"CAT : A /SCAT : A3","nbre":24021},{"code":"2","libelleAr":"العملة الوحدة 3","libelleFr":"Unite 3","nbre":15111},{"code":"2","libelleAr":"العملة الوحدة 1","libelleFr":"Unite 1","nbre":43115},{"code":"4","libelleAr":"الصنف ب","libelleFr":"Categorie: B","nbre":51431},{"code":"1","libelleAr":"الصنف د","libelleFr":"Categorie: D","nbre":14151}];
       // $http.get("cate.json").then(function (response) {$scope.items = response.data;});
        $scope.exportData = function () {
            $('#customers').tableExport({ type: 'json', escape: 'false' });
        };
        
            $scope.exportToExcel=function(tableId){ // ex: '#my-table'
            var exportHref=Excel.tableToExcel(tableId,'WireWorkbenchDataExport');
            $timeout(function(){location.href=exportHref;},100); // trigger download
        }
        
        $scope.exportToPdf = function(){
            html2canvas(document.getElementById('customers'), {
                onrendered: function (canvas) {
                    var data = canvas.toDataURL();
                    var docDefinition = {content: [{
                            image: data,
                            width: 500,}]
                    };
 pdfMake.createPdf(docDefinition).download("example.pdf");
 // pdfMake.createPdf(docDefinition).download("test.pdf");
   //              pdfMake.createPdf(docDefinition).open();
                }
            });
        }
    });
    app.factory('Excel',function($window){
        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(unescape(encodeURIComponent(s)));},
        format=function(s,c){return s.replace(/{(\w+)}/g,function(m,p){return c[p];})};
        return {
            tableToExcel:function(tableId,worksheetName){
                var table=$(tableId),
                ctx={worksheet:worksheetName,table:table.html()},
                href=uri+base64(format(template,ctx));
                return href;
            }
        };
    });
&#13;
<!DOCTYPE html>
<html lang="ar">

<head>
    <meta>
    <script data-require="jquery@*" data-semver="2.1.4" src="https://code.jquery.com/jquery-2.1.4.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/pdfmake/0.1.22/pdfmake.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"></script>
    
    
</head>

<body>
    <div ng-app="myApp" ng-controller="myCtrl">
      {{arbi}}
      <div class="container">
         

        <br/>
        
        <button ng-click="exportToExcel('#customers')">XLS</button>
        <button ng-click="exportToPdf()">PDF</button>
        <button >PRINT</button> <br/>
        <br/>
        <table border="1" id="customers" class="table table-striped">
            <thead>
                <tr>
                    <th>Code</th>
                    <th>LibelleAr</th>
                    <th>Nbre</th>

                </tr>
            </thead>
            <tbody>
                <tr ng-repeat="item in items">
                    <td>{{item.code}}</td>
                    <td>{{item.libelleAr}}</td>
                    <td>{{item.nbre}}</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

</body>

</html>
&#13;
&#13;
&#13;