Heim >Web-Frontend >js-Tutorial >So verwenden Sie s-xlsx zum Importieren und Exportieren von Excel-Dateien (Teil 2)

So verwenden Sie s-xlsx zum Importieren und Exportieren von Excel-Dateien (Teil 2)

php中世界最好的语言
php中世界最好的语言Original
2018-03-12 14:37:373682Durchsuche

Dieses Mal zeige ich Ihnen, wie Sie s-xlsx zum Importieren und Exportieren von Excel-Dateien verwenden. Welche Vorsichtsmaßnahmen bei der Verwendung von s-xlsx zum Importieren und Exportieren von Excel-Dateien gelten . Werfen wir einen Blick darauf.

<!DOCTYPE html><html><head>
    <meta charset="UTF-8">
    <title></title>
    <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script></head><body>
    <input type="file" onchange="importf(this)" />
    <p id="demo"></p>
    <script>
        var rABS = false; //是否将文件读取为二进制字符串
        function importf(obj) {//导入
            if (!obj.files) { return; }            var f = obj.files[0];
            {                var reader = new FileReader();                var name = f.name;
                reader.onload = function (e) {                    var data = e.target.result;                    var wb;                    if (rABS) {
                        wb = XLSX.read(data, { type: &#39;binary&#39; });
                    } else {                        var arr = fixdata(data);
                        wb = XLSX.read(btoa(arr), { type: &#39;base64&#39; });
                    }                    document.getElementById("demo").innerHTML = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
                };                if (rABS) reader.readAsBinaryString(f);                else reader.readAsArrayBuffer(f);
            }
        }        function fixdata(data) {            var o = "", l = 0, w = 10240;            for (; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
            o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));            return o;
        }    </script></body></html>

2. Implementierung der Exportfunktion

Hinweis: Das Exportieren von Dateien in anderen Formaten kann zu verstümmelten Zeichen führen. Wenn Sie eine gute Lösung haben, hinterlassen Sie bitte eine Nachricht

<!DOCTYPE html><html><head>
    <meta charset="UTF-8">
    <title></title></head><body>
    <button onclick="downloadExl(jsono)">导出</button>
    <script src="http://oss.sheetjs.com/js-xlsx/xlsx.full.min.js"></script>
    <!--调用FileSaver saveAs函数可以实现文件下载-->
    <!--<script src="http://sheetjs.com/demos/Blob.js"></script>
    <script src="http://sheetjs.com/demos/FileSaver.js"></script>-->
    <script>
        //如果使用 FileSaver.js 就不要同时使用以下函数
        function saveAs(obj, fileName) {//当然可以自定义简单的下载文件实现方式 
            var tmpa = document.createElement("a");
            tmpa.download = fileName || "下载";
            tmpa.href = URL.createObjectURL(obj); //绑定a标签
            tmpa.click(); //模拟点击实现下载
            setTimeout(function () { //延时释放
                URL.revokeObjectURL(obj); //用URL.revokeObjectURL()来释放这个object URL
            }, 100);
        }        var jsono = [{ //测试数据
            "保质期临期预警(天)": "adventLifecycle",            "商品标题": "title",            "建议零售价": "defaultPrice",            "高(cm)": "height",            "商品描述": "Description",            "保质期禁售(天)": "lockupLifecycle",            "商品名称": "skuName",            "商品简介": "brief",            "宽(cm)": "width",            "阿达": "asdz",            "货号": "goodsNo",            "商品条码": "skuNo",            "商品品牌": "brand",            "净容积(cm^3)": "netVolume",            "是否保质期管理": "isShelfLifeMgmt",            "是否串号管理": "isSNMgmt",            "商品颜色": "color",            "尺码": "size",            "是否批次管理": "isBatchMgmt",            "商品编号": "skuCode",            "商品简称": "shortName",            "毛重(g)": "grossWeight",            "长(cm)": "length",            "英文名称": "englishName",            "净重(g)": "netWeight",            "商品分类": "categoryId",            "这里超过了": 1111.0,            "保质期(天)": "expDate"
        }];        const wopts = { bookType: &#39;xlsx&#39;, bookSST: false, type: &#39;binary&#39; };//这里的数据是用来定义导出的格式类型
        // const wopts = { bookType: &#39;csv&#39;, bookSST: false, type: &#39;binary&#39; };//ods格式
        // const wopts = { bookType: &#39;ods&#39;, bookSST: false, type: &#39;binary&#39; };//ods格式
        // const wopts = { bookType: &#39;xlsb&#39;, bookSST: false, type: &#39;binary&#39; };//xlsb格式
        // const wopts = { bookType: &#39;fods&#39;, bookSST: false, type: &#39;binary&#39; };//fods格式
        // const wopts = { bookType: &#39;biff2&#39;, bookSST: false, type: &#39;binary&#39; };//xls格式
        function downloadExl(data, type) {            const wb = { SheetNames: [&#39;Sheet1&#39;], Sheets: {}, Props: {} };
            wb.Sheets[&#39;Sheet1&#39;] = XLSX.utils.json_to_sheet(data);//通过json_to_sheet转成单页(Sheet)数据
            saveAs(new Blob([s2ab(XLSX.write(wb, wopts))], { type: "application/octet-stream" }), "这里是下载的文件名" + &#39;.&#39; + (wopts.bookType=="biff2"?"xls":wopts.bookType));
        }        function s2ab(s) {            if (typeof ArrayBuffer !== &#39;undefined&#39;) {                var buf = new ArrayBuffer(s.length);                var view = new Uint8Array(buf);                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;
            }
        }    </script></body></html>

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Verwandte Lektüre:

Upload von segmentierten Haltepunkten für Browserdateien

So verwenden Sie s-xlsx zum Importieren und Exportieren von Excel-Dateien (1)

Das obige ist der detaillierte Inhalt vonSo verwenden Sie s-xlsx zum Importieren und Exportieren von Excel-Dateien (Teil 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn