2020-11-13 解决了困扰已久的html转excel 表格单行变多行的问题

        开发web系统时,导出数据为excel格式是很常见的需求。团队当中的小伙伴没有采用常规 excel 相关工具类来生成excel 文件,而是采用了偷懒的方案,即网页渲染为html 并且将 content-type填写为 application/xls。这样一来,浏览器就会认为收到了一个excel 文件,大功告成。

        当然,这种偷懒做法是有一个后遗症的,即这样生成的excel文件,在打开时,excel会给出一个提示框“您尝试打开的文件xxx与文件扩展名指定的格式不一致。打开文件请验证文件没有损坏且来源可信。是否立即打开该文件?”。此时选择是,则通常情况下表格内容能够正常显示。但是如果表格里的数据包含了回车换行(br),那么excel 会自动将这个格子拆分为多行。这个问题,令人困扰。

         试想,原本10条记录的一个表格,因为自动拆分换行,硬生生的多出来几行,这对于表格的后续处理,无论是人工处理,统计数据行数,还是程序自动处理(比如重新将该数据导入回去)都是一种灾难。几周之前碰到这个问题,苦思冥想,一直没有解决办法。痛骂微软,这个坑爹的逻辑是谁写出来的!!!

         昨晚上突然来了灵感,觉得微软应该为这个问题留了后路。于是我使用excel 设计了一个表格,在其中一个格子里填入多行数据。然后将其另存为 html 。将这个html文件重新改名为 .xls ,再用excel 打开。奇迹出现了,表格里的多行数据并没有拆分为多行!!!

         研究了它这个文件内容,找到至关重要的一个样式:

        br {

             mso-data-placement:same-cell;

        }

        至此,问题破解。可见,same-cell,意思就是表格里的数据,仍然保留在同一个表格里,不因为br换行而拆分。

        噢耶!可恶的微软!留了后门的可爱的工程师!!

 

        2020.11.13

 

 

 

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页