/// <summary> /// Exporta la información de un dataGridView a Excel de manera dinamica /// </summary> /// <param name="dataGridView">DataGridView de origen</param> /// <param name="pFullPath_toExport">Ruta del archivo exportado</param> /// <param name="nameSheet">Nombre de la hoja</param> public void dataGridView2ExcelDinamico(Xceed.Wpf.DataGrid.DataGridControl dataGridView, string pFullPath_toExport, string nameSheet) { System.Data.DataTable dt = new System.Data.DataTable(); ExcelExport myExcel = new ExcelExport(); myExcel.CreateWorksheet(nameSheet); //Recorro el DataGrid para buscar las columnas foreach (Xceed.Wpf.DataGrid.Column Column in dataGridView.Columns) { dt.Columns.Add(Column.Title.ToString()); } foreach (DataRow DataRow in dataGridView.Items) { DataRow dr = dt.NewRow(); foreach (Xceed.Wpf.DataGrid.Column Column in dataGridView.Columns) { dr[Column.Title.ToString()] = DataRow[Column.Title.ToString()]; } dt.Rows.Add(dr); } myExcel.PopulateFromDataTable(nameSheet, dt); myExcel.SaveToFile(pFullPath_toExport); //dataTable2ExcelDinamico(dt, dataGridView, pFullPath_toExport, nameSheet); }
public win_seleccion_ejes_reporte_estadistica(Xceed.Wpf.DataGrid.DataGridControl grid) { ValoresEjes = new List<Empresa.Comun.valores_dependientes_independientes>(); InitializeComponent(); this.__grid = grid; __valores_item(); //_datos(__grid); }
public SESIndicationsViewModel(Window ownerWindow) { _mainWindow = ownerWindow; if (_mainWindow != null) { _mainWindow.Loaded += (s, e) => { //LoadData(); } } ; GetData = new DelegateCommand(() => { if (IsServiceAvailable == false) { MessageBox.Show("Web-сервис АРМТЕС не доступен!", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Warning); return; } IsBusy = true; var watch = System.Diagnostics.Stopwatch.StartNew(); var task = Task.Factory.StartNew(Start); task.ContinueWith(t => { watch.Stop(); System.Diagnostics.Trace.TraceInformation("GetData -> {0} ms", watch.ElapsedMilliseconds); IsBusy = false; Status = null; DetailedStatus = null; }); task.ContinueWith(t => { MessageBox.Show(App.GetExceptionDetails(t.Exception), "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); }, TaskContinuationOptions.OnlyOnFaulted); }); Save = new DelegateCommand <Xceed.Wpf.DataGrid.DataGridControl>((o) => { var watch = System.Diagnostics.Stopwatch.StartNew(); Xceed.Wpf.DataGrid.DataGridControl grid = o as Xceed.Wpf.DataGrid.DataGridControl; ExcelLibrary.SpreadSheet.Workbook workbook = new ExcelLibrary.SpreadSheet.Workbook(); ExcelLibrary.SpreadSheet.Worksheet worksheet = new ExcelLibrary.SpreadSheet.Worksheet("First Sheet"); worksheet.Cells[0, 1] = new ExcelLibrary.SpreadSheet.Cell((short)1); worksheet.Cells[2, 0] = new ExcelLibrary.SpreadSheet.Cell(9999999); worksheet.Cells[3, 3] = new ExcelLibrary.SpreadSheet.Cell((decimal)3.45); worksheet.Cells[2, 2] = new ExcelLibrary.SpreadSheet.Cell("Text string"); worksheet.Cells[2, 4] = new ExcelLibrary.SpreadSheet.Cell("Second string"); worksheet.Cells[4, 0] = new ExcelLibrary.SpreadSheet.Cell(32764.5, "#,##0.00"); worksheet.Cells[5, 1] = new ExcelLibrary.SpreadSheet.Cell(DateTime.Now, @"YYYY-MM-DD"); worksheet.Cells.ColumnWidth[0, 1] = 3000; string executionPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location); string fileName = System.IO.Path.Combine(executionPath, "export.xls"); workbook.Worksheets.Add(worksheet); workbook.Save(fileName); watch.Stop(); System.Diagnostics.Trace.TraceInformation("Save -> {0} ms", watch.ElapsedMilliseconds); var p = new System.Diagnostics.Process { StartInfo = new System.Diagnostics.ProcessStartInfo(fileName) { UseShellExecute = true } }; p.Start(); /*if (grid != null) * Xceed.Wpf.DataGrid.Export.*/ }); Print = new DelegateCommand(() => { }, () => true, "Печать"); Update = new DelegateCommand(() => { }, () => Items != null, "Обновить"); }
/// <summary> /// Exporta la información de un DataTable dinamico a Excel /// </summary> /// <param name="pDataTable">DataTable de origen</param> /// <param name="dgv">DataGridView de origen (solo para tomar los titulos de las columnas y determinar las columnas a mostrar)</param> /// <param name="pFullPath_toExport">Ruta a exportar</param> /// <param name="nameSheet">Nombre de la hoja</param> /// <param name="showExcel">Mostrar excel?</param> public void dataTable2ExcelDinamico(System.Data.DataTable pDataTable, Xceed.Wpf.DataGrid.DataGridControl dgv, string pFullPath_toExport, string nameSheet) { string vFileName = Path.GetTempFileName(); FileSystem.FileOpen(1, vFileName, OpenMode.Output, OpenAccess.Default, OpenShare.Default, -1); string sb = string.Empty; //si existe datagridview, tomar de él los nombres de columnas y la visibilidad de las mismas if (dgv != null) { foreach (DataColumn dc in pDataTable.Columns) { System.Windows.Forms.Application.DoEvents(); string title = string.Empty; //recuperar el título que aparece en la grilla //Notar que debe haber sincronía con las columnas del detalle //if (dgv.Columns[dc.Caption] != null) //{ // Obtener el texto de cabecera de la grilla // title = dgv.Columns[dc.Caption].HeaderText; // sb += title + ControlChars.Tab; //} title = dc.ColumnName; sb += title + ControlChars.Tab; } } else { //si no existe datagridview tomar el nombre de la columna del datatable foreach (DataColumn dc in pDataTable.Columns) { System.Windows.Forms.Application.DoEvents(); string title = string.Empty; title = dc.Caption; sb += title + ControlChars.Tab; } } FileSystem.PrintLine(1, sb); int i = 0; //para cada fila de datos foreach (DataRow dr in pDataTable.Rows) { System.Windows.Forms.Application.DoEvents(); i = 0; sb = string.Empty; //para cada columna de datos foreach (DataColumn dc in pDataTable.Columns) { //solo mostrar aquellas columnas q pertenezcan a la grilla //notar que debe haber sincronia con las columnas del la cabecera if (dgv != null && dc.ColumnName != null) { System.Windows.Forms.Application.DoEvents(); //Linea q genera la impresión del registro sb = sb + (Information.IsDBNull(dr[i]) ? string.Empty : FormatCell(dr[i])) + ControlChars.Tab; } else if (dgv == null) { System.Windows.Forms.Application.DoEvents(); //Linea q genera la impresión del registro sb = sb + (Information.IsDBNull(dr[i]) ? string.Empty : FormatCell(dr[i])) + ControlChars.Tab; } i++; } FileSystem.PrintLine(1, sb); } FileSystem.FileClose(1); TextToExcel(vFileName, pFullPath_toExport, nameSheet); }