1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
| public RelayCommand ExportToExcel
{
get
{
exportExcelCommand = new RelayCommand(()=>
{
SaveFileDialog sDialog = new SaveFileDialog();
sDialog.Filter = "Excel Files(*.xls)|*.xls";
if (sDialog.ShowDialog() == true)
{
// create an instance of excel workbook
Workbook workbook = new Workbook();
// create a worksheet object
Worksheet worksheet = new Worksheet("Friends");
Int16 ColumnCount = 0;
Int16 RowCount = 0;
//Writing Column Names
foreach (DataGridColumn dgcol in theGrid.Columns)
{
worksheet.Cells[0, ColumnCount] = new Cell(dgcol.Header.ToString());
ColumnCount++;
}
//Extracting values from grid and writing to excell sheet
//
foreach (object data in theGrid.ItemsSource)
{
ColumnCount = 0;
RowCount++;
foreach (DataGridColumn col in theGrid.Columns)
{
string strValue = "";
Binding objBinding = null;
if (col is DataGridBoundColumn)
objBinding = (col as DataGridBoundColumn).Binding;
if (col is DataGridTemplateColumn)
{
//This is a template column... let us see the underlying dependency object
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 = Convert.ToString(pi.GetValue(data, null));
}
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();
}
}
// writing extracted value in excell cell
worksheet.Cells[RowCount, ColumnCount] = new Cell(strValue);
ColumnCount++;
}
}
//add worksheet to workbook
workbook.Worksheets.Add(worksheet);
// get the selected file's stream
Stream sFile = sDialog.OpenFile();
workbook.Save(sFile);
}
}
} |
Partager