Hi,
I am using a Telerik RadGridView controls for my WPF Windows application.
My requirement is I want to export data from Hierarchical RadGridView to Excel. But, while exporting I am getting few errors as attached.
Any quick help on this will be highly appreciated.
Thanks & Regards,
Hirak
I am using a Telerik RadGridView controls for my WPF Windows application.
My requirement is I want to export data from Hierarchical RadGridView to Excel. But, while exporting I am getting few errors as attached.
Any quick help on this will be highly appreciated.
Thanks & Regards,
Hirak
private void ExporttoExcel_Click(object sender, RoutedEventArgs e)
{
//RadGridNonMarketableSummary.Export(
Telerik.Windows.Controls.ExportFormat format = Telerik.Windows.Controls.ExportFormat.Html;
System.Globalization.CultureInfo cultureInfo = new System.Globalization.CultureInfo("nb-NO");
SaveFileDialog dialog = new SaveFileDialog()
{
DefaultExt = "xls",
Filter = String.Format("{1} files (*.{0})|*.{0}|All files (*.*)|*.*", "xls", "Excel"),
FilterIndex = 1
};
if (dialog.ShowDialog() == true)
{
using (Stream stream = dialog.OpenFile())
{
Telerik.Windows.Controls.GridViewExportOptions exportOptions = new Telerik.Windows.Controls.GridViewExportOptions();
//RadGridNonMarketableSummary exportOptions = new RadGridNonMarketableSummary();
// RadGridView exportOptions = new GridView();
exportOptions.Format = format;
exportOptions.ShowColumnFooters = true;
exportOptions.ShowColumnHeaders = true;
exportOptions.ShowGroupFooters = true;
exportOptions.ShowColumnHeaders = true;
exportOptions.Culture = cultureInfo;
RadGridNonMarketableSummary.Export(stream, exportOptions);
}
}
}
private void RadGridNonMarketableSummary_ElementExporting(object sender, Telerik.Windows.Controls.GridViewElementExportingEventArgs e)
{
if (e.Element == Telerik.Windows.Controls.ExportElement.HeaderRow || e.Element == Telerik.Windows.Controls.ExportElement.FooterRow
|| e.Element == Telerik.Windows.Controls.ExportElement.GroupFooterRow)
{
//e.Background = HeaderBackgroundPicker.SelectedColor;
// e.Foreground = HeaderForegroundPicker.SelectedColor;
e.Background = Colors.LightGray;
e.Foreground = Colors.Blue;
e.FontSize = 20;
e.FontWeight = FontWeights.Bold;
}
else if (e.Element == Telerik.Windows.Controls.ExportElement.Row)
{
//e.Background = RowBackgroundPicker.SelectedColor;
//e.Foreground = RowForegroundPicker.SelectedColor;
e.Background = Colors.LightGray;
e.Foreground = Colors.Blue;
}
else if (e.Element == Telerik.Windows.Controls.ExportElement.Cell &&
e.Value != null && e.Value.Equals("Chocolade"))
{
e.FontFamily = new FontFamily("Verdana");
e.Background = Colors.LightGray;
e.Foreground = Colors.Blue;
}
else if (e.Element == Telerik.Windows.Controls.ExportElement.GroupHeaderRow)
{
e.FontFamily = new FontFamily("Verdana");
e.Background = Colors.LightGray;
e.Height = 30;
}
else if (e.Element == Telerik.Windows.Controls.ExportElement.GroupHeaderCell &&
e.Value != null && e.Value.Equals("Chocolade"))
{
e.Value = "MyNewValue";
}
else if (e.Element == Telerik.Windows.Controls.ExportElement.GroupFooterCell)
{
Telerik.Windows.Controls.GridViewDataColumn column = e.Context as Telerik.Windows.Controls.GridViewDataColumn;
Telerik.Windows.Data.QueryableCollectionViewGroup qcvGroup = e.Value as Telerik.Windows.Data.QueryableCollectionViewGroup;
if (column != null && qcvGroup != null && column.AggregateFunctions.Count() > 0)
{
e.Value = GetAggregates(qcvGroup, column);
}
}
}
private string GetAggregates(Telerik.Windows.Data.QueryableCollectionViewGroup group, Telerik.Windows.Controls.GridViewDataColumn column)
{
List<
string
> aggregates = new List<
string
>();
foreach (Telerik.Windows.Data.AggregateFunction f in column.AggregateFunctions)
{
foreach (Telerik.Windows.Data.AggregateResult r in group.AggregateResults)
{
if (f.FunctionName == r.FunctionName && r.FormattedValue != null)
{
aggregates.Add(r.FormattedValue.ToString());
}
}
}
return String.Join(",", aggregates.ToArray());
}
in XAML page I am using the following code:
<
UserControl
x:Class
=
"SSG_TradeExpress.View.Trade.TradeNonMarketable"
xmlns:d
=
"http://schemas.microsoft.com/expression/blend/2008"
xmlns:telerik
=
"http://schemas.telerik.com/2008/xaml/presentation"
xmlns:telerikControls
=
"clr-namespace:Telerik.Windows.Controls;assembly=Telerik.Windows.Controls"
xmlns:Converters
=
"clr-namespace:SSG_TradeExpress.View.Converters"
>
<
UserControl.Resources
>
<
Converters:RangeToColorConverter
x:Key
=
"RangeConverter"
></
Converters:RangeToColorConverter
>
</
UserControl.Resources
>
<
Grid
x:Name
=
"GridNonMarketable"
>
<
telerik:RadGridView
Grid.Row
=
"0"
x:Name
=
"RadGridNonMarketableSummary"
ElementExporting
=
"RadGridNonMarketableSummary_ElementExporting"
RowLoaded
=
"RadGridNonMarketableSummary_RowLoaded"
Loaded
=
"RadGridNonMarketableSummary_Loaded"
telerikControls:StyleManager.Theme
=
"Office_Blue"
IsReadOnly
=
"True"
ItemsSource
=
"{Binding TradeNonMarketableData.NonMarketableSummaryModel}"
IsFilteringAllowed
=
"False"
CanUserFreezeColumns
=
"False"
AutoGenerateColumns
=
"False"
AutoExpandGroups
=
"True"
>
<
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:GridViewTableDefinition
/>
</
telerik:RadGridView.ChildTableDefinitions
>
<
telerik:RadGridView.RowStyle
>
<
Style
TargetType
=
"{x:Type telerik:GridViewRow}"
>
<
Setter
Property
=
"IsExpanded"
Value
=
"True"
/>
</
Style
>
</
telerik:RadGridView.RowStyle
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
Header
=
"Investment Category Name"
DataMemberBinding
=
"{Binding InvestmentCategoryName}"
IsVisible
=
"False"
/>
<
telerik:GridViewDataColumn
Header
=
"Asset Class Name"
DataMemberBinding
=
"{Binding AssetClassName}"
IsVisible
=
"False"
/>
<
telerik:GridViewDataColumn
Header
=
"Sbu"
DataMemberBinding
=
"{Binding SbuName}"
Width
=
"125"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Total Value"
DataMemberBinding
=
"{Binding TotalValue, StringFormat={}{0:c}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
>
<
telerik:GridViewDataColumn.AggregateFunctions
>
<
telerik:SumFunction
Caption
=
"Total :"
ResultFormatString
=
"{}{0:c}"
/>
</
telerik:GridViewDataColumn.AggregateFunctions
>
</
telerik:GridViewDataColumn
>
<
telerik:GridViewDataColumn
Header
=
"Target Min"
DataMemberBinding
=
"{Binding TargetMin, StringFormat={}{0:n2}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Target Max"
DataMemberBinding
=
"{Binding TargetMax, StringFormat={}{0:n2}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Target Total"
DataMemberBinding
=
"{Binding TargetTotal, StringFormat={}{0:n2}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Total Actual"
DataMemberBinding
=
"{Binding TotalActual, StringFormat={}{0:n2}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Variance"
DataMemberBinding
=
"{Binding Variance, StringFormat={}{0:n2}}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
>
<
telerik:GridViewDataColumn.CellStyle
>
<
Style
TargetType
=
"telerik:GridViewCell"
>
<
Setter
Property
=
"Foreground"
Value
=
"{Binding TotalRange, Converter={StaticResource RangeConverter}}"
/>
</
Style
>
</
telerik:GridViewDataColumn.CellStyle
>
</
telerik:GridViewDataColumn
>
<
telerik:GridViewDataColumn
Header
=
"Total Range"
DataMemberBinding
=
"{Binding TotalRange}"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
>
<
telerik:GridViewDataColumn.CellStyle
>
<
Style
TargetType
=
"telerik:GridViewCell"
>
<
Setter
Property
=
"Foreground"
Value
=
"{Binding TotalRange, Converter={StaticResource RangeConverter}}"
/>
</
Style
>
</
telerik:GridViewDataColumn.CellStyle
>
</
telerik:GridViewDataColumn
>
</
telerik:RadGridView.Columns
>
<
telerik:RadGridView.HierarchyChildTemplate
>
<
DataTemplate
>
<
telerik:RadGridView
x:Name
=
"RadGridNonMarketableDetail"
telerikControls:StyleManager.Theme
=
"Windows7"
CanUserFreezeColumns
=
"False"
AutoGenerateColumns
=
"False"
IsFilteringAllowed
=
"False"
ItemsSource
=
"{Binding NonMarketableDetailModel}"
ShowGroupPanel
=
"False"
IsReadOnly
=
"True"
>
<
telerik:RadGridView.Columns
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding FundName}"
Header
=
"Fund Name"
Width
=
"200"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
Header
=
"Value / Unadjusted Value"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"150"
TextWrapping
=
"Wrap"
>
<
telerik:GridViewDataColumn.CellTemplate
>
<
DataTemplate
>
<
StackPanel
Orientation
=
"Horizontal"
>
<
TextBlock
Text
=
"{Binding Value,StringFormat={}{0:c}}"
></
TextBlock
>
<
TextBlock
Text
=
" / "
></
TextBlock
>
<
TextBlock
Text
=
"{Binding UnAdjustedValue,StringFormat={}{0:c}}"
></
TextBlock
>
</
StackPanel
>
</
DataTemplate
>
</
telerik:GridViewDataColumn.CellTemplate
>
</
telerik:GridViewDataColumn
>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding ValueDate, StringFormat={}{0:d}}"
Header
=
"Value Date"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding TotalActual, StringFormat={}{0:n3}}"
Header
=
"Total Actual"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding FundCode}"
Header
=
"Fund Code"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding CalledToDate, StringFormat={}{0:c}}"
Header
=
"Called To Date"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding Commitment, StringFormat={}{0:c}}"
Header
=
"Commitment"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding TotalDistributions, StringFormat={}{0:c}}"
Header
=
"Total Distributions"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
<
telerik:GridViewDataColumn
DataMemberBinding
=
"{Binding ToBeCalled, StringFormat={}{0:c}}"
Header
=
"To Be Called"
HeaderTextAlignment
=
"Right"
TextAlignment
=
"Right"
Width
=
"90"
TextWrapping
=
"Wrap"
/>
</
telerik:RadGridView.Columns
>
</
telerik:RadGridView
>
</
DataTemplate
>
</
telerik:RadGridView.HierarchyChildTemplate
>
</
telerik:RadGridView
>
<!--<telerik:RadButton Name="ExporttoExcel" Margin="722,-33,0,0" Style="{DynamicResource NormalButtonStyle}" Content="Export to Excel" Command="{Binding ExportToExcelCommand}" Width="102" HorizontalAlignment="Right" VerticalAlignment="Top" Height="27" CommandParameter="{Binding}"/>-->
<
telerik:RadButton
Name
=
"ExporttoExcel"
Margin
=
"722,-33,0,0"
Style
=
"{DynamicResource NormalButtonStyle}"
Content
=
"Export to Excel"
Width
=
"102"
HorizontalAlignment
=
"Right"
VerticalAlignment
=
"Top"
Height
=
"27"
Click
=
"ExporttoExcel_Click"
/>
</
Grid
>
</
UserControl
>