c#导出Excel

该博客介绍了如何使用C#来导出Excel文件,通过设置单元格样式并组装DataTable数据,然后调用导出函数实现。示例代码中展示了创建包含列1到列5的DataTable,并进行Excel导出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 public void ExportExcel(string fileName, DataTable dt)
        {
            HttpResponse response = HttpContext.Current.Response;
            response.Buffer = true;
            response.Clear();
            response.ClearHeaders();
            response.ClearContent();
            response.ContentType = "application/vnd.ms-excel";
            response.AddHeader("Content-Disposition", string.Format("attachment; filename={0}.xls", fileName + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss")));
            response.AppendCookie(new HttpCookie("fileDownloadToken", "true"));
            response.Charset = "UTF8";
            response.ContentEncoding = System.Text.Encoding.UTF8;
            //实例化一个流
            StringWriter stringWrite = new StringWriter();
            //指定文本输出到流
            HtmlTextWriter htmlWrite = new HtmlTextWriter(stringWrite);
            GridView gv = new GridView();
            gv.DataSource = dt;
            gv.DataBind();
            #region 设置多表头 此表头即为导出到excel中的表头
            TableCell[] header = new TableCell[9];//9列
            for (int i = 0; i < header.Length; i++)
            {
                header[i] = new TableHeaderCell();
            }
            header[0].RowSpan =2;
            header[0].Text = "跨行列1";
            header[1].RowSpan = 2;
            header[1].Text = "跨行列2";
            header[2].RowSpan = 2;
            header[2].Text = "跨行列3";
            header[3].RowSpan = 2;
            header[3].Text = "跨行列4";
            header[4].ColumnSpan = 4;
            header[4].Text = "跨列1</th></tr><tr>";


            header[5].Text = "跨列1_1";
            header[6].Text = "跨列1_2";
            header[7].Text = "跨列1_3";
            header[8].Text = "跨列1_4";


            gv.HeaderRow.Cells.Clear();
            gv.HeaderRow.Cells.AddRange(header);
            #endregion
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                for (int j = 0; j < dt.Columns.Count; j++)
                {
                    //设置每个单元格的格式

                    gv.Rows[i].Cells[j].Attributes.Add("style", "vnd.ms-excel.numberformat:@");

                       var val= gv.Rows[i].Cells[5].Text;//这里取出每个单元格的值

                }
            }
            //把 GridView 的内容输出到 HtmlTextWriter
            gv.RenderControl(htmlWrite);
            response.Write(stringWrite.ToString());
            stringWrite.Close();
            response.Flush();
            response.End();

        }

//组装DataTable数据,之和调用导出函数

 public  void Export(string objName)
        {
            switch (objName)
            {
                case "V_KY_Budget":
                    {

DataTable dataTable = new DataTable();
                        string[] colomons = { "列1", "列2", "列3", "列4", "列5"};
                        foreach (var item in colomons)
                        {
                            dataTable.Columns.Add(item);

                        }

                        for (int i = 0; i < reportData.Rows.Count; i++)
                        {
                           
                            DataRow dataRow = dataTable.NewRow();
                               //添加行数据
                            dataTable.Rows.Add(dataRow);
                        }

                        ExportExcel("导出的excel名称", dataTable);

               break;
                    }
                default:
                    base.Export();
                    break;
            }
        }

                        

//导出的excel如图



//说明:此代码仅为示例,若要应用到项目需要根据情况调整格式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值