ajax請求下載Execl表

来源:https://www.cnblogs.com/houqx/archive/2018/12/12/10106562.html
-Advertisement-
Play Games

Execl表是經常要用到的存放二位數據的表格,Java也可以直接操作Execl表,經常用到的方式就是jxl和poi。 在這次項目中,我用到的poi往Execl中寫數據,剛開始設計的是前端發送一個ajax請求,後端響應後再瀏覽器下載Execl表。 以上代碼是最開始的設計思路,可是每次請求返回後,瀏覽器 ...


Execl表是經常要用到的存放二位數據的表格,Java也可以直接操作Execl表,經常用到的方式就是jxl和poi。

在這次項目中,我用到的poi往Execl中寫數據,剛開始設計的是前端發送一個ajax請求,後端響應後再瀏覽器下載Execl表。

function exportGjOil(){
        $.ajax({
            type: 'post',
            url: '/sysUser/selectAuditType',
            data: {
                id:[[${id}]],
            },
            dataType: 'json',
            success: function (data) {
                if(data==2 ||data==4){
                    $.ajax({
                        type: 'get',
              //向後臺發送請求,後臺往execl中寫數據,並以流的形式返回前端 url:
'/materialGjOilDetail/downloadEcexl', data: { year:[[${year}]], companyId:[[${companyId}]] }, // dataType: 'json', success: function (data) { $.infoMsg("文件已下載至D:\校驗結果"); }, error: function (data) { $.infoMsg("下載失敗,請重新下載"); } }); //window.location.href = "/materialGjOilDetail/downloadEcexl?year="+[[${year}]]+"&companyId"+[[${companyId}]]; } else{ $.infoMsg("該公司沒有燃油公交車輛信息"); } } });

以上代碼是最開始的設計思路,可是每次請求返回後,瀏覽器控制台的response都是亂碼,這是因為ajax請求只是個“字元型”的請求,即請求的內容是以文本類型存放的,JQuery的ajax函數的返回類型只有xml、text、json、html等類型,沒有“流”類型,。文件的下載是以二進位形式進行的,所以ajax無法處理二進位流的response來下載文件。所以我們要實現ajax下載,不能夠使用相應的ajax函數進行文件下載。

最後將ajax的請求改為用<a>標簽來實現就可以了。或者用window.location.href="URL"也可以。如果一定要用ajax,可以用就是生成一個form,用這個form提交參數,並返回“流”類型的數據。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1. 需求 將多個小文件合併成一個SequenceFile文件(SequenceFile文件是Hadoop用來存儲二進位形式的key-value對的文件格式),SequenceFile裡面存儲著多個文件,存儲的形式為文件路徑+名稱為key,文件內容為value 三個小文件 one.txt two.t ...
  • 客戶現場反饋,top的檢查結果中,一個CPU的占用一直是100%。實際上現場有4個CPU,而且這個伺服器是mysql專屬伺服器。 我的第一反應是io_thread一類的參數設置有問題,檢查以後發現read和write的thread設置都是4,這和CPU數一致,因此可以斷定這並不是單顆CPU占用過高的 ...
  • 臨時表概念 臨時表就是用來暫時保存臨時數據(亦或叫中間數據)的一個資料庫對象,它和普通表有些類似,然而又有很大區別。它只能存儲在臨時表空間,而非用戶的表空間。ORACLE臨時表是會話或事務級別的,只對當前會話或事務可見。每個會話只能查看和修改自己的數據。 臨時表語法 臨時表分類 ORACLE臨時表有 ...
  • 對於已經很熟悉T-SQL的讀者,或者對於較專業的DBA來說,邏輯的增刪改查,或者較複雜的SQL語句,都是非常簡單的,不存在任何挑戰,不值得一提,那麼,SQL的哪些方面是他們的挑戰 或者軟肋呢? 那就是sql優化。然而,要向成為一個好的Sql優化高手,首先要做的一件事無疑就是瞭解sql語句在SQL S ...
  • 創建不可重覆讀註意事項 語法:set transaction isolation level repeatable read。 指定語句不能讀取已由其他事務修改但尚未提交的行,並且指定,其他任何事務都不能在當前事務完成之前修改由當前事務讀取的數據。 對事務中的每個語句所讀取的全部數據都設置了共用鎖, ...
  • 剛開始學C#時候的筆記,只是些基礎的語句如有錯誤請批評指正,謝謝,(使用SqlServer2012以上) 一. 資料庫概述 SQI全稱 structrued Query Language 1、數據:能被電腦識別存儲處理的符號的集合。包括:數字、符號、圖片、聲音、視頻。 《英文全稱Data》 2、數 ...
  • 1.NSTimer 存在一定的誤差,不管是一次性的還是周期性的timer得實際觸發事件的時間,都會與所加入的runloop和runloopMode有關,如果此runloop正在執行一個連續性的運算,timer就會被延時觸發。 2.CADisplayLink CADisplayLink是一個能讓我們以 ...
  • dns,domain name system,功能變數名稱系統,把功能變數名稱轉化成ip的系統。 先來看幾上工具的使用,這幾個工具都能把功能變數名稱轉換成ip,都使用了dns。dns就好比資料庫,通過對它的查詢,能給url找到對應的ip。 ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...