您的位置:首页 > Web前端 > HTML

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

2012-12-24 14:07 351 查看
见firefox下导出:/article/8099532.html

鉴于之前出现导出到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)

set streamOid=$Get(%session.Data("excelXml"))

kill %session.Data("excelXml")

set myStream=##class(%Stream.Object).%Open(streamOid)

s tableStr="<html><head><META http-equiv=\"_$Char(34)_"Content-Type\"_$Char(34)_"
content=\"_$Char(34)_"text/html; charset=UTF-8\"_$Char(34)_"></head><body><table>"

s tableStr=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)

If table="RAW"||($extract(table,1,$length("Latin"))="Latin")||($extract(table,1,$length("CP"))="CP")
{

Set %response.ContentLength=%stream.Size

} }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: