piapia123
zh

表格文件转换

格式化

所有处理都在浏览器本地完成,数据不上传服务器

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

单个文件 · 全程在本机处理

文件只在你的浏览器里读取,不会上传到任何服务器。断网也能正常用。

把一份表格拖进来,转成 CSV、JSON、Markdown 表格或 HTML 表格。文件不会被上传 —— xlsx 就是一个装着一堆 XML 的 ZIP,浏览器完全解得开。 ⚠️ 读到的是单元格的显示值,不是整份表格。 这一条决定了它能用来做什么: · 公式取到的是缓存的计算结果(上次在 Excel 里算出来的那个数),不是公式本身。所以一个从没被 Excel 打开过、由程序生成的 xlsx,公式格可能根本没有缓存值 —— 读出来是空的。这不是缺陷,是文件里确实没有那个数。 · 样式(字体、颜色、边框、数字格式)全部丢失 —— 这四种目标格式里都表达不了。 · 合并单元格只有左上角那个格子有值。视觉上「跨三列」的标题,在数据里就是一个格加两个空格子 —— 这是导出表格时最常见的意外。 · 批注、条件格式、数据验证、图表、图片、透视表全部丢失。 所以它适合把数据搬出来(导进数据库、喂给脚本、转成别的格式),不适合把表格转成另一种表格(那需要保住样式,得用 Excel 自己的「另存为」)。 ⚠️ 两处容易踩的地方:日期在 Excel 里本质是一个数字,这里已经按日期解出来并按 UTC 输出(用本地时区会让东八区整体少一天);多工作表各自独立输出,不会合并。

功能

  • 读 .xlsx、.xls、.xlsm、.xlsb、.xlt、.xltx、.xltm、.ods、.csv、.tsv(含模板文件)
  • 四种输出:CSV、JSON、Markdown 表格、HTML 表格
  • ⚠️ 「读到的是显示值」的说明写在结果里,不藏进 FAQ
  • ⚠️ 日期按 UTC 输出,不会因为时区差一天
  • ⚠️ 没有 BOM 的 UTF-8 CSV 不会变成乱码(按 UTF-8 严格校验后再决定编码)
  • ⚠️ 重复的表头自动加后缀 —— JSON 里键名重复会静默丢掉一整列
  • ⚠️ 空表头补成「列N」,而不是丢掉那一列
  • 可以只转指定的工作表;工作表的行列数逐个列出
  • ⚠️ 表格太大时不转 Markdown / HTML(产物没法读),CSV 与 JSON 不受限
  • 每一块输出都有独立的复制按钮
  • 文件不上传,断网也能用

使用方法

  1. 把表格文件拖进虚线框,或点击选择
  2. 选输出格式、要不要把第一行当表头、转哪一个工作表
  3. 结果按工作表分块,每块都能单独复制

常见问题

为什么公式读出来是空的?
因为文件里那个格子确实没有值。Excel 保存公式时,会把上次算出来的结果一起存进去(叫缓存值),读的时候取的就是它。而一个由程序生成、从没在 Excel 里打开过的 xlsx,写入方可能只写了公式没写缓存值 —— 那时谁也读不出来。这不是解析器的问题,是文件本身的形态。要拿到那些数,先用 Excel 或 LibreOffice 打开并保存一次。
合并单元格为什么会丢?
因为合并只是显示效果,数据仍然只存在左上角那一个格子里。一份「第一季度」横跨三列的表格,在数据层面是:第一格写着「第一季度」,后面两格是空的。转成 CSV 或 JSON 时你看到的就是这个样子。这是导出表格时最常见的意外 —— 一份看起来整齐的报表,导出来第一列全是空的(那是合并造成的)。要正确处理,得先在 Excel 里取消合并并填充。
为什么 Markdown 和 HTML 有大小限制?
因为产物没法用。一个几万格的表格转成 Markdown 之后是几万行管道符 —— 谁也不会去读它,粘进任何编辑器都会卡。CSV 与 JSON 不受这个限制,因为那两种格式本来就是给机器读的,多大都有意义。要看的表格转 Markdown,要处理的数据转 CSV 或 JSON。
日期会不会差一天?
不会 —— 这恰恰是这类工具最容易出错的地方。Excel 里的日期本质上是一个数字(距 1899-12-30 的天数),靠数字格式显示成日期;读的时候必须告诉解析器「这个按日期理解」,否则一列日期会变成一串 `45123`,而它们看起来完全正常。开了之后又有第二个坑:`Date` 对象带时区,用本地时区解释会让东八区的用户看到日期整体少一天。这里统一按 UTC 输出,两个坑都避开了。
加密的表格文件能读吗?
不能。设了打开密码的 xlsx 在文件层面就是加密的,没有密码解不开 —— 这不是工具的限制,是那份文件在没有密码时根本不包含可读的数据。另外 WPS 的 `.et` 格式也读不了(它是私有格式)。如果是这两种,先用 Excel 另存为 `.xlsx` 并且去掉密码。

相关工具