• 导出微信通讯录到 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——jquery UI
    js——正则表达式
    jsonp——使用公共接口获取数据
    JS——json、ajax、jsonp
    [HNOI2011]括号修复 / [JSOI2011]括号序列
    [HNOI 2016] 树
    luogu_P3313 [SDOI2014]旅行
    无旋Treap模板
    [CF 718C] Sasha and Array
    [洛谷 P4556] 雨天的尾巴
  • 原文地址:https://www.cnblogs.com/ron123/p/9984577.html
Copyright © 2020-2023  润新知