asp.net实现导出DataTable数据到Word或者Excel的方法
本文实例讲述了asp.net实现导出DataTable数据到Word或者Excel的方法。分享给大家供大家参考,具体如下:
///<summary><xmlnamespaceprefix="o"ns="urn:schemas-microsoft-com:office:office"/> ///导出DataTable数据到Word或者Excel ///</summary> ///<paramname="pPage">Page指令</param> ///<paramname="dt">DataTable数据表</param> ///<paramname="str_ExportTitle">导出Word或者Excel表格的名字</param> ///<paramname="str_ExportContentTitle">导出Word或者Excel表格中内容的标题</param> ///<paramname="str_ExportMan">导出Word或者Excel的人</param> ///<paramname="str_ExportType">导出类型(w:Word,e:Excel)</param> publicboolDataTableToExcel(PagepPage,DataTabledt,stringstr_ExportTitle,stringstr_ExportContentTitle,stringstr_ExportMan,stringstr_ExportType) { boolbl_Result=false; stringstr_ExportTypeName="word";//导出类型 stringstr_ExportFormat=".doc";//导出类型的格式 if(str_ExportType.Equals("e")) { str_ExportTypeName="excel"; str_ExportFormat=".xls"; } HttpResponseresponse=pPage.Response; if(dt.Rows.Count>0) { response.ContentEncoding=System.Text.Encoding.GetEncoding("GB2312"); response.ContentType="application/ms-"+str_ExportTypeName; response.AppendHeader("Content-Disposition","attachment;filename=" +HttpUtility.UrlEncode(str_ExportTitle,System.Text.Encoding.UTF8).ToString()//该段需加,否则会出现中文乱码 +str_ExportFormat); //获取DataTable的总列数 inti_ColumnCount=dt.Columns.Count; //定义变量存储DataTable内容 System.Text.StringBuilderbuilder=newSystem.Text.StringBuilder(); builder.Append("<html><head>\n"); builder.Append("<metahttp-equiv=\"Content-Language\"content=\"zh-cn\">\n"); builder.Append("<metahttp-equiv=\"Content-Type\"content=\"text/html;charset=gb2312\">\n"); builder.Append("</head>\n"); builder.Append("<tableborder='1'style='width:auto;'>"); if(!string.IsNullOrEmpty(str_ExportContentTitle)) { builder.Append(string.Concat(newobject[]{"<tr><tdcolspan=",(i_ColumnCount+1), "style='border:1px#7f9db9solid;font-size:18px;font-weight:bold;'>", str_ExportContentTitle, "</td></tr>"})); } builder.Append("<tr><tdcolspan="+(i_ColumnCount+1)+"valign='middle'style='border:1px#7f9db9solid;height:24px;'>"); builder.Append("导出人:【"+str_ExportMan+"】,导出时间:【"+DateTime.Now.ToString("yyyy-MM-ddhh:mm:ss")+"】</td></tr>"); builder.Append("<tr>\n"); builder.Append("<tdstyle='border:1px#7f9db9solid;bgcolor:#dee7f1;font-weight:bold;width:auto;'>序号</td>\n"); for(inti=0;i<i_ColumnCount;i++) { if(dt.Columns[i].Caption.ToString().ToLower()!="id") { builder.Append("<tdstyle='border:1px#7f9db9solid;bgcolor:#dee7f1;width:auto;'align='center'><b>"+dt.Columns[i].Caption.ToString()+"</b></td>\n"); } } #region此处没有在导出的数据列的最前面加一列(序号列) //此处没有在导出的数据列的最前面加一列(序号列) //foreach(DataRowrowindt.Rows) //{ //builder.Append("<tr>"); //for(intj=0;j<i_ColumnCount;j++) //{ //if(dt.Columns[j].Caption.ToString().ToLower()!="id") //{ //builder.Append("<tdstyle='border:1px#7f9db9solid;vnd.ms-excel.numberformat:@'>"+row[j].ToString()+"</td>"); //} //} //builder.Append("</tr>\n"); //} #endregion #region在导出的数据列的最前面加了一序号列(注意:非DataTable数据的序号) //在导出的数据列的最前面加了一序号列(注意:非DataTable数据的序号) for(intm=0;m<dt.Rows.Count;m++) { builder.Append("<tr>"); for(intj=0;j<i_ColumnCount;j++) { if(dt.Columns[j].Caption.ToString().ToLower()!="id") { if(j==0) { builder.Append("<tdstyle='border:1px#7f9db9solid;width:auto;'align='center'>"+(m+1)+"</td>"); } if(j>0) { builder.Append("<tdstyle='border:1px#7f9db9solid;width:auto;vnd.ms-excel.numberformat:@'align='left'>"+dt.Rows[m][j-1].ToString()+"</td>"); } if(j==dt.Columns.Count-1) { builder.Append("<tdstyle='border:1px#7f9db9solid;width:auto;vnd.ms-excel.numberformat:@'align='left'>"+dt.Rows[m][j].ToString()+"</td>"); } } } builder.Append("</tr>\n"); } #endregion builder.Append("<tr><tdcolspan="+(i_ColumnCount+1)+"valign='middle'style='border:1px#7f9db9solid;height:24px;'align='left'>"); builder.Append("合计:共【<fontcolor='red'><b>"+dt.Rows.Count+"</b></font>】条记录</td></tr>"); builder.Append("<tr>\n"); builder.Append("</table>"); response.Write(builder.ToString()); response.End(); bl_Result=true; } returnbl_Result; }
更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net操作json技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.netajax技巧总结专题》及《asp.net缓存操作技巧总结》。
希望本文所述对大家asp.net程序设计有所帮助。