Пример #1
0
        /// <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, "Обновить");
        }
Пример #4
0
        /// <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);
        }