public static void ExportDataGrid(DataGrid dGrid)
{
SaveFileDialog objSFD = new SaveFileDialog()
{
DefaultExt = "xls",
Filter = "XLS Files (*.xls)|*.xls|All files (*.*)|*.*",
FilterIndex = 1
};
if (objSFD.ShowDialog() == true)
{
string strFormat =objSFD.FileName.Substring
(objSFD.FileName.IndexOf('.') + 1).ToUpper();
StringBuilder strBuilder = new StringBuilder();
if (dGrid.ItemsSource == null) return;
List<string> lstFields = new List<string>();
if (dGrid.HeadersVisibility ==
DataGridHeadersVisibility.Column ||
dGrid.HeadersVisibility ==
DataGridHeadersVisibility.All)
{
foreach (DataGridColumn dgcol in dGrid.Columns)
lstFields.Add(dgcol.Header.ToString());
BuildStringOfRow(strBuilder, lstFields, strFormat);
}
foreach (object data in dGrid.ItemsSource)
{
lstFields.Clear();
foreach (DataGridColumn col in dGrid.Columns)
{
string strValue = "";
Binding objBinding = null;
if (col is DataGridBoundColumn)
objBinding = (col as DataGridBoundColumn)
.Binding as Binding;
if (col is DataGridTemplateColumn)
{
DependencyObject objDO =
(col as DataGridTemplateColumn)
.CellTemplate.LoadContent();
FrameworkElement oFE =
(FrameworkElement)objDO;
FieldInfo oFI =
oFE.GetType().GetField("TextProperty");
if (oFI != null)
{
if (oFI.GetValue(null) != null)
{
if (oFE.GetBindingExpression(
(DependencyProperty)oFI.GetValue(null)) != null)
objBinding =
oFE.GetBindingExpression(
(DependencyProperty)oFI.GetValue(null)).ParentBinding;
}
}
}
if (objBinding != null)
{
if (objBinding.Path.Path != "")
{
PropertyInfo pi = data.GetType().GetProperty(objBinding.Path.Path);
if (pi != null) strValue = pi.GetValue(data, null).ToString();
}
if (objBinding.Converter != null)
{
if (strValue != "")
strValue = objBinding.Converter.Convert(strValue,
typeof(string), objBinding.ConverterParameter,
objBinding.ConverterCulture).ToString();
else
strValue = objBinding.Converter.Convert(data,
typeof(string), objBinding.ConverterParameter,
objBinding.ConverterCulture).ToString();
}
}
lstFields.Add(strValue);
}
BuildStringOfRow(strBuilder, lstFields, strFormat);
}
StreamWriter sw = new StreamWriter(objSFD.OpenFile(), Encoding.UTF8);
sw.Write(strBuilder.ToString());
sw.Close();
}
}
{
SaveFileDialog objSFD = new SaveFileDialog()
{
DefaultExt = "xls",
Filter = "XLS Files (*.xls)|*.xls|All files (*.*)|*.*",
FilterIndex = 1
};
if (objSFD.ShowDialog() == true)
{
string strFormat =objSFD.FileName.Substring
(objSFD.FileName.IndexOf('.') + 1).ToUpper();
StringBuilder strBuilder = new StringBuilder();
if (dGrid.ItemsSource == null) return;
List<string> lstFields = new List<string>();
if (dGrid.HeadersVisibility ==
DataGridHeadersVisibility.Column ||
dGrid.HeadersVisibility ==
DataGridHeadersVisibility.All)
{
foreach (DataGridColumn dgcol in dGrid.Columns)
lstFields.Add(dgcol.Header.ToString());
BuildStringOfRow(strBuilder, lstFields, strFormat);
}
foreach (object data in dGrid.ItemsSource)
{
lstFields.Clear();
foreach (DataGridColumn col in dGrid.Columns)
{
string strValue = "";
Binding objBinding = null;
if (col is DataGridBoundColumn)
objBinding = (col as DataGridBoundColumn)
.Binding as Binding;
if (col is DataGridTemplateColumn)
{
DependencyObject objDO =
(col as DataGridTemplateColumn)
.CellTemplate.LoadContent();
FrameworkElement oFE =
(FrameworkElement)objDO;
FieldInfo oFI =
oFE.GetType().GetField("TextProperty");
if (oFI != null)
{
if (oFI.GetValue(null) != null)
{
if (oFE.GetBindingExpression(
(DependencyProperty)oFI.GetValue(null)) != null)
objBinding =
oFE.GetBindingExpression(
(DependencyProperty)oFI.GetValue(null)).ParentBinding;
}
}
}
if (objBinding != null)
{
if (objBinding.Path.Path != "")
{
PropertyInfo pi = data.GetType().GetProperty(objBinding.Path.Path);
if (pi != null) strValue = pi.GetValue(data, null).ToString();
}
if (objBinding.Converter != null)
{
if (strValue != "")
strValue = objBinding.Converter.Convert(strValue,
typeof(string), objBinding.ConverterParameter,
objBinding.ConverterCulture).ToString();
else
strValue = objBinding.Converter.Convert(data,
typeof(string), objBinding.ConverterParameter,
objBinding.ConverterCulture).ToString();
}
}
lstFields.Add(strValue);
}
BuildStringOfRow(strBuilder, lstFields, strFormat);
}
StreamWriter sw = new StreamWriter(objSFD.OpenFile(), Encoding.UTF8);
sw.Write(strBuilder.ToString());
sw.Close();
}
}