Kubi
Kubi

Reputation: 2169

Exporting a Custom Excel File with RadGrid

I can export my radgrid to an excel file but I want to add some more info into the sheet.

If it is possible, I would appreciate for a tutorial/sample code for doing a custom excel file generation.

                    <tel:radgrid runat="server" id="mygrid" skinid="RadGrid_Search_Standard">
                    <ExportSettings HideStructureColumns="true" />

                    </tel:radgrid>

Grid is databound with some datatable and I need to add some data to add some strings above

mygrid.MasterTableView.ExportToWord()

Upvotes: 0

Views: 8246

Answers (3)

Yohanis
Yohanis

Reputation: 31

The only thing you need to do is add your additional page info to the ExportOutput of your arg

void yourRadGridID_GridExporting(object sender, GridExportingArgs e)
{

 string additionalPageInfo= "your html code for the additional page info goes here";

 e.ExportOutput = e.ExportOutput.Replace("`<body>`", "`<body>`" + additionalPageInfo);

}

Upvotes: 1

Daniel Benitez
Daniel Benitez

Reputation: 236

A possible way would be to modify the HTML code just before exporting. Here is how.

protected override void OnInit(EventArgs e)
{
    base.OnInit(e);
    RadGridName.GridExporting += (s, a) => 
    {
        string myHtmlCode = "<span>My HTML code goes here</span>";
        a.ExportOutput = a.ExportOutput.Replace("<body>", "<body>" + myHtmlCode);
    };
}

This should work for both Excel (not ExcelML) and Word.

Good luck

Upvotes: 1

Brian Garson
Brian Garson

Reputation: 1160

Here's some code that I use with a Telerik Grid, rather than using the ExportToExcel function they've provided I created my own button that fires it's own export event.

I have a function (not included) called getDataSource that I use to populate the grid, you could override this or create your own to fetch the data into a DataTable and add any rows/columns/data as you see fit.

        //export button calls this
        private void ExportReport()
        {
            SetPublicVariables();

            System.Data.DataTable dt = GetDataSource(false); 

            string exportData = buildCSVExportString(dt);

            string filename = string.Format("{0} - {1}.csv",
                (Master as MasterPages.Drilldown).Titlelbl.Text, CampaignTitle);
            if (filename.Length > 255) filename = filename.Substring(0, 255);

            ExportCSV(exportData, filename);
        }

//build a string CSV
public static string buildCSVExportString(DataTable exportDT)
        {
            StringBuilder exportData = new StringBuilder();
            // get headers.

            int iColCount = exportDT.Columns.Count;
            for (int i = 0; i < iColCount; i++)
            {
               exportData.Append(exportDT.Columns[i].ToString());
                if (i < iColCount - 1)
                {
                    exportData.Append(",");
                }
            }
            exportData.Append(System.Environment.NewLine);            

            // get rows.
            foreach (DataRow dr in exportDT.Rows)
            {
                for (int i = 0; i < iColCount; i++)
                {
                    if (!Convert.IsDBNull(dr[i]))
                    {
                        //If the variable is a string it potentially has charaters that can't be parsed properly.
                        //this fixes the comma issue(which adds aditional columns).  Replace and escape " with "".
                        if (dr[i] is string)        
                            exportData.Append(String.Format(@"""{0}""", ((string)dr[i]).Replace("\"", @"""""")));
                        else
                            exportData.Append(dr[i].ToString());
                    }
                    if (i < iColCount - 1)
                    {
                        exportData.Append(",");
                    }
                }
                exportData.Append(System.Environment.NewLine);
            }
            return exportData.ToString();
        }



public void ExportCSV(string content, string filename)
        {
            filename = RemoveIllegalPathChars(filename);
            HttpResponse Response = HttpContext.Current.Response;
            string ext = System.IO.Path.GetExtension(filename);
            Response.ClearHeaders();
            Response.AddHeader("Content-Disposition", string.Format("attachment;filename=\"{0}\"", filename));
            Response.ContentType = "text/csv; charset-UTF-8;";
            Response.Clear();
            Response.Write(content);
            Response.End();
        }

Upvotes: 1

Related Questions