Asp.Net 生成.xls文件 C#生成Excel文件下载

前台导出Excel表格功能,主要是给查询时间和后台返回数据下载。

复制代码
       $("#something").click(function () {
       var queryjson = {startTime:"",endTime:""};
$.ajax({ url: "/test/testExcel/exportExcel?queryJson=" + JSON.stringify(queryJson), dataType: "json", type: "GET", success: function (data) {if (data.code == 1) { location.href = data.address;//前台的默认下载就要看这里 } else { alert("数据异常"); } } }); })
复制代码

下面主要是看后台了,后台主要是凭借html标签然后写入文件

这里主要是展示一个表格的画法和循环带入,内容数据有改动,直接拷贝会对不上数据。

这是一个Excel中多表格画法,只是增加多次表格内容。

 

复制代码
        [HttpGet]
        public ActionResult exportExcel(string queryJson)
        {
          
            var jihe = GetReportCompanyTicketTypejson(queryJson).ToList();
            //如没有数据,返回前台提示无数据导出
            if (jihe.Count <= 0)
            {
                return ToJsonResult(new { code = 3, address = "" });
            }//else nothing
            //获取统计数据
            var ZhiFulist = GetReportCompanyPayjson(queryJson).ToList();
            var html = "";
            string mark = "";
            var resList = ss_ticketlevelbll.GetList(new { }.ToJson());
            List<Entity.FoundManage.SS_TicketLevelEntity> createlogino = resList.Where(t => t.CreateLoginNo != null).ToList();
            string Cid = string.Empty, tdid = string.Empty;
try
            {
                #region 表头
                html += " <h3 style=\"text-align:center\">统计表</h3>";
                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody><tr><td> 统计区间 </td><td>" + startTime + "" + endTime + "</td><td> 统计时间 </td><td>" + shijian + "</td><td></td></tr>";
                html += " <tr><td> 单位 </td><td>" + jihe[0].entity.CDefault8 + "</td ></tr>";
                html += "</tbody></table>";
                #endregion

                #region 统计

                html += "<h3 style=\"text-align:center\">销售统计</h3>";
                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody><tr><td>somgthing</td><td class=\"td2\">somgthing</td><td>somgthing</td><td style=\"text-align: right;\">somgthing</td><td style=\"text-align: right;\">金额</td></tr></tbody></table>";
                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody>";
                var itemcount = 0;
                decimal itemprice = 0;
                foreach (var item1 in jihe)
                {
                    html += "<tr><td>" + item1.Something + "</td><td><table border=\"1\" style=\"font-size: 10px;\">";
                    foreach (var item2 in item1.Something)
                    {
                        html += "<tr><td>" + item2.Something+ "</td>" + mark + "<td><table border=\"1\" style=\"font-size: 10px;\">";
                        foreach (var item3 in item2.Something)
                        {
                            itemcount = itemcount + item3.Count;
                            itemprice = itemprice + item3.Price;
                            html += "<tr><td>" + item3.PayType + "</td><td>" + item3.Count + "</td><td>" + item3.Price + "</td></tr>";
                        }
                        html += "</table></td></tr>";
                    }
                    html += "</table></td></tr>";
                }
                html += "</tbody></table>";

                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody><tr><td>合计</td><td></td><td></td><td>" + itemcount + "</td><td>" + itemprice + "</td></tr></tbody></table>";
                #endregion

                #region 支付统计
                html += "<h3 style=\"text-align:center\">统计</h3>";
                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody><tr><td></td><td>Something</td><td>Something</td><td style=\"text-align: right;\">Something</td><td style=\"text-align: right;\">金额</td></tr></tbody></table>";
                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody>";
                var zhifucount = 0;
                decimal zhifuprice = 0;
                foreach (var zhifu1 in ZhiFulist)
                {
                    html += "<tr><td>" + zhifu1.Something + "</td><td><table border=\"1\" style=\"font-size: 10px;\">";
                    foreach (var zhifu2 in zhifu1.Something )
                    {
                        html += "<tr><td>" + zhifu2.User + "</td><td><table border=\"1\" style=\"font-size: 10px;\">";
                        foreach (var zhifu3 in zhifu2.Something )
                        {
                            zhifucount = zhifucount + zhifu3.Count;
                            zhifuprice = zhifuprice + zhifu3.Price;
                            html += "<tr><td>" + zhifu3.PayType + "</td><td>" + zhifu3.Count + "</td><td>" + zhifu3.Price + "</td></tr>";
                        }
                        html += "</table></td></tr>";
                    }
                    html += "</table></td></tr>";
                }
                html += "</tbody></table>";

                html += "<table border=\"1\" style=\"font-size: 10px;\"><tbody><tr><td>合计</td><td></td><td></td><td>" + zhifucount + "</td><td>" + zhifuprice + "</td></tr></tbody></table>";
                #endregion
            }
            catch (Exception e)
            {
                return Error("数据异常," + e.Message);
                throw;
            }//创建表格
            var dizhi = WriteLog(html, "TestName");
            var result = new { code = 1, address = dizhi };
            return ToJsonResult(result);
        }
复制代码

是不是看头晕了,其实很简单,把前台的Html拿过来就好了

 

 

现在  表格已经画好了,就差存储了,存储可以直接拿过去,比较简单啦

复制代码
  public string WriteToExcle(string content, string singleMark)
        {
            string filename = singleMark + DateTime.Now.ToString("yyyy-MM-dd") + ".xls";
            //Get relative route of IIS
            string folder = System.Web.HttpContext.Current.Server.MapPath("~/excel");
            if (!Directory.Exists(folder))
            {
                Directory.CreateDirectory(folder);
            }
            using (FileStream fs = new FileStream(folder + "/" + filename, System.IO.FileMode.Create, System.IO.FileAccess.Write))
            {
                using (StreamWriter sw = new StreamWriter(fs, Encoding.UTF8))
                {
                    sw.WriteLine(content + "\r\n");
                    return "/excel/" + filename;
                }
            }
        }
复制代码

 

 

存储相对简单很多,在服务器生成文件后吧地址返回给前台下载就可以了。

 

结束、。。

 

posted @   王月半子  阅读(247)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
点击右上角即可分享
微信分享提示