zoukankan      html  css  js  c++  java
  • 使用javascript纯前端导出excel

    前言(感谢技术的分享者)

    参考博客地址
    github地址
    由SheetJS出品的js-xlsx是一款非常方便的只需要纯JS即可读取和导出excel的工具库,功能强大,支持格式众多,支持xls、xlsx、ods(一种OpenOffice专有表格文件格式)等十几种格式。

    demo(上面参考博客写的很清楚,只给一个我的demo)

    <script type="text/javascript" src="xlsx.core.min.js"></script>
    <table id="_searchTable" border="1" bordercolor="#d9edf7" style=" 100%;">
    </table>
    <button type="button" class="btn btn-default btn-sm" onclick="Search();">统计</button>
    
    function exportExcel() {
            var sheet = XLSX.utils.table_to_sheet($("#_searchTable")[0]);
            var blob = sheet2blob(sheet);
            openDownloadDialog(blob, '社会服务汇总表.xlsx');
        }
        // 将一个sheet转成最终的excel文件的blob对象,然后利用URL.createObjectURL下载
        function sheet2blob(sheet, sheetName) {
            sheetName = sheetName || 'sheet1';
            var workbook = {
                SheetNames: [sheetName],
                Sheets: {}
            };
            workbook.Sheets[sheetName] = sheet;
            // 生成excel的配置项
            var wopts = {
                bookType: 'xlsx', // 要生成的文件类型
                bookSST: false, // 是否生成Shared String Table,官方解释是,如果开启生成速度会下降,但在低版本IOS设备上有更好的兼容性
                type: 'binary'
            };
            var wbout = XLSX.write(workbook, wopts);
            var blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
            // 字符串转ArrayBuffer
            function s2ab(s) {
                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;
            }
            return blob;
        }
        /**
         * 通用的打开下载对话框方法,没有测试过具体兼容性
         * @param url 下载地址,也可以是一个blob对象,必选
         * @param saveName 保存文件名,可选
         */
        function openDownloadDialog(url, saveName)
        {
            if(typeof url == 'object' && url instanceof Blob)
            {
                url = URL.createObjectURL(url); // 创建blob地址
            }
            var aLink = document.createElement('a');
            aLink.href = url;
            aLink.download = saveName || ''; // HTML5新增的属性,指定保存文件名,可以不要后缀,注意,file:///模式下不会生效
            var event;
            if(window.MouseEvent) event = new MouseEvent('click');
            else
            {
                event = document.createEvent('MouseEvents');
                event.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
            }
            aLink.dispatchEvent(event);
        }
    
  • 相关阅读:
    ssh secure shell client
    端口转发后执行putty连接------------------》VirtualBox+ubuntu_server
    linux 文件权限 初级
    Ubuntu下virtualbox nat网络模式下 实现宿主机访问虚拟机
    linux php
    linux 进入mysql
    Spring_day04--整合struts2和spring框架
    Spring_day04--课程安排_回顾SSH框架知识点_SSH框架整合思想
    Spring_day03--Spring的事务管理
    Spring_day03--Spring配置c3p0连接池和dao使用jdbcTemplate
  • 原文地址:https://www.cnblogs.com/zhangguangxiang/p/14232549.html
Copyright © 2011-2022 走看看