教程 · Excel → 表格

Excel 转 HTML:公式和格式

一张电子表格装的东西比它显示的多:数字背后的公式、盖在上面的数字格式、横跨几格的合并。HTML 一样都没有。

所以问题不是会不会丢东西 —— 是丢的是哪些,以及里面有没有你正需要的那个。

去转换器

公式变成它的结果

一个写着 =SUM(B2:B9) 的格子出来是 4211。这几乎总是你在网页里要的 —— 页面上的公式只是一串字符,而一串看起来像公式的字符比那个数字更糟。

能这样是因为 Excel 每次保存都会把算好的值缓存在公式旁边。转换器读的是这个缓存值,所以它不需要自带一个公式引擎。

Excel 里的格子
B10:  =SUM(B2:B9)
HTML
<td>4211</td>

唯一会转成空的情况

如果这个工作簿是脚本生成的 —— Python 导出、报表任务、某个表格库 —— 而且从没在 Excel 里打开过,那就没有缓存值,因为没人写过。这些格子转出来是空的。

办法是拿 Excel 或 LibreOffice 打开一次再存一次。那会把所有公式算一遍并把值写进去。某张表的公式格读出来是空的时候转换器会提示你,不用自己猜。

公式的错误值也是转成空,而不是 #DIV/0! 或 #REF!。某一列的查找函数坏了,出来就是一列空白 —— 所以某列莫名其妙全空的时候,值得回去看看源文件。

数字格式留不住

这是最值得事先知道的一处意外。数字格式是 Excel 盖在值上面的一层遮罩,底下那个值是光的。

所以 $1,234.50 转出来是 1234.5 —— 货币符号、千分位、固定小数位全没了。显示 12.50% 的格子转出来是 0.125,因为那才是一直躺在那儿的那个数。

如果输出里格式是要紧的,在表格里加一列,用 TEXT() 公式拼出带格式的字符串,然后用那一列。这样它就是字符串了,而字符串是一模一样转过来的。

日期是例外:它们靠数字格式认出来,转出来是 2026-03-14,有时间的话后面接上时间。刻意按 UTC 读回 —— 想当然的那种写法会让格林尼治以西的人手上每个日期都退一天。

合并单元格会拆开

跨 A1:C1 合并的一个标题,出来是一个带文字的格子加旁边两个空格子。Excel 把值留在左上那格,其余的确实是空的;没有合并信息的话,能读到的就是这些。

HTML 用 colspan 和 rowspan 是能表达合并的,所以事后改一行就行。或者先在 Excel 里取消合并 —— 很多时候那些合并本来也只是为了把标题居中。

工作表,和体积上限

两条上限。单个工作簿 10 MB —— 比别的格式那个 25 MB 低,因为 .xlsx 是个 zip,在标签页里解开它耗的内存远超它的文件体积。还有你选中的全部内容合起来十万格,所以少选几张表能让一个大工作簿通过。

加密的工作簿会直接拒掉而不是读一半,老的二进制 .xls 也一样。那些先另存为 .xlsx。

  1. 01默认转第一张工作表。其余的按名字列出来,勾你要的。
  2. 02勾好几张,每张出来是自己的一个 <table>,上面一个 <h2> 写着表名。只勾一张,表名放进表格的 <caption> 里。
  3. 03末尾空行修掉之后整张表是空的,它会照实说明,而不是产出一个空表格。

把工作簿拖进来,勾好工作表,把表格复制走。所有东西都在你的浏览器里读 —— 一个财务模型一步都不出这台机器。

Excel → 表格