有几年,我使用 Linux 脚本创建包含一些统计数据的 HTML 表格。如果 HTML 文档的扩展名为 .XLS,则可以使用 MS-Excel 直接打开(导入)。随着我的统计文件不断增长,现在它可以容纳超过五十万行,表格无法使用旧版 MS-Excel 打开。我测试了较新版本的 MS-Excel 2013,一切似乎都很好。但现在我收到客户的消息,说链接(来自 HTML 标签<td><a href="./path/filename">fiename</a></td>
)混乱不堪。在一些表格中,标题行也坏了,尽管它不包含任何链接!在一些末尾行中,链接消失了。
我在文本编辑器中检查了文档,一切似乎都正常。编码从未出现过问题,甚至包含数学公式的单元格也正确导入了。
我尝试将一个大表(>600000 行)拆分成几个小表。有些似乎没问题,有些则不然。即使是同一张表,有时导入正确,有时则不行。我还在 HTML 浏览器(Firefox、IE、Edge、Opera)中检查了大表,没有发现任何问题,但加载表需要很长时间。LibreOffice Calc 也没有问题。
如果有人能给我提示,什么可能导致了这个问题?
答案1
好吧,我做了很多实验,发现了两个主要原因:
- UNIX 换行符 (LF) 而不是 MS-DOS/Windows (CRLF) 会导致 Excel 缓冲区溢出并导致不匹配
- 使用的 Excel 版本 (2013) 会误解导入行数超过 65533 的链接
我在每行末尾添加 CR sed
,并将表格拆分为小于 65000 行的较小部分。
若要将分割后的表格重新合并,需要将其转换成Excel表格格式的XML工作簿,以便能够容纳更多的工作表。