html中table导出到excel独立于浏览器

本文详细介绍了如何通过服务器端代码解决Firefox浏览器导出数据至Excel时遇到的乱码问题,包括从页面获取table数据、设置响应头属性、以及将数据正确输出为Excel格式的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

见firefox下导出:http://blog.youkuaiyun.com/aaoxue/article/details/8350191

鉴于之前出现导出到excel的乱码问题,实现独立于浏览器的导出方案

思路:将界面上table的innerHTML获取传送到服务器,在服务器中设置%response的属性和内容实现下载功能。界面代码不做赘述,

看后台response的属性设置

Set%stream=##class(%FileBinaryStream).%New()
Do%stream.SetAttribute("ContentType","application/vnd.ms-excel")
Do%stream.SetAttribute("ContentDisposition","attachment;filename="_title_".xls")
Do%stream.SetAttribute("Expires",600)
Do%stream.SetAttribute("Expires",600)
setstreamOid=$Get(%session.Data("excelXml"))
kill%session.Data("excelXml")
setmyStream=##class(%Stream.Object).%Open(streamOid)
stableStr="<html><head><META http-equiv=\"_$Char(34)_"Content-Type\"_$Char(34)_" content=\"_$Char(34)_"text/html; charset=UTF-8\"_$Char(34)_"></head><body><table>"
stableStr=tableStr_myStream.Read(myStream.Size)_"</table></body></html>"//注意tableStr的写法其它语言可以仿照这样的写法

d%stream.Write(tableStr)

将stream的属性赋给response

Set%response.ContentType=%stream.GetAttribute("ContentType")
Set%response.CharSet=%stream.GetAttribute("CharSet")
If%stream.GetAttribute("ContentDisposition")'=""Do%response.SetHeader("Content-Disposition",%stream.GetAttribute("ContentDisposition"))

If%stream.IsCharacter() {
Do%response.ContentInfo(,.table)
Iftable="RAW"||($extract(table,1,$length("Latin"))="Latin")||($extract(table,1,$length("CP"))="CP") {
Set%response.ContentLength=%stream.Size
}}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值