导出微信通讯录到 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

原文地址:https://www.cnblogs.com/ron123/p/9984577.html

时间: 2024-11-05 18:51:32

导出微信通讯录到 Excel的相关文章

【Android 仿微信通讯录 导航分组列表-上】使用ItemDecoration为RecyclerView打造带悬停头部的分组列表

[Android 仿微信通讯录 导航分组列表-上]使用ItemDecoration为RecyclerView打造带悬停头部的分组列表 一 概述 本文是Android导航分组列表系列上,因时间和篇幅原因分上下,最终上下合璧,完整版效果如下: 上部残卷效果如下:两个ItemDecoration,一个实现悬停头部分组列表功能,一个实现分割线(官方demo) 网上关于实现带悬停分组头部的列表的方法有很多,像我看过有主席的自定义ExpandListView实现的,也看过有人用一个额外的父布局里面套 Rec

PHP导出MySQL数据到Excel文件

PHP导出MySQL数据到Excel文件 转载 常会碰到需要从数据库中导出数据到Excel文件,用一些开源的类库,比如PHPExcel,确实比较容易实现,但对大量数据的支持很不好,很容易到达PHP内存使用上限.这里的方法是利用fputcsv写CSV文件的方法,直接向浏览器输出Excel文件. ? 1 <br><!--?php// 输出Excel文件头,可把user.csv换成你要的文件名header('Content-Type: application/vnd.ms-excel');he

js导出table中的EXCEL总结

导出EXCEL一般是用PHP做,但是项目中,有时候PHP后端工程师返回的数据不是我们想要的,作为前端开发工程师,把对应的数据编号转换为文字后,展示给用户,但是,需求要把数据同时导出一份EXCEl.无奈之下,我只能用js导出table中的数据了. 导出EXCEl一般是自己人用的,所以用js导出,因为js导出EXCEL一般情况下兼容性不是很好,很多只是兼容IE浏览器,还要设置在工具栏中进行设置才能导出,因为会相对比较烦.下面介绍几种方法: 一.js导出EXCEl带单元格合并[已验证,比较好用] //

导出微信群中的联系人的备注

package de.bvb; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; /** * 导出微信群中的联系人的备注 * 1.登录微信web版本: https://wx2.qq.com/ * 2.选择一个群,然后点右边的V字箭头把人显示出来,随便点一个人,右键,选择检查 * 3.鼠标滑动到最上面第二行(<ht

查询删除的微信聊天记录|微信聊天记录查询导出|微信聊天记录

查询删除的微信聊天记录|微信聊天记录查询导出|微信聊天记录--推荐他给你他{扣-扣} 56005049 手-机-定-位 QQ 微-信-查-看-记-录,监-控-手-机-微-信.手-机-清-单-等-等-我老婆手机通话清单,就是他 帮 我 查 的,他信誉很好,他 的 技 术 一流,我给他办 过业务,好技术 分享你我,新闻资讯顶,我给他办 过业务,他人很好而且办事儿的速度快,是我见过技 术最好的人了,认准竭诚为您排忧解难

使用Teleri 导出实体类数组到Excel

使用Teleri 导出实体类数组到Excel: 首先引用相应的Telerik库. 实体类 example: 1 public partial class Product 2 { 3 4 5 public int Id { get; set; } 6 public string Product_name { get; set; } 7 public string Brand { get; set; } 8 public string Model { get; set; } 9 public int

通过SectionIndexer实现微信通讯录

这里主要参考了使用SectionIndexer实现微信通讯录的效果 在这里做个记录 效果图 页面使用RelativeLayout,主要分为三个部分,match_parent的主listView,右边字母的SideBar,还有就是微信那种点击字母时浮动的一个TextView 布局: fragment_contacts.xml 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmln

类似于微信通讯录的界面Demo

这几天遇到一个项目需要向微信通讯录那样展示联系人,这里我做了一个简单的例子,希望可以帮助大家 先来看下界面的实现效果          上面的是在搜索框搜索时的结果,和点击后边的字母跳转到相应 的字母对应名字地方,并且显示你选择的字母 好了,现在我们来整理一下思路,怎么实现这中效果呢. 第一步,我们肯定是要有一个这样的界面 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" androi

使用poi导出大量数据到excel遇到的问题

最近在工作遇到利用poi导出大量数据到excel并提供下载的运用场景,并遇到了一个问题,当数据量过大时(几十万),后台在进行数据写入excel中的过程会非常耗时,导致迟迟没有响应前台,结果数据还没导完,前台页面就已经崩掉了. 解决思路:接收到前台导出excel请求之后,开一个线程,在线程里进行数据的写入和将写入完成的excel保存到服务器中等耗时操作,前台定时发送ajax请求检测是否已经导出完成,如果完成则提供一个下载链接到前台供用户下载. 想到解决思路之后,自己写了一个小demo,顺便学习下利