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做的一些自动处理。