临时导出excel,直接html代码复制进excel里面可以直接变成表格

临时导出excel,直接html代码复制进excel里面可以直接变成表格

 

p标签和br会导致分成两个单元格

可以在外面的标签身上加,或者br上面加

 br {

             mso-data-placement:same-cell;

        }

 

这样子br不会被分成另个,只是同一个单元格换行了

 

开发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;

}

posted @ 2023-08-24 16:53  郭大蛋子  阅读(344)  评论(0编辑  收藏  举报