ホームページ > 記事 > ウェブフロントエンド > angularjs で Excel インスタンス共有をエクスポートする方法
この記事では主に angularjs で Excel インスタンスをエクスポートする方法について説明します。お役に立てれば幸いです。
angularjs 1.x の Excel エクスポート方法には、一般的に使用される方法が 2 つあります
1. テーブルを xls に直接エクスポートします
古いバージョンと互換性を持たせるためにサービスに
homeServiceMoudule.factory('Excel',['$window', '$sce','ConfigService', '$localStorage',function($window, $sce, ConfigService,$localStorage){ var uri='data:application/vnd.ms-excel;base64,'; var 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>'; var base64=function(s){return window.btoa(window.unescape(encodeURIComponent(s)));}; var format=function(s,c){return s.replace(/{(\w+)}/g,function(m,p){return c[p];});}; return { tableToExcel:function(tableId,worksheetName){ var table=window.$(tableId), ctx={worksheet:worksheetName,table:table.html()}, href=uri+base64(format(template,ctx)); return href; } }; }]);
data:application/vnd.ms-excel
を追加し、エクスポートされた xls 2003年です。
次のように変更した場合:
data:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
2007 xlsx.にエクスポート
コントローラーに「Excel」を導入します
次に、呼び出し
$scope.exportToExcel=function(tableId){ var exportHref=Excel.tableToExcel(tableId, 'worksheetName'); $timeout(function(){location.href=exportHref;},500); };
htmlを記述してエクスポートボタンを追加します
<button class="btn btn-link" style="float:right" ng-click="exportToExcel('#tableExcel')"> <span class="glyphicon glyphicon-share">导出Excel</span> </button>
テーブルタグを忘れずに追加してくださいid="tableExcel"
注:
1. エクスポートされるファイル名はランダムであり、Excel によって日付が付けられる場合があるので注意する必要があります
2. , データ行数に関するバグが発生しました。1,600 行を超えるとエクスポートに失敗し、空白のページにジャンプします。これは Firefox では正常です。
2. データを直接エクスポートする
2 つのツールを導入する必要があります:
xlsx.core.min.js と alasql.js をページに導入します
使用例: 2007 xslx を使用してデータを直接エクスポートします
コントローラーに論理呼び出しを記述します
//导出为excel $scope.exportToExcel=function( ){ // ex: '#my-table' var excelArrs = getExcelData(); alasql.promise('SELECT * INTO XLSX("fileName' + '.xlsx",{headers:true}) FROM ?',[excelArrs]) .then(function (data) { if(data == 1){ $timeout(function(){ console.log('数据导出成功!'); }) } }); }; //组装ecxel数据 function getExcelData() { var var arr =[]; var columns = 30; angular.forEach(dateList, function(data, index, datas) { var newObj = { column1:data.column1, column2:data.column2 }; var column = 0; if(data.hasOwnProperty('minList')) { var minList = data.minList; if(minList != null && minList.length > 0){ angular.forEach(minList, function(dataM, indexM, datasM) { if(dataM){ if(dataM.value){ column++; newObj["value"+indexM] = dataM.value; if(dataM.predict) newObj["date"+indexM] = dataM.date; } } }); } } for(;column < columns ; column++){ newObj["value"+column] = ""; newObj["date"+column] = ""; } arr.push(newObj); }); return arr; }
html に呼び出しボタンを追加します
<button class="btn btn-link" ng-click="exportToExcel()"> <span class="glyphicon glyphicon-share">导出Excel</span> </button>
注
1. 最初の要素に属性が 2 つしかない場合は、エクスポートされたデータ配列の最初の要素の属性によって決まります。後続の配列要素は、属性値がいくつあってもエクスポートされません。すべての属性には最初の要素を入力する必要があります。
2. エクスポートファイル名は指定できますが、テーブル名は指定できません。
関連する推奨事項:
Excel で HTML コンテンツ ファイルをエクスポートする php メソッド
php はネイティブ メソッドを使用して Excel インスタンスの共有をエクスポート
以上がangularjs で Excel インスタンス共有をエクスポートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。