2017-01-21 4 views
-1

JExcelApi lib를 사용하여 Excel 형식으로 데이터를 내보내는 샘플 프로젝트를 만들었습니다. 프로젝트의 앵귤러 2 프런트 엔드와 스프링 mvc (나머지 API) 백엔드가 있습니다. 내가 바람둥이에 백엔드를 배포하고 브라우저를 통해 요청을하면 파일을 올바르게 엑셀로 내보낼 수 있습니다.하지만 각도 2 (타이프 스크립트)를 사용하여 동일한 http 전화를 걸면 엑셀 파일에 내 API의 URL을 쓰고 파일이 손상됨을 보여줍니다 .Angular 2 Excel 내보내기가 작동하지 않습니다.

프로젝트는 GitHub의 위치 다음에 있습니다

NG2 Excel Export demo

누군가가 내 서비스 또는 app.component.ts 파일에 어떤 문제가 있는지 말해 주시겠습니까? 여기

내가 문제

downloadExcel(){ 
console.log("Downloading excel from server....") 
this.fileService.downloadFile() 
    .subscribe(data => window.open(window.URL.createObjectURL(data)), 
     error => console.log("Error downloading the file."), 
     () => console.log('Completed file download.')); 

}

여기에 데이터를 반환하는 서비스 클래스를 일으키는 생각 app.component.ts의 코드베이스이다

downloadFile(){ 
    let url = "http://localhost:9999/api/download"; 
    var headers = new Headers(); 
    headers.append('responseType', 'arraybuffer'); 
    return this._http.get(url) 
     .map(res => new Blob([res],{ type: 'application/vnd.ms-excel' })) 
     .catch((error : any) => Observable.throw(error)); 
} 
+0

누구도 전체 저장소를 통해 버그를 조사하지 않습니다. 구체적인 문제가 무엇인지, 정확히 ** 문제가있는 곳을 찾아 내야 ** 할 수 있습니다 ** –

+0

죄송합니다. 원래 의견에 문제가 있다고 생각되는 코드 스 니펫을 업데이트했습니다. 나도 responsType Blob을 시도했지만 여전히 운이 없다. – user509755

답변

0

누군가이 문제가 발생한 경우를 대비하여 FileSaver.js로 문제를 해결했습니다. 위의 github 프로젝트를보세요

0

대신 window.location.assign(link);을 사용하는 것이 더 좋습니다.

관련 문제