在dynamic弧形网格中输出为excel(xlsx)

在将数据从radGrid导出到excel时,date格式有问题,网格中的“2014年12月”在导出的Excel中转​​换为“Dec-2014”。 我读了几个链接,发现这个自定义格式可以在radGrid_ExportCellFormatting事件处理程序中完成。 喜欢 :

protected void radGrid_ExportCellFormatting(object source, ExportCellFormattingEventArgs e) { if ((e.FormattedColumn.UniqueName) == "Content") { e.Cell.Style["mso-number-format"] = @"\@";//To export in text format } } 

由于我正在dynamic地形成网格,所以我在后面的代码中将事件添加到了网格中,但事件并没有被解雇。

  radGrid.ExportCellFormatting += new EventHandler<ExportCellFormattingEventArgs>(radGrid_ExportCellFormatting); 

注意:这个方法在不是dynamic网格时会触发并正常工作。

如果有人能告诉我我缺less什么,或者是否有任何其他方法将列的格式设置为“文本”,将会有所帮助。

我正在创build导出网格的导出方法是:

 protected void ExportExcel(RadGrid radGrid) { DataSet dsResults = GetDataSet(radGrid); if (dsResults != null && dsResults.Tables[0].Rows.Count > 0) { RadGrid radGrid = new RadGrid(); radGrid.ID = "radGridExcel"; List<string> colNames = (from DataColumn x in dsResults.Tables[0].Columns select x.ColumnName).ToList(); radGrid.MasterTableView.Columns.Clear(); radGrid.EnableLinqExpressions = false; colNames.ForEach(columnName => radGrid.MasterTableView.Columns.Add(new Telerik.Web.UI.GridBoundColumn { DataField = columnName, HeaderText = columnName, AllowSorting = false, AllowFiltering = false })); radGrid.AutoGenerateColumns = false; radGrid.DataSource = dsResults.Tables[0]; radGrid.DataBind(); radGrid.ExportCellFormatting += new EventHandler<ExportCellFormattingEventArgs>(radGrid_ExportCellFormatting); this.Controls.Add(radGrid); radGrid.ExportSettings.Excel.Format = GridExcelExportFormat.Xlsx; radGrid.ExportSettings.HideStructureColumns = true; radGrid.ExportSettings.OpenInNewWindow = true; radGrid.ExportSettings.ExportOnlyData = true; radGrid.ExportSettings.FileName = fileName; radGrid.MasterTableView.GroupsDefaultExpanded = true; radGrid.MasterTableView.Caption = string.Empty; radGrid.MasterTableView.ExportToExcel(); } }