国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

json轉(zhuǎn)換Excel

KnewOne / 3455人閱讀

純JS將json數(shù)據(jù)轉(zhuǎn)成Excel并導(dǎo)出
采用JS-XLSX這個(gè)簡(jiǎn)單的Javascript庫(kù)來(lái)讀取和寫(xiě)入Excel表格文件,并且能夠支持最新版本的XLSX文件
一、node 環(huán)境 安裝XLSX庫(kù)
1、with npm
    $ npm install xlsx
2、node 讀取文件
    if(typeof require !== "undefuned")
    var XLSX = require("XLSX")
二、直接引入XLSX庫(kù)
三、導(dǎo)入JSON數(shù)據(jù)


var dataSource = null;
var fileName = "";

//1、importDataSource() 方法用來(lái)獲取json數(shù)據(jù)
function importDataSource(obj) {

    //2、obj.files[0]獲得onchange文件,name獲得文件名作為Excel的文件名
    fileName = obj.files[0].name.split(".")[0];
    
    //3、創(chuàng)建FileReader對(duì)象,將文件內(nèi)容讀入內(nèi)存,通過(guò)一些api接口,可以在主線程中訪問(wèn)本地文件
    var reader = new FileReader();
    
    //4、readAsText(file) 異步按字符讀取文件內(nèi)容,結(jié)果用字符串形式表示
    reader.readAsText(obj.files[0]);
    
    var that = this
    
    //5、onload事件,當(dāng)讀取操作成功完成時(shí)調(diào)用
    reader.onload = function() {
    
        //讀取完畢后輸出結(jié)果 為字符串 此時(shí)需要轉(zhuǎn)成json對(duì)象
        that.dataSource = JSON.parse(this.result)
    }
}
FileReader()對(duì)象
方法:
1、abort():void 終止文件讀取操作
2、readAsArrayBuffer(file):void 異步按字節(jié)讀取文件內(nèi)容,結(jié)果用ArrayBuffer對(duì)象表示(二進(jìn)制緩存區(qū)) 將二進(jìn)制數(shù)據(jù)存放在其中,大小與源文件一樣,通過(guò)此方式,可以直接在網(wǎng)絡(luò)中傳輸二進(jìn)制內(nèi)容
3、readAsBinaryString(file):void 異步按字節(jié)讀取文件內(nèi)容,結(jié)果為文件的二進(jìn)制串 與上個(gè)方法不同的是 readAsBinaryString讀取后的內(nèi)容被編碼為字符,大小會(huì)受到影響,不適合直接傳輸,不推薦使用
4、readAsDataURL(file):void 異步讀取文件內(nèi)容并進(jìn)行base64編碼后輸出,結(jié)果用data:url的字符串形式表示
事件:
1、onabort 當(dāng)讀取操作被中止時(shí)調(diào)用
2、onerror 當(dāng)讀取操作發(fā)生錯(cuò)誤時(shí)調(diào)用
3、onload 當(dāng)讀取操作成功完成時(shí)調(diào)用
4、onloadend 當(dāng)讀取操作完成時(shí)調(diào)用,不管是成功還是失敗
5、onloadstart 當(dāng)讀取操作將要開(kāi)始之前調(diào)用
6、onprogress 在讀取數(shù)據(jù)過(guò)程中周期性調(diào)用
四、將json數(shù)據(jù) 導(dǎo)出Excel
var wopts = {
        bookType: "xlsx",
        bookSST: false, 
        type: "binary"
    };
var workBook = {
        SheetNames: ["Sheet1"],
        Sheets: {},
        Props: {}
    };
    
function json2Excel() {

    //1、XLSX.utils.json_to_sheet(data) 接收一個(gè)對(duì)象數(shù)組并返回一個(gè)基于對(duì)象關(guān)鍵字自動(dòng)生成的“標(biāo)題”的工作表,默認(rèn)的列順序由使用Object.keys的字段的第一次出現(xiàn)確定
    //2、將數(shù)據(jù)放入對(duì)象workBook的Sheets中等待輸出
    workBook.Sheets["Sheet1"] = XLSX.utils.json_to_sheet(dataSource)
    
    //3、XLSX.write() 開(kāi)始編寫(xiě)Excel表格
    //4、changeData() 將數(shù)據(jù)處理成需要輸出的格式
    saveAs(new Blob([changeData(XLSX.write(workBook, wopts))], {type: "application/octet-stream"}))
}

