엑셀 내 보 내기 - 서버 에서 브 라 우 저 로 의 간단 한 처리
15502 단어 JavaAngularIonicJavascript
서버 에서 브 라 우 저 까지 의 간단 한 처 리 는 참고 하 시기 바 랍 니 다.
서버 에서 내 보 내기 기능 의 핵심 코드 를 정의 합 니 다.
자바 는 export 의 기능 함 수 를 정의 합 니 다. 다음은 핵심 코드 (인터페이스 중의 일부 처리 논리) 입 니 다.
@Override
public byte[] export(String startdate, String enddate, Integer type, String name,
HttpServletResponse response) {
// other logic omitted here ...
// set response args,it used for open download
response.reset();
response.setContentType("application/vnd.ms-excel;charset=utf-8");
try {
response.setHeader("Content-Disposition", "attachment;filename=" +
new String((name+ ".xls").getBytes(), "iso-8859-1"));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
ByteArrayOutputStream output = new ByteArrayOutputStream();
try {
workList.write(output); // write
} catch (IOException e) {
e.printStackTrace();
}
return output.toByteArray();
}
전단 처리
angular.module('yourNgApp')
.directive('sysExport', function ($http, $document) {
return {
templateUrl: "app/system/export/export.directive.html",
restrict: 'EA',
replace: true,
scope: {
item: '='
},
link: function (scope, element) {
//
function getExport(postData) {
// url
var url = '/api/course/export?startdate=' +
postData.startdate + '&enddate=' + postData.enddate +
'&type=' + postData.type + '&name=' + postData.name;
// responseType !
var finalPostData = {
url: url,
method: 'POST',
responseType: "arraybuffer",
headers: {'Content-type': 'application/json'}
};
$http(finalPostData)
.success(function (data) {
var blob, fileName, blobArgs;
blobArgs = {type: 'application/vnd.ms-excel application/x-excel'};
blob = new Blob([data], blobArgs);
var a = $document[0].createElement('a');
a.download = postData.name + '.xls';
a.href = URL.createObjectURL(blob);
a.click();
})
.error(function (e) {
console.log(e);
});
}
element.on('click', function () {
getExport(scope.item);
});
}
};
});
2) 방식 2: a 링크 를 통 해 직접 방문, [호환성 이 좋다]
예시:
<a href="/api/course/export?startdate={{cl.startdate}}&enddate={{cl.enddate}}&type={{cl.type}}&name={{cl.name}}" class="btn btn-success"> a>
넓히다
총결산
위 전단 에 사 용 된 것 은 모두 H5 고급 API 의 적용 성 이 높 지 않 지만 일부 문 제 를 임시로 해결 했다. 시도 로 만 사용 했다.) a 링크 를 통 해 요청 하고 서버 에서 파일 작업 을 직접 완성 했다. 클릭 한 후에 직접 다운로드 하고 호환성 이 좋 지만 큰 파일 의 전송 다운로드 에 적합 하지 않다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.