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程序设计有所帮助。
