25
2017
08

excel文件导出时内容还可以直接用table表示减少文件大小

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



版权声明:
作者:真爱无限 出处:http://www.pukuimin.top 本文为博主原创文章版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接.
« 上一篇下一篇 »

相关文章:

评论列表:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。