天天看点

html表格导出excel的一点经验心得,html表格导出Excel的一点经验心得

最近在做统计功能,要求统计结果(表格)既能查看(BS系统,在浏览器查看),又能输出

为excel文件。对于输出excel文件,在网上找到n种方案,因为还需查看,最终选择了统计结果输出为table,查看时直接显示table,输出

excel时把table写进输出流,ContentType设置为application/vnd.ms-excel再输出,具体方法如下:

软件环境:VS2008,C#,IE,office2010

1.输出流内容的格式

xmlns:o="urn:schemas-microsoft-com:office:office"

xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns="http://www.w3.org/TR/REC-html40">

2.Response的属性设置

Response关键属性有几个

//输出的应用类型

Response.ContentType =

"application/vnd.ms-excel";//设定编码方式,若输出的excel有乱码,可优先从编码方面解决

Response.Charset =

"gb2312";Response.ContentEncoding = System.Text.Encoding.UTF8;

//关闭ViewState,此属性在Page中EnableViewState = false; //filenames是自定义的文件名Response.AppendHeader("Content-Disposition",

"attachment;filename=" +

filenames);//content是步骤1的html,注意是string类型Response.Write(content);

Response.End();

这样已经能发布最基本的excel,下面说些细节

1.样式最好用css,即设style属性或class属性,有些样式属性excel不认的。th、td的宽度最好在colgroup中设

2.在excel的格子中换行,可以用这个

style='mso-data-placement:same-cell;'/>

3.关于边框宽度的问题,如果你的table是全边框,可以设置table的border属性,其中0=不显示边框。

如果表的格式比较复杂,特别是表头,有些边要隐藏的,这个要先把table的border=0,之后对每个th

td用css的边框样式进行设置,但这里有个地方要注意,就是宽度,设为0.5pt(例:border-left: 0.5pt solid

#000;),如果设为1px输出的边框会很粗。

4.excel空余部分边框的问题。用此方法输出的excel,空余部分边框都不显示,如果要做成想普通excel的样子,需在输出流的head部分加上excel的设置,例子如下:

最后附上一个成果作为例子,扩展名为xls可用excel打开

xmlns:o="urn:schemas-microsoft-com:office:office"xmlns:x="urn:schemas-microsoft-com:office:excel"

xmlns="http://www.w3.org/TR/REC-html40">

2011年增城市单位土地使用权出让情况登记表(统计时间从2011-06-29至2011-06-30)
单位:万元、平方米
合同编号 用地单位 土地座落 供地面积 用途 出让金 容积率 建筑密度 绿地率 规划建筑面积 出让方式 审批日期 合同签订日期 动工期限 竣工日期 批次情况 合同约定缴费期限 缴费情况 滞纳金 备注
新增面积 保障性住房用地占用面积 应缴 已缴 未缴
440183-2011- 45654 1110000 111 拍卖出让 2011-06-29
合计 1110000 111