近来在做项目和学习的过程都遇到了导出并下载excel和txt文档的需求,我发现通过将DataTable中的数据导出成excel,让后将excel文件用记事本打开你会发现其实导出的excel是这样的 :
| (DataTable中的列名依次在th标签中) |
|---|
前期准备工作(包括相关工具或所使用的原料等)
VS2012, Office详细的操作方法或具体步骤
既然这样导出的excel类似于html中的DIV中嵌入了一个Table,那么结合导出txt的方式,我能不能把数据拼成这样的格式当成txt导出然后导出的时候将后缀名改成.xls呢?答案是肯定的——可以的,我发现这样导出的方式还有一个好处不管你要用什么样样式的表头(多行啥的都不是问题),这也让我联想到曾经有客户提出过能不能导出的excel中已经帮我做好了合计啊,已经有一些excel的聚合函数的调用统计和计算了啊,那时我的第一反应是难道要做excel编程还是office编程?看来当时的我还真是年幼无知啊,现在为大家贴上我近日尝试过的导出个性化样式的excel的方法与大家分享,不对之处还望大家指正(顺便再插一句,这样的到处方式能够给td标签添加各种样式以达到美观而更加直观的效果,样式和html中的一样)。以下下是一个生成的函数(将后缀.xls改成txt既可导出txt):
///
aram name="sb">excel内容字符串 ///
aram name="FileName">文件名 private void Exportxls(string sb, String FileName) { System.Web.UI.WebControls.GridView dgExport=null; //当前对话 System.Web.HttpContext curContext=System.Web.HttpContext.Current; //IO用于导出并返回excel文件 System.IO.StringWriter strWriter=null; System.Web.UI.HtmlTextWriter htmlWriter=null; if (sb !=null) { //设置编码和附件格式 //System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8)作用是方式中文文件名乱码 curContext.Response.AddHeader("content-disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(FileName, System.Text.Encoding.UTF8) + ".xls"); curContext.Response.ContentType="application/vnd.ms-word"; curContext.Response.ContentEncoding=System.Text.Encoding.UTF8; curContext.Response.Charset="UTF-8"; //导出Excel文件 strWriter=new System.IO.StringWriter(); htmlWriter=new System.Web.UI.HtmlTextWriter(strWriter); curContext.Response.Write(sb); curContext.Response.End(); } } protected void btnExcel_Click(object sender, System.EventArgs e) { string strTitle="个性化标题"; string strExcel="
导出样式如下图:

但是是否有很多人在导出的时候发现会有错误弹窗出现无法导出,那是因为如果调用Response.Write()方法的服务器控件在使用UpdatePanel的页面,则需要在UpdatePanel下增加一个
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
