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

 

 

 

 

 

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值