← 返回所有博客文章

C1GridView 表格控件用于在前台展示数据,最近有用户提出把 C1GridView 导出到 Excel 文件的需求,考虑到还会有其他用户有此需求,所以分享给大家浏览,希望能对广大用户有所帮助。

C1GridView 本身不支持导出到 Excel 文件,在本篇文章中将分别介绍如何通过自定义方法把 C1GridView以 Excel 形式导出到客户端和服务器端。

导出到客户端,通过 HtmlTextWriter 来实现,代码如下:

        protected void Button1_Click(object sender, EventArgs e)
        {
            StringWriter stringWrite = new StringWriter();
            HtmlTextWriter htmlWrite=new HtmlTextWriter(stringWrite);
            C1GridView dg=new C1GridView();
            dg=this.C1GridView2;
            dg.HeaderStyle.ForeColor = System.Drawing.Color.Black;
            dg.RowStyle.ForeColor = System.Drawing.Color.Black;
 
            dg.AllowSorting = false;
            dg.AllowPaging = false;
            dg.AllowCustomPaging = false;
            Control parent=dg.Parent;
            //parent.Controls.Remove(dg);
 
            dg.RenderControl(htmlWrite);
 
            parent.Controls.Add(dg);
            string content = stringWrite.ToString();
            HttpResponse response=this.Response;
            response.Clear();
            response.Buffer = true;
            response.Charset = "";
            response.ContentType = "application/vnd.ms-excel";
            response.ContentEncoding = new UTF8Encoding();
            response.Write(content);
            response.End();
        }

 

导出到服务器端,需要结合 Studio for ASP.NET Wijmo 套包中的另一款插件 C1XLBook 实现,主要思路是创建 C1XLBook 后,遍历 C1GridView 的单元格值,赋值给 C1XLBook 单元格。代码如下:

C1.C1Excel.C1XLBook excelBook = new C1.C1Excel.C1XLBook();
            excelBook.Sheets.Add("C1GridView");
            C1.C1Excel.XLSheet sheet = excelBook.Sheets[0];
            int rowCount = this.C1GridView2.Rows.Count;
            int colCount = this.C1GridView2.Columns.Count;
            for (int i = 0; i < rowCount; i++)
			{
                C1.C1Excel.XLRow row=new C1.C1Excel.XLRow();
                sheet.Rows.Add(row);
			}
            
            for (int i = 0; i < colCount; i++)
			{
                C1.C1Excel.XLColumn col=new C1.C1Excel.XLColumn();
                sheet.Columns.Add(col);
			}
            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j < colCount; j++)
                {
                    string text = this.C1GridView2.Rows[i].Cells[j].Text;
                    sheet[i, j].SetValue(text, null);
                }
            }
            excelBook.Save(this.Server.MapPath("test.xls"));
        }

 

可以下载 Demo 进行测试:

VS2013 + .NET 4.0 + Studio for ASP.NET Wijmo 2014V1