简体   繁体   中英

How to print a text before writing grid data to Excel

I am trying to print a text " This is my customer information" into an Excel file before writing GridView data to Excel. This text should be in top and remaining data should display below this text.

Can anyone help me? How can I do it? Please check my current code. This code just writes my GridView data to an Excel file.

protected void ExportToExcel(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            using (StringWriter sw = new StringWriter())
            {
                HtmlTextWriter hw = new HtmlTextWriter(sw);

                //To Export all pages
                GridView1.AllowPaging = false;

                Search(null, null);

               // GridView1.HeaderRow.BackColor = Color.White;
                foreach (TableCell cell in GridView1.HeaderRow.Cells)
                {
                    cell.BackColor = GridView1.HeaderStyle.BackColor;
                }
                foreach (GridViewRow row in GridView1.Rows)
                {
                   // row.BackColor = Color.White;
                    foreach (TableCell cell in row.Cells)
                    {


                        if (row.RowIndex % 2 == 0)
                        {
                            cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                        }
                        else
                        {
                            cell.BackColor = GridView1.RowStyle.BackColor;
                        }
                        cell.CssClass = "textmode";

                    }


                    //table.Rows.Add(title);

                }
                GridView1.Columns[7].Visible = false;
                GridView1.RenderControl(hw);

                //style to format numbers to string
                string style = @"<style> .textmode { } </style>";
                Response.Write(style);
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();
            }
        }

Boils down to

Response.Write("Some cool text added before the grid");

before

    Response.Output.Write(sw.ToString());

.

using System;
using System.Drawing;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
using System.Collections.ObjectModel;


namespace AddTextToDataGridExportExcel_46000670
{
    public partial class Default : System.Web.UI.Page
    {
        static ObservableCollection<gridEntry> gridDataSource = new ObservableCollection<gridEntry>();
        protected void Page_Load(object sender, EventArgs e)
        {
            fillDataSource();
            initializeGridView();
        }

        private void fillDataSource()
        {
            gridDataSource.Add(new gridEntry(1));
            gridDataSource.Add(new gridEntry(2));
            gridDataSource.Add(new gridEntry(3));
            gridDataSource.Add(new gridEntry(4));
            gridDataSource.Add(new gridEntry(5));
        }
        private void initializeGridView()
        {
            GridView1.DataSource = gridDataSource;
            GridView1.DataBind();
        }


        protected void ExportToExcel(object sender, EventArgs e)
        {
            Response.Clear();
            Response.Buffer = true;
            Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls");
            Response.Charset = "";
            Response.ContentType = "application/vnd.ms-excel";
            using (StringWriter sw = new StringWriter())
            {
                HtmlTextWriter hw = new HtmlTextWriter(sw);

                //To Export all pages
                GridView1.AllowPaging = false;
                addRowToGrid();//add text within the grid
                initializeGridView();

                GridView1.HeaderRow.BackColor = Color.White;
                foreach (TableCell cell in GridView1.HeaderRow.Cells)
                {
                    cell.BackColor = GridView1.HeaderStyle.BackColor;
                }
                foreach (GridViewRow row in GridView1.Rows)
                {
                    row.BackColor = Color.White;
                    foreach (TableCell cell in row.Cells)
                    {
                        if (row.RowIndex % 2 == 0)
                        {
                            cell.BackColor = GridView1.AlternatingRowStyle.BackColor;
                        }
                        else
                        {
                            cell.BackColor = GridView1.RowStyle.BackColor;
                        }
                        cell.CssClass = "textmode";
                    }
                }

                GridView1.RenderControl(hw);

                //style to format numbers to string
                string style = @"<style> .textmode { } </style>";
                Response.Write(style);
                Response.Write("blah blah blah");//add text before the grid
                Response.Output.Write(sw.ToString());
                Response.Flush();
                Response.End();
            }
        }

        public override void VerifyRenderingInServerForm(Control control)
        {
            /* Verifies that the control is rendered */
        }


        private void addRowToGrid()
        {
            gridDataSource.Insert(0, new gridEntry { col1 = "this is my added text" });
        }

        private GridView addRowToGridAgain(GridView gv)
        {
            return gv;
        }

        protected void btn_ClickMe_Click(object sender, EventArgs e)
        {
            ExportToExcel(null, null);
        }
    }

    public class gridEntry
    {
        public string col1 { get; set; }
        public string col2 { get; set; }
        public string col3 { get; set; }
        public string col4 { get; set; }
        public string col5 { get; set; }
        public string col6 { get; set; }
        public string col7 { get; set; }
        public string col8 { get; set; }

        public gridEntry()
        {
            col1 = string.Empty;
            col2 = string.Empty;
            col3 = string.Empty;
            col4 = string.Empty;
            col5 = string.Empty;
            col6 = string.Empty;
            col7 = string.Empty;
            col8 = string.Empty;
        }

        public gridEntry(int index)
        {
            col1 = "col1 " + index.ToString();
            col2 = "col2 " + index.ToString();
            col3 = "col3 " + index.ToString();
            col4 = "col4 " + index.ToString();
            col5 = "col5 " + index.ToString();
            col6 = "col6 " + index.ToString();
            col7 = "col7 " + index.ToString();
            col8 = "col8 " + index.ToString();
        }
    }

}

Below is YOUR snippet, fixed

  1. //GridView1.Columns[7].Visible = false; was throwing an error, so I commented it out. That's up to you to figure out, or ask a new question for it
  2. Don't know what Search(null, null); does, so I commented it out

     protected void ExportToExcelPosterWay(object sender, EventArgs e) { Response.Clear(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment;filename=GridViewExport.xls"); Response.Charset = ""; Response.ContentType = "application/vnd.ms-excel"; using (StringWriter sw = new StringWriter()) { HtmlTextWriter hw = new HtmlTextWriter(sw); //To Export all pages GridView1.AllowPaging = false; //Search(null, null); initializeGridView(); // GridView1.HeaderRow.BackColor = Color.White; foreach (TableCell cell in GridView1.HeaderRow.Cells) { cell.BackColor = GridView1.HeaderStyle.BackColor; } foreach (GridViewRow row in GridView1.Rows) { // row.BackColor = Color.White; foreach (TableCell cell in row.Cells) { if (row.RowIndex % 2 == 0) { cell.BackColor = GridView1.AlternatingRowStyle.BackColor; } else { cell.BackColor = GridView1.RowStyle.BackColor; } cell.CssClass = "textmode"; } //table.Rows.Add(title); } //GridView1.Columns[7].Visible = false; GridView1.RenderControl(hw); //style to format numbers to string string style = @"<style> .textmode { } </style>"; Response.Write(style); Response.Write("Some cool text added before the grid"); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); } } 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM