사용자가 Excel에서 자주 열리는 HTML로 생성 된 보고서가 있습니다. 우리는 콘텐츠 유형을 사용하여 충분히 간단하게 처리합니다. 그러나 최근에는 주름 팝업이 나타났습니다. 일부 보고서는 많은 자바 스크립트를 사용하여 동적 그룹화/정렬을 수행하며 사용자는이 "완성 된"버전의 보고서를 Excel로 다운로드하려고합니다. 나는 그것에 대해 작동하는 자바 스크립트 기능이 : 나는 IE가 window.btoa를 지원하지 않는 것으로 확인자바 스크립트를 통해 Excel에서 HTML 페이지 열기
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">';
template += '<head></head>';
template += '<body><table>{table}</table></body></html>';
var base64 = function(s) {
return window.btoa(unescape(encodeURIComponent(s)));
};
var format = function(s, c) {
return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; });
};
var ctx = {worksheet: name || 'Worksheet', table: daBody};
window.location.href = uri + base64(format(template, ctx));
을, 그래서 나는 것을 해결하지만, 지금은 Excel에서 데이터를 열려고 시도 할 다음과 같은 오류가 발생합니다 :
시스템 호출에 전달 된 데이터 영역이 너무 작습니다.
메시지에도 불구하고 URI가 너무 길어서 URI의 base64 문자열로 인해 발생한다고 생각합니다. (예전에는 IE가 매우 긴 URL을 허용하지 않으며이 URL이 연결되어 있다고 생각합니다.).
그래서 누구나 IE에서 사용할 수있는 대체 방법이 있습니까?
URL/I (특히 IE 사용시)의 실제 제한은 약 2k 자입니다. http://stackoverflow.com/questions/417142/what-is-the-maximum-length-of-a-url –
수정 ... 따라서 대체 전화가 필요합니다. 나는 ActiveX를 조사했지만, 다양한 웹 사용자에게 서비스를 제공하고 ActiveX를 허용하고 신뢰할 수있는 목록에 우리를 추가한다고 주장하고 있습니다. – GarrettMurphy
임시 해결책으로 DOM에 양식을 추가하고 POST를 사용하여 테이블 데이터를 서버를 통해 클라이언트로 보낼 수 있습니다. –