WhatsApp 聊天记录转 CSV:马来西亚卖家整理订单用
粘贴导出的聊天记录,按开始处理,复制一张每条消息对应一行的电子表格,包括时间、发送者、媒体与跨行消息,方便后续筛选、统计与归档。
🔒 100% 浏览器内运行 · 零服务器上传
马来西亚规则与特殊情况
WhatsApp 导出文件是纯文字,每条消息一行,但消息正文可以跨多行:下一条带时间的消息头决定上一条的结束位置,中间的普通行都属于上一条消息,换行会保留。下表是引擎用四行真实记录算出的结果:
| 导出行 | 类型 | 保留的内容 |
|---|---|---|
| 12/03/2026, 09:41 - Ahmad Faizal: Morning, stock for Shopee is ready | text | Morning, stock for Shopee is ready |
| 12/03/2026, 09:42 - Mei Ling: <Media omitted> | media | <Media omitted> |
| 12/03/2026, 09:43 - Ahmad created this group | system | Ahmad created this group |
| 12/03/2026, 09:44 - Tan, Ah Kow: hello | text | hello |
- 两种手机格式都支持,日期按日-月。iOS 写成
[12/03/2026, 09:41:33] 名字: 文本,Android 写成12/03/2026, 09:41 - 名字: 文本。日期是马来西亚的日-月顺序:12/03 是 3 月 12 日,不是 12 月 3 日。时间统一成YYYY-MM-DD HH:MM(导出带秒时则保留秒)。 - 发送者是第一个“: ”之前的全部文字。显示名字可以带逗号或冒号——
Tan, Ah Kow: hello保留整个名字。第一个“: ”就是分隔点。 - 系统消息没有发送者,也不编造一个。建群、改图标、改主题、通过邀请链接加入等记录没有发送者,成为发送者为空的
system行。端到端加密的提示行同样单独成为一条系统消息。 - 媒体是类型,不是删除。
<Media omitted>、图片、贴纸、语音、视频、GIF、文件与联系人卡片占位符成为media,占位符原文保留在内容栏。 - 被删与被改的消息保留自己的类型。
This message was deleted成为deleted,以(edited)结尾的消息成为edited,不做任何归并。 - 转义严格。含逗号、双引号、换行,或以
=/+/-/@开头的字段一律加引号,内部双引号加倍,开头的公式字符加'前缀,任何一列都不能当公式执行——所以国际号码的发送者会读成'+60 12-345 6789。这一行转义后是:2026-03-12 09:41,"Tan, Ah Kow","x=""y"", z",text。 - 拒绝有明确说法。空输入、前 50 条非空行里解析不到消息的文本、以及 2 MB 以上的输入,各有各的提示,不会悄悄吞掉。
你输入的内容不会离开浏览器:本页是静态 JavaScript,没有任何网络请求。
处理前后
处理前
[12/03/2026, 09:40:10] Messages and calls are end-to-end encrypted. No one outside of this chat can read them.
[12/03/2026, 09:40:12] Ahmad created this group
[12/03/2026, 09:40:55] Ahmad Faizal: Morning, stock for Shopee is ready
[12/03/2026, 09:41:33] +60 12-345 6789: Kopi, roti, "extra spicy", please
[12/03/2026, 09:42:01] Mei Ling: Please confirm the COD order.
Still waiting on the customer.
[12/03/2026, 09:43:10] Mei Ling: <Media omitted>
[12/03/2026, 09:44:02] Ahmad Faizal: Done, thanks 处理后
timestamp,sender,message,type
2026-03-12 09:40:10,,Messages and calls are end-to-end encrypted. No one outside of this chat can read them.,system
2026-03-12 09:40:12,,Ahmad created this group,system
2026-03-12 09:40:55,Ahmad Faizal,"Morning, stock for Shopee is ready",text
2026-03-12 09:41:33,"'+60 12-345 6789","Kopi, roti, ""extra spicy"", please",text
2026-03-12 09:42:01,Mei Ling,"Please confirm the COD order.
Still waiting on the customer.",text
2026-03-12 09:43:10,Mei Ling,<Media omitted>,media
2026-03-12 09:44:02,Ahmad Faizal,"Done, thanks",text 使用方法
- 在 WhatsApp 里导出聊天记录:打开聊天,点开名字,导出聊天,不带媒体——然后打开 .txt 文件,复制全部内容。
- 把文字粘贴进输入栏,按开始处理。输出栏每条消息一行 CSV;统计行显示条数、参与者、日期范围、媒体与系统消息数量。
- 按复制结果,把内容粘贴到电子表格——或者切到 TSV 模式,直接把分好列的内容粘贴进 Excel。
常见问题
为什么发送者显示的是电话号码而不是名字?
导出文件保留的是它当时携带的名字。如果参与者没有保存显示名字,或导出时对方还没保存,WhatsApp 就会写号码。解析器按原样保留这行,不会替发送者编造名字。
照片、语音和贴纸会变成什么?
它们会变成类型为媒体的一行,占位符原文(<Media omitted>、audio omitted、sticker omitted 等)保留在内容栏。不带媒体的 .txt 文件本来就没有照片的字节,所以无法恢复——这一行只记录它们曾经出现过,不会被悄悄丢掉。
为什么带逗号的消息会带引号?
单元格里的逗号会把内容拆成两个单元格,所以按规则加引号。消息里的双引号会加倍。以 = + - @ 开头的**单元格**在引号内加撇号前缀,粘贴进来的聊天记录不能当公式执行。四列都适用:像 +60 12-345 6789 这样的国际号码会输出成 '+60 12-345 6789,时间戳以数字开头所以不受影响。
跨了两行的消息会被合并吗?
会。没有新消息头的行属于上一条消息,换行保留在那个单元格里。CSV 的引号把两行包在一个字段中,所以行数仍然等于消息数。
我的聊天记录会被上传吗?
不会。转换器是浏览器里的静态 JavaScript:打开网络标签页会看到零请求。聊天记录同时是你的客户名单和销售记录,这正是它不能离开本机的原因。