Home > Web Front-end > JS Tutorial > How to use s-xlsx to import and export Excel files (Part 2)

How to use s-xlsx to import and export Excel files (Part 2)

php中世界最好的语言
Release: 2018-03-12 14:37:37
Original
3673 people have browsed it

This time I will show you how to use s-xlsx to import and export Excel files, and how to use s-xlsx to import and export Excel files. What are the precautions?The following is a practical case, let's come together take a look.

<!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>
Copy after login

2. Implementation of the export function

Note: Exporting files in other formats may cause garbled characters. If you have a good solution, please leave a message

<!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>
Copy after login

I believe you have mastered the method after reading the case in this article. For more exciting information, please pay attention to other related articles on the php Chinese website!

Related reading:

Browser file segmented breakpoint upload

How to use s-xlsx to import Excel files and export (1)

The above is the detailed content of How to use s-xlsx to import and export Excel files (Part 2). For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template