1. 程式人生 > 其它 >js匯出excel

js匯出excel

不能使用jquery的$.ajax(),$.axax不能請求下載,

使用原生ajax或模擬表單提交

原生ajax:

 

 

 

  var xhr = new XMLHttpRequest();
                xhr.open('POST', URL, true);
                xhr.responseType = 'arraybuffer';
                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
                xhr.onload = function (e) {
                    //var data = new Uint8Array(this.response);
                    var blob = new Blob([this.response], { type: 'application/vnd.ms-excel,charset=utf-8' });
                    let url = window.URL.createObjectURL(blob);
                        var a = document.createElement("a");
                            a.setAttribute("href", url)
                            a.download = '庫存帳查詢.xlsx';
                            document.body.appendChild(a);
                            a.click()
                            document.body.removeChild(a);
                };
                //xhr.onreadystatechange = function () {
                //    // 這步為判斷伺服器是否正確響應
                //    if (xhr.readyState == 4 && xhr.status == 200) {
                //        var blob = new Blob([xhr.response], { type: 'application/vnd.ms-excel,charset=utf-8' });
                        
                //        let url = window.URL.createObjectURL(blob);
                //        var a = document.createElement("a");
                //            a.setAttribute("href", url)
                //            a.download = '庫存帳查詢.xlsx';
                //            document.body.appendChild(a);
                //            a.click()
                //            document.body.removeChild(a);
                //    }
                //};
                xhr.send(引數);

  

 

模擬表單提交

function download (options) {
            var defaults = {
                method: "GET",
                url: "",
                param: []
            };
            var options = $.extend(defaults, options);
            if (options.url && options.param) {
                var
$form = $('<form action="' + options.url + '" method="' + (options.method || 'post') + '"></form>'); for (var key in options.param) { var $input = $('<input type="hidden" data-back="backjb" />').attr('name', key).val(options.param[key]); $form.append($input); } $form.appendTo(
'body').submit().remove(); }; }