code:
var data = GetDataList(); string fileName = string.Format("export{0}", DateTime.Now.ToString("yyyyMMddHHmmssff")); Response.AppendHeader("Content-Disposition", "attachment;filename=" + fileName + ".xls"); //Response.Charset = "gb2312"; Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); Response.ContentType = "application/ms-excel"; StringBuilder sb = new StringBuilder(); sb.Append("<table border='1'>"); sb.Append("<tbody>"); sb.Append("<tr>"); sb.Append("<th>链接ID</th>"); sb.Append("<th>链接名称</th>"); sb.Append("<th>产品名称</th>"); sb.Append("<th>酒景名称</th>"); sb.Append("<th>省份</th>"); sb.Append("<th>审核状态</th>"); sb.Append("<th>上架时间</th>"); sb.Append("<th>下架时间</th>"); sb.Append("<th>归属人</th>"); sb.Append("<th>流量电话</th>"); sb.Append("</tr>"); sb.Append("</tbody>"); foreach (var item in data) { int productCount = item.Packages.Sum(m => { return m.Products.Count; }); sb.AppendFormat("<tr>"); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.ChannelLinkId, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.ChannelLinkName, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.Packages[0].PackageName, item.Packages[0].Products.Count); sb.AppendFormat("<td>{0}</td>", item.Packages[0].Products[0].ProductName); sb.AppendFormat("<td>{0}</td>", item.Packages[0].Products[0].ProvinceName); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.AuditStatus, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.StartDate, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.EndDate, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.BDName, productCount); sb.AppendFormat("<td rowspan="{1}">{0}</td>", item.BDTel, productCount); sb.AppendFormat("</tr>"); for (int i = 0; i < item.Packages.Count; i++) { var p = item.Packages[i]; if (i == 0) { if (p.Products.Count > 1) { for (int k = 1; k < p.Products.Count; k++) { sb.AppendFormat("<tr>"); sb.AppendFormat("<td>{0}</td>", p.Products[k].ProductName); sb.AppendFormat("<td>{0}</td>", p.Products[k].ProvinceName); sb.AppendFormat("</tr>"); } } } else { sb.AppendFormat("<tr>"); sb.AppendFormat("<td rowspan="{1}">{0}</td>", p.PackageName, p.Products.Count); if (p.Products.Count > 0) { sb.AppendFormat("<td>{0}</td>", p.Products[0].ProductName); sb.AppendFormat("<td>{0}</td>", p.Products[0].ProvinceName); for (int k = 1; k < p.Products.Count; k++) { sb.AppendFormat("<tr>"); sb.AppendFormat("<td>{0}</td>", p.Products[k].ProductName); sb.AppendFormat("<td>{0}</td>", p.Products[k].ProvinceName); sb.AppendFormat("</tr>"); } } sb.AppendFormat("</tr>"); } } } sb.AppendFormat("</table>"); LogUtility.WriteLog(string.Format("请求结果,返回文件:contentlength:{0}", sb.Length), false); Response.Write(sb); Response.End();
导出后的文件名是xls格式,直接用excel打开正常
不过,用notepad++打开excel文件,里面的内容有些变化,估计是导出时转化Content-Type时.Net web做的一些自动处理。