function changeData(s) {

    //如果存在ArrayBuffer對(duì)象(es6) 最好采用該對(duì)象
    if (typeof ArrayBuffer !== "undefined") {
        
        //1、創(chuàng)建一個(gè)字節(jié)長(zhǎng)度為s.length的內(nèi)存區(qū)域
        var buf = new ArrayBuffer(s.length);
        
        //2、創(chuàng)建一個(gè)指向buf的Unit8視圖,開(kāi)始于字節(jié)0,直到緩沖區(qū)的末尾
        var view = new Uint8Array(buf);
        
        //3、返回指定位置的字符的Unicode編碼
        for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
        return buf;

    } else {
        var buf = new Array(s.length);
        for (var i = 0; i != s.length; ++i) buf[i] = s.charCodeAt(i) & 0xFF;
        return buf;
    }
}
  
XLSX.utils 
1、XLSX.utils.table_to_sheet 我們常用的還有這個(gè) 將table數(shù)據(jù)轉(zhuǎn)成Excel表格,需要一個(gè)表DOM元素并返回一個(gè)類似于輸入表的工作表。 數(shù)字被解析。 所有其他數(shù)據(jù)將作為字符串存儲(chǔ)。
2、Uint8Array 8位無(wú)符號(hào)整數(shù),長(zhǎng)度1個(gè)字節(jié)
3、ArrayBuffer是一塊內(nèi)存,比如var buf = new ArrayBuffer(1024), 就等于開(kāi)辟了一塊1kb大小的內(nèi)存,但是不能通過(guò)buf[0]=12,來(lái)進(jìn)行賦值,如果想操作內(nèi)存塊中的數(shù)據(jù),需要通過(guò)var init8 = new Int8Array(buf)然后通過(guò)int8[0] = 12來(lái)操作
4、如果你從XHR、file API、canvas等讀取到一大串字節(jié)流,采用ArrayBuffer比較好,會(huì)配合一些api來(lái)增強(qiáng)二進(jìn)制的處理能力
5、ArrayBuffer作為內(nèi)存區(qū)域,可以存放多種類型的數(shù)據(jù),不同的數(shù)據(jù)有不同的存儲(chǔ)方式,Uint8Array就是其中一種,8表示這種數(shù)據(jù)類型占據(jù)的字節(jié)數(shù)。這里使用8來(lái)轉(zhuǎn)換是因?yàn)閿?shù)據(jù)類型最小占1個(gè)字節(jié),可以存儲(chǔ)字母、數(shù)字、漢字、字符等
6、s.charCodeAt(i) & 0xFF:&0xff這個(gè)是考慮到計(jì)算機(jī)內(nèi)的存儲(chǔ)都是利用二進(jìn)制的補(bǔ)碼進(jìn)行存儲(chǔ)的。對(duì)于正數(shù)(00000001),原碼來(lái)說(shuō),首位表示符號(hào)位,反碼 補(bǔ)碼都是本身。對(duì)于負(fù)數(shù)(10000001),原碼來(lái)說(shuō),反碼是對(duì)原碼除了符號(hào)位之外做取反運(yùn)算,即(11111110),補(bǔ)碼是對(duì)反碼作+1運(yùn)算即(11111111),這樣做其實(shí)就是想保持二進(jìn)制的補(bǔ)碼的一致性 (詳解:https://www.cnblogs.com/think...
五、將文件輸出并下載
function saveAs(obj, fileName) {//當(dāng)然可以自定義簡(jiǎn)單的下載文件實(shí)現(xiàn)方式 

    var tmpa = document.createElement("a");

    tmpa.download = fileName || "下載";
    tmpa.href = URL.createObjectURL(obj); //綁定a標(biāo)簽
    tmpa.click(); //模擬點(diǎn)擊實(shí)現(xiàn)下載

    setTimeout(function () { //延時(shí)釋放
        URL.revokeObjectURL(obj); //用URL.revokeObjectURL()來(lái)釋放這個(gè)object URL
    }, 100);

}
模擬下載 a標(biāo)簽添加download屬性

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/94050.html

相關(guān)文章

  • 分享一個(gè)免費(fèi)的在線表格轉(zhuǎn)換工具 - TableConvert

    摘要:是一個(gè)可以在線轉(zhuǎn)換表格的工具,支持表格表格和表格,并且還內(nèi)嵌了一個(gè)表格編輯器,像微軟的一樣編輯,使用非常方便。拿到對(duì)應(yīng)表格的后,可以直接在文檔中使用該文本。 showImg(https://segmentfault.com/img/bVbwJCE?w=1200&h=674); TableConvert 是一個(gè)可以在線轉(zhuǎn)換表格的工具,支持 Markdown 表格、CSV、JSON、XML...

    鄒強(qiáng) 評(píng)論0 收藏0
  • python+requests+Excel+Jenkins接口自動(dòng)化

    摘要:總結(jié)大部分人做接口自動(dòng)化的流程后,發(fā)現(xiàn)基本上都是做接口請(qǐng)求用來(lái)存儲(chǔ)用例生成測(cè)試報(bào)告完成定時(shí)任務(wù)。其實(shí)在完成這個(gè)流程的過(guò)程中,代碼編寫(xiě)只占用了一小部分的時(shí)間,大部分的時(shí)間都浪費(fèi)在搭建環(huán)境和用例編寫(xiě)上。可以通過(guò)這個(gè)方式去轉(zhuǎn)換一些有問(wèn)題的。 總結(jié)大部分人做接口自動(dòng)化的流程后,發(fā)現(xiàn)基本上都是:python + requests做接口請(qǐng)求;Excel用來(lái)存儲(chǔ)用例;HTMLTestRunner生成...

    ashe 評(píng)論0 收藏0
  • 如何將Excel文件解析為json格式

    摘要:最近工作中遇到一個(gè)需求,大致需求就是將文件在導(dǎo)入時(shí)解析為格式轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)再傳輸給后臺(tái)。先介紹幾個(gè)基本概念對(duì)象,指的是整份文檔。對(duì)象,指的是文檔中的表。廢話不多說(shuō)直接上這里演示下網(wǎng)頁(yè)中使用共有種讀取方法將文件讀取為。 最近工作中遇到一個(gè)需求,大致需求就是將Excel文件在導(dǎo)入時(shí)解析為json格式轉(zhuǎn)換數(shù)據(jù)結(jié)構(gòu)再傳輸給后臺(tái)。這方面的庫(kù)比較少,比較主流的是js-xlsx,官網(wǎng)地址為sheetj...

    andycall 評(píng)論0 收藏0
  • 前端實(shí)現(xiàn)Excel導(dǎo)入和導(dǎo)出功能

    摘要:介紹最近項(xiàng)目中讓實(shí)現(xiàn)一個(gè)導(dǎo)入導(dǎo)出的功能,查找了一些插件后發(fā)現(xiàn)這個(gè)插件,所以就嘗試使用了一下,這里將使用方法和遇到的問(wèn)題簡(jiǎn)單記錄一下。 介紹 最近項(xiàng)目中讓實(shí)現(xiàn)一個(gè)導(dǎo)入導(dǎo)出Excel的功能,查找了一些插件后發(fā)現(xiàn)js-xlsx這個(gè)插件,所以就嘗試使用了一下,這里將使用方法和遇到的問(wèn)題簡(jiǎn)單記錄一下。 SheetJS js-xlsx 是一款能夠讀寫(xiě)多種格式表格的插件,瀏覽器支持良好,并且能在多個(gè)...

    Amio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<