獲取excel檔案簡單版(vue寫法):
寫法:
通過篩選條件,提取二進位製流資料,驗證成功返回流資料,驗證失敗返回字典進行前端提示。
好處:1. 適合對外使用,後端報錯可以進行提示
2. 比較靈活,命名也可以是後端命名,這樣返回的檔案型別就多了~
前端js寫法:
# 通過狀態碼區分成功或失敗,200成功,其它都為失敗,把流資料轉換成json資料,json資料在反解,給使用者做提示
function# 使用的xmlhttprequest,使用過ajax但是儲存excel資料,開啟有問題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
; }}})
}
後端django寫法:
def# 關於excel內容,我是後端及時生成返回的,如果是乙個檔案,讀取之後,進行返回即可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資料
效果:
請求過程某處失敗:
請求正常:
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年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...