前几天要做excel导出。本着有现成的用就用现成的的原则,按照我一贯的做法,先百度。找到一个,封装的还不错,贴出来分享一下。原作者不知道是谁了。如有侵权,请联系删除。
protected void Outputexecl(object sender, EventArgs e)
{
string fileName = "物流报表" + "-" + Center.SelectedItem + "-" + DateTime.Now.ToLongDateString() + ".xls";//设置导出文件的名称
HttpContext curContext = System.Web.HttpContext.Current;
curContext.Response.ContentType = "application/vnd.ms-excel.numberformat:@";
curContext.Response.ContentEncoding = System.Text.Encoding.Default;
curContext.Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(fileName, Encoding.UTF8).ToString());
curContext.Response.Charset = "";
curContext.Response.Write(AddExcelHead());//显示excel的网格线
curContext.Response.Write(ExportTable(getData()));//导出
curContext.Response.Write(AddExcelbottom());//显示excel的网格线
curContext.Response.Flush();
curContext.Response.End();
}
#region 公共程序(导出excel)
public static string ExportTable(DataTable tb)
{
string data = "";
data += "<table cellspacing="0" cellpadding="5" rules="all" border="0">";
//写出列名
data += "<tr style="font-weight: bold; white-space: nowrap;">";
foreach (DataColumn column in tb.Columns)
{
data += "<td>" + column.ColumnName + "</td>";
}
data += "</tr>";
//写出数据
foreach (DataRow row in tb.Rows)
{
data += "<tr>";
foreach (DataColumn column in tb.Columns)
{
data += "<td>" + row[column].ToString() + "</td>";
}
data += "</tr>";
}
data += "</table>";
return data;
}
public static string AddExcelHead()
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("<html xmlns:x="urn:schemas-microsoft-com:office:excel">");
sb.Append(" <head>");
sb.Append(" <!--[if gte mso 9]><xml>");
sb.Append("<x:ExcelWorkbook>");
sb.Append("<x:ExcelWorksheets>");
sb.Append("<x:ExcelWorksheet>");
sb.Append("<x:Name></x:Name>");
sb.Append("<x:WorksheetOptions>");
sb.Append("<x:Print>");
sb.Append("<x:ValidPrinterInfo />");
sb.Append(" </x:Print>");
sb.Append("</x:WorksheetOptions>");
sb.Append("</x:ExcelWorksheet>");
sb.Append("</x:ExcelWorksheets>");
sb.Append("</x:ExcelWorkbook>");
sb.Append("</xml>");
sb.Append("<![endif]-->");
sb.Append(" </head>");
sb.Append("<body>");
return sb.ToString();
}
public static string AddExcelbottom()
{
StringBuilder sb = new StringBuilder();
sb.Append("</body>");
sb.Append("</html>");
return sb.ToString();
}
#endregion
浙公网安备 33010602011771号