Excel ⇄ CSV 互转

拖一个 .xlsx 进来得到 CSV;拖一个 .csv 进来得到能正常打开的 xlsx。 文件不上传,全程在你自己的浏览器里算 —— 表格里的客户名单、订单、工资条不会被发到任何服务器。

1. 放进文件

把文件拖到这里,或点击选择

支持 .xlsx 和 .csv / .txt / .tsv —— 方向由文件类型自动判定,不用选

预览(最多前 20 行 × 12 列)

还没有数据 —— 左边拖一个 .xlsx 或 .csv 进来

这一版是怎么处理这些坑的(看完再决定要不要用)

日期变成了数字
Excel 里的日期本质是一个数字序列号(比如 45123 表示某一天),真正决定它「显示成日期」的是 单元格上的格式(numFmt)。准确还原要读 numFmt、区分 1900 和 1904 两种纪元、再判断这一列 到底是真的日期还是碰巧长这样的数字 —— 做一半会输出似是而非的日期,比原样输出更坑。 所以这一版按原始数字输出,你在 Excel 里选一列改成日期格式就能还原。
合并单元格
Excel 只在合并区域的左上角存值,其余格子根本不存在。默认输出就是「右边和下边是空的」 (和你在 Excel 里看到的完全一致);勾上「合并区域回填左上角的值」才会把值铺满整个区域。
只处理一个工作表
xlsx 可以有几十个 sheet,这个工具一次只转一个(默认第一个)。有多个 sheet 时上面会出现 「换一个工作表」的下拉。不做多 sheet 合并:各表列结构不一样、要不要表头、要不要加来源列, 每家规则都不同,猜错了比不做更糟。
公式
带公式的格子取 Excel 上次保存时缓存的「结果值」;没有缓存值的格子只能留空。 在浏览器里重新计算公式等于塞一整个计算引擎进去(几百个函数 + 易失函数 + 循环引用),不值得。 要精确结果,请在 Excel 里先「复制 → 选择性粘贴为数值」。
编码
读 CSV 时先按 UTF-8 严格解码,失败再按 GBK 解(国内 Excel「另存为 CSV」的默认编码), 带 BOM 的 UTF-16 也认得。写 CSV 时默认加 UTF-8 BOM,否则 Windows 版 Excel 会把 UTF-8 当 GBK 读,中文全部乱码。不做 GB18030 输出:GBK 系编码会丢生僻字,带 BOM 的 UTF-8 是唯一稳妥的选择。
不保留样式和图表
CSV 这个格式本身没有样式,转出去必然是纯文本;反向往 xlsx 写也只写值。 字体、颜色、列宽、条件格式、图表、图片、批注都不会跟着走 —— 要保样式请直接用 xlsx,别过 CSV。
不做 .xls(Excel 97-2003)
老 .xls 是 OLE 复合文档 + BIFF 二进制,不是 zip,得单独写一个解析器,为极少数老文件不值得。 请在 Excel 里「另存为 .xlsx」再来。
上限
最多约 200 万格(行列相乘)。超过会明确报错,而不是把浏览器卡死。 真要转超大表,删掉多余的空行空列通常就够了。

🔒 文件只在你本机内存里,页面不发送任何请求,也不写 localStorage。