匯出功能實現,js獲取二進位製流資料儲存

2022-02-17 09:10:41 字數 2616 閱讀 8401

獲取excel檔案簡單版(vue寫法):

寫法:

通過篩選條件,提取二進位製流資料,驗證成功返回流資料,驗證失敗返回字典進行前端提示。

好處:1. 適合對外使用,後端報錯可以進行提示

2. 比較靈活,命名也可以是後端命名,這樣返回的檔案型別就多了~ 

前端js寫法:

# 通過狀態碼區分成功或失敗,200成功,其它都為失敗,把流資料轉換成json資料,json資料在反解,給使用者做提示

function

extract_btn_click();

$('#extract_form input').each(

function (i,v)

);var begin_time =data.begin_time;

var end_time =data.end_time;

delete

data.begin_time;

delete

data.end_time;

data["begindate"] = begin_time.split('t')[0];

data["begintime"] = begin_time.split('t')[1] + ':00';

data["enddate"] = end_time.split('t')[0];

data["endtime"] = end_time.split('t')[1] + ':00';

//儲存的檔名

var file_name = `$-$-$至$`;

//轉換成json資料傳送至後端

data =json.stringify(data);

//提示

alert(`開始提取 $ pos資料.`);

//獲取報表二進位制資料

xhr.responsetype = 'blob'; // 重點

xhr.send(data);

//傳輸完畢的**

xhr.onload = function

() .xls`;

a.href =obj;

a.click();

// a.onload = function

(); }

else

; }}})

}

# 使用的xmlhttprequest,使用過ajax但是儲存excel資料,開啟有問題

後端django寫法:

def

report_extract(req):

opt = req.get.get('

opt'

)

#查詢需要的資料

data =json.loads(req.body)

#print(data)

#不同型別進行不同操作

if opt == '

pos'

: obj =business_report.main(data)

flag, content =obj.start()

ifnot

flag:

#報錯,返回乙個字典,前端進行提示

%s店pos表提取完畢!

" % data["

storefront_name"])

#直接返回二進位制excel資料

# 關於excel內容,我是後端及時生成返回的,如果是乙個檔案,讀取之後,進行返回即可

效果:

請求過程某處失敗:

請求正常:

python寫入excel的文件:

# 用的xlwt模組

Buffered流 二進位制

bufferedreader類是reader類的子類 bufferedreader類帶有緩衝區按行讀取內容的readline 方法 reader類常用方法 int read int read byte c read char c,int off,int len void close 子類buffer...

php讀取二進位制 php讀取二進位製流

將php資料轉換為二進位制資料 string pack string format mixed args mixed 將二進位制資料轉換為php資料 array unpack string format,string data format a nul padded string a nul 字串填...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...