2012-01-31 95 views
0

我可以将我的radgrid导出到excel文件,但我想在工作表中添加更多信息。使用RadGrid导出自定义Excel文件

如果可能的话,我将不胜感激的教程/示例代码做一个自定义的Excel文件生成。

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

        </tel:radgrid> 

电网正在数据绑定一些数据表,我需要补充一些数据 添加上述

mygrid.MasterTableView.ExportToWord()一些字符串

+3

你能提供你有什么样的代码和您要添加什么额外??请更具体..谢谢 – MethodMan 2012-01-31 17:59:32

+0

为什么有人会降级这个问题? – Kubi 2012-03-07 11:30:19

回答

1

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

我有一个功能(不含税)叫了getDataSource,我用它来填充网格,你可以覆盖这个或创建自己获取数据到一个DataTable和你认为合适的添加任何行/列/数据。

 //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

一种可能的方法是只在出口前修改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。

好运

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

}