使用RadGrid导出自定义Excel文件

时间:2012-01-31 17:53:22

标签: c# vb.net telerik radgrid

我可以将我的radgrid导出到excel文件,但我想在工作表中添加更多信息。

如果可能的话,我希望获得一个用于自定义Excel文件生成的教程/示例代码。

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

                    </tel:radgrid>

Grid与一些数据表进行数据绑定,我需要添加一些数据  添加一些字符串

  

mygrid.MasterTableView.ExportToWord()

3 个答案:

答案 0 :(得分:1)

这是我使用Telerik Grid的一些代码,而不是使用他们提供的ExportToExcel函数,我创建了自己的按钮来触发它自己的导出事件。

我有一个名为getDataSource的函数(不包括在内)用于填充网格,您可以覆盖它或创建自己的函数以将数据提取到DataTable中,并根据需要添加任何行/列/数据。 / p>

        //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();
        }

答案 1 :(得分:1)

可能的方法是在导出之前修改HTML代码。这是如何。

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);
    };
}

这适用于Excel(不是ExcelML)和Word。

祝你好运

答案 2 :(得分:1)

您唯一需要做的就是将您的其他页面信息添加到您的arg的ExportOutput

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);

}