Rumah >hujung hadapan web >tutorial js >如何使用js-xlsx之单元格样式

如何使用js-xlsx之单元格样式

php中世界最好的语言
php中世界最好的语言asal
2018-03-12 15:05:3110862semak imbas

这次给大家带来如何使用js-xlsx之单元格样式,使用js-xlsx之单元格样式的注意事项有哪些,下面就是实战案例,一起来看一下。

下载xlsx-style

npm install xlsx-style

xlsx-style核心模块 在  你安装路径\node_modules\xlsx-style\dist

2.示例代码

复制出 文件xlsx.full.min.js

编写示例代码:

<!DOCTYPE html><html><head>
    <meta charset="UTF-8">
    <title>示例</title></head><body>
    <script src="./xlsx.full.min.js"></script>
    <script>
        function saveAs(obj, fileName) {            var tmpa = document.createElement("a");
            tmpa.download = fileName || "下载";
            tmpa.href = URL.createObjectURL(obj);
            tmpa.click();
            setTimeout(function () {
                URL.revokeObjectURL(obj);
            }, 100);
        }        var jsono = [{            "id": 1, "合并的列头1": "数据11", "合并的列头2": "数据12", "合并的列头3": "数据13", "合并的列头4": "数据14",
        }, {            "id": 2, "合并的列头1": "数据21", "合并的列头2": "数据22", "合并的列头3": "数据23", "合并的列头4": "数据24",
        }];        const wopts = { bookType: &#39;xlsx&#39;, bookSST: true, type: &#39;binary&#39;, cellStyles: true };        function downloadExl(json, type) {            var tmpdata = json[0];
            json.unshift({});            var keyMap = []; //获取keys
            for (var k in tmpdata) {
                keyMap.push(k);
                json[0][k] = k;
            }            var tmpdata = [];//用来保存转换好的json 
            json.map((v, i) => keyMap.map((k, j) => Object.assign({}, {                v: v[k],                position: (j > 25 ? getCharCol(j) : String.fromCharCode(65 + j)) + (i + 1)
            }))).reduce((prev, next) => prev.concat(next)).forEach((v, i) => tmpdata[v.position] = {                v: v.v
            });            var outputPos = Object.keys(tmpdata); //设置区域,比如表格从A1到D10
            tmpdata["B1"].s = { font: { sz: 14, bold: true, color: { rgb: "FFFFAA00" } }, fill: { bgColor: { indexed: 64 }, fgColor: { rgb: "FFFF00" } } };//<====设置xlsx单元格样式
            tmpdata["!merges"] = [{                s: { c: 1, r: 0 },                e: { c: 4, r: 0 }
            }];//<====合并单元格 
            var tmpWB = {                SheetNames: [&#39;mySheet&#39;], //保存的表标题
                Sheets: {                    &#39;mySheet&#39;: Object.assign({},
                        tmpdata, //内容
                        {                            &#39;!ref&#39;: outputPos[0] + &#39;:&#39; + outputPos[outputPos.length - 1] //设置填充区域
                        })
                }
            };
            tmpDown = new Blob([s2ab(XLSX.write(tmpWB,
                { bookType: (type == undefined ? &#39;xlsx&#39; : type), bookSST: false, type: &#39;binary&#39; }//这里的数据是用来定义导出的格式类型
            ))], {                    type: ""
                });
            saveAs(tmpDown, "这里是下载的文件名" + &#39;.&#39; + (wopts.bookType == "biff2" ? "xls" : wopts.bookType));
        }        function getCharCol(n) {            let temCol = &#39;&#39;,
                s = &#39;&#39;,
                m = 0
            while (n > 0) {
                m = n % 26 + 1
                s = String.fromCharCode(m + 64) + s
                n = (n - m) / 26
            }            return s
        }        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>
    <button onclick="downloadExl(jsono)">导出</button></body></html>

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

相关阅读:

如何使用canvas来制作好用的涂鸦画板

如何使用s-xlsx实现Excel 文件导入和导出(下)

Atas ialah kandungan terperinci 如何使用js-xlsx之单元格样式. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn