WhatsApp 聊天记录转 CSV:马来西亚卖家整理订单用

粘贴导出的聊天记录,按开始处理,复制一张每条消息对应一行的电子表格,包括时间、发送者、媒体与跨行消息,方便后续筛选、统计与归档。

🔒 100% 浏览器内运行 · 零服务器上传

马来西亚规则与特殊情况

WhatsApp 导出文件是纯文字,每条消息一行,但消息正文可以跨多行:下一条带时间的消息头决定上一条的结束位置,中间的普通行都属于上一条消息,换行会保留。下表是引擎用四行真实记录算出的结果:

导出行类型保留的内容
12/03/2026, 09:41 - Ahmad Faizal: Morning, stock for Shopee is readytextMorning, 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 groupsystemAhmad created this group
12/03/2026, 09:44 - Tan, Ah Kow: hellotexthello
  • 两种手机格式都支持,日期按日-月。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

使用方法

  1. 在 WhatsApp 里导出聊天记录:打开聊天,点开名字,导出聊天,不带媒体——然后打开 .txt 文件,复制全部内容。
  2. 把文字粘贴进输入栏,按开始处理。输出栏每条消息一行 CSV;统计行显示条数、参与者、日期范围、媒体与系统消息数量。
  3. 按复制结果,把内容粘贴到电子表格——或者切到 TSV 模式,直接把分好列的内容粘贴进 Excel。

常见问题

为什么发送者显示的是电话号码而不是名字?

导出文件保留的是它当时携带的名字。如果参与者没有保存显示名字,或导出时对方还没保存,WhatsApp 就会写号码。解析器按原样保留这行,不会替发送者编造名字。

照片、语音和贴纸会变成什么?

它们会变成类型为媒体的一行,占位符原文(<Media omitted>、audio omitted、sticker omitted 等)保留在内容栏。不带媒体的 .txt 文件本来就没有照片的字节,所以无法恢复——这一行只记录它们曾经出现过,不会被悄悄丢掉。

为什么带逗号的消息会带引号?

单元格里的逗号会把内容拆成两个单元格,所以按规则加引号。消息里的双引号会加倍。以 = + - @ 开头的**单元格**在引号内加撇号前缀,粘贴进来的聊天记录不能当公式执行。四列都适用:像 +60 12-345 6789 这样的国际号码会输出成 '+60 12-345 6789,时间戳以数字开头所以不受影响。

跨了两行的消息会被合并吗?

会。没有新消息头的行属于上一条消息,换行保留在那个单元格里。CSV 的引号把两行包在一个字段中,所以行数仍然等于消息数。

我的聊天记录会被上传吗?

不会。转换器是浏览器里的静态 JavaScript:打开网络标签页会看到零请求。聊天记录同时是你的客户名单和销售记录,这正是它不能离开本机的原因。