angularjs 엑셀 다운로드

참조 오류: 엑셀은 k.$scope.exportToExcel (PhoneNotFoundCtrl.js:32)에서 각.js:10847에서 k.$eval (각도.js:12702) k.$apply (각.js:12800)에서 정의되지 않습니다. (angular.js:19141) HTMLButtonElement.m.event.dispatch (jquery-1.11.1.min.js:3) htmlButtonElement.r.handle (jquery-1.11.1.min.js:3) 참조 오류: `$` tableToExcel에서 정의되지 않음 http://localhost:10133/app/15WindowExample/exportdatafactory.js:20:13)에서 내보내기엑셀 (http://localhost:10133/app/15WindowExample/windowcontroller.js:26:11) 익명 함수 (http://localhost:10133/scripts/angular/angular.js:10835:7) 에서 익명 함수 (http://localhost:10133/scripts/angular/angular.js:19094:17) $eval $apply (http://localhost:10133/scripts/angular/angular.js:12673:9 http://localhost:10133/scripts/angular/angular.js:12771:11) 에서 익명 함수 (http://localhost:10133/scripts/angular/angular.js:12771:11) 에서 익명 함수 http://localhost:10133/scripts/angular/angular.js:2853:7 (http://localhost:10133/scripts/angular/angular.js:19093:15) 에서 익명 함수 (http://localhost:10133/scripts/angular/angular.js:19093:15) 에서 forEach (http://localhost:10133/scripts/angular/angular.js:325:9) eventHandler (http://localhost:10133/scripts/angular/angular.js:2852:5) 안녕하세요, 나는 또한 jquery-1.8.3.버전으로 크롬에서만이 작업을 얻었다. IE (10)에서 작동하지 않습니다. 이제 IE 브라우저에 대한 내보내기를 구현하기 위해 Excel 개체 만들기의 전통적인 접근 방식을 적용해야합니다. 또는 IE에서 수행하는 더 나은 방법이 있습니다. 사전에 // 공장 MyApp.factory (`엑셀`, [“$window”, 함수 ($window) { var uri = `데이터:응용/vnd.ms-excel;base64,`, 템플릿 = `<메타 http-equiv="콘텐츠 유형" 콘텐츠="텍스트/html; charset=UTF-8"<!–[if gte mso 9].].].].com :엑셀워크북<x:엑셀워크시트 {워크시트}<x:워크시트옵션<:디스플레이그리드라인/</x:워크시트옵션</x:엑셀워크시트</x:엑셀워크시트</x:엑셀워크시트</x:엑셀워크시트</x:엑셀워크시트 </x:엑셀워크시트<—–

{테이블}

base64 = 함수 (들) { 반환 $window.btoa (uncodeURIComponent(encodeURIComponent(들)); }, 형식 = 함수 (s, c) { 반환 s.replace (/{(w+)}/g, 함수 (m, p) { 반환 c[p]; }; }; return { tableToExcel: 함수 (tableId, 워크 시트이름, isBase64) { var 테이블 = document.querySelector (tableId); var ctx = { 워크 시트: 워크 시트 이름, 테이블.innerHTML }; var href = “”; 만약 (isBase64) { href = uri + base64 (형식(템플릿, ctx)); } {href = uri + format(템플릿, ctx); } 반환 href; } }; }]); 컨트롤러 MyApp.controller(`마이 컨트롤러`, [“$scope”, “$timeout”, “엑셀”, 기능 ($scope, $timeout, 엑셀) { {$scope.exportToExcel = 기능 (tableId) { var 브라우저 = var useBlobBuilder = false; // IE, 에지 경우 (브라우저.indexof(`Trident`) !==1 & 브라우저.indexof(`rv:11`) (browser.indexOf(`MSIE 10`) !==-1) || (문서.문서모드 || /Edge/.test(브라우저))) { useBlobBuilder = true; $scope.exportHref = Excel.tableToExcel(테이블Id, `시트 이름`, false); } else { //FF, 크롬 useBlobBuilder = 거짓; $scope.exportHref = Excel.tableToExcel (tableId, `시트 이름`, true); } $timeout (함수) { var 파일 이름 = “test.xls”; 만약 (useBlobBuilder) { // IE, Edge var 빌더 = 새 창. MSBlobBuilder (); builder.append($scope.exportHref); var Blob = builder.getBlob(`데이터:응용 프로그램/vnd.ms-excel`); window.navigator.msSaveOrOpenBlob (blob, 파일 이름); } 다른 { / / FF, 크롬 바 링크 = document.createElement (`a`); link.download = 파일 이름; link.href = $scope.exportHref; 만약 (document.body!= null) { document.body.appendChild (링크); } link.click (; } } } } } } }]); 당신은 단지 한 가지를 할 필요가있다.