zoukankan      html  css  js  c++  java
  • 导出微信通讯录到 Excel

    /**
     * 将 contacts 转化成你需要的格式
     * 这里可以任意发挥
     * @param contacts
     * @returns {*}
     */
    function formatContacts(contacts) {
        return contacts.map(({NickName, Sex, RemarkName}) => {
            return {
                '昵称': NickName,
                '备注': RemarkName
            }
        })
    }
    
    /**
     * 加载 script
     * @param url
     * @returns {Promise}
     */
    function loadScript(url) {
        return new Promise((resolve) => {
            var head = document.getElementsByTagName('head')[0];
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.onload = resolve;
            script.src = url;
            head.appendChild(script);
        })
    
    }
    
    /**
     * 下载文件
     * @param obj
     * @param fileName
     */
    function saveAs(obj, fileName) {
        var a = document.createElement('a');
        a.download = fileName || '下载';
        a.href = URL.createObjectURL(obj);
        a.click(); // 模拟点击实现下载
        setTimeout(function () {
            URL.revokeObjectURL(obj); // 释放 objectURL
        }, 100);
    }
    
    /**
     * 字符串转字符流
     * @param s
     * @returns {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;
    }
    
    var scope = angular.element($('.scroll-wrapper .J_ContactScrollBody')).scope();
    var allContacts = scope.allContacts;
    // 过滤真实的用户
    var contacts = allContacts.filter(c => c.UserName);
    
    // 下载 excel 脚本
    loadScript('https://oss.sheetjs.com/js-xlsx/xlsx.full.min.js')
        .then(() => {
            console.log('download js-xlsx successful ');
    
            var config = {bookType: 'xlsx', bookSST: false, type: 'binary'};//这里的数据是用来定义导出的格式类型
            var wb = {SheetNames: ['Sheet1'], Sheets: {}, Props: {}};
            // 通过json_to_sheet 转成单页(Sheet)数据
            wb.Sheets['Sheet1'] = XLSX.utils.json_to_sheet(formatContacts(contacts));
            var fileName = '微信通讯录' + '.' + (config.bookType == "biff2" ? "xls" : config.bookType);
            saveAs(new Blob([s2ab(XLSX.write(wb, config))], {type: 'application/octet-stream'}), fileName);
    
        });
    

     摘自https://www.colabug.com/5256033.html

    导出微信通讯录到 Excel

  • 相关阅读:
    js获取url参数方法
    JQuery ajax 传递数组
    删除数组中的重复元素
    jquery load的使用
    css3 圆角
    一个项目最忌讳什么
    Lambda 表达式笔记
    KE ASP.NET取到kindeditor 编辑器数据
    ADO.NET
    .NET中Bind和Eval的区别
  • 原文地址:https://www.cnblogs.com/ron123/p/9984577.html
Copyright © 2011-2022 走看看