C# экспорт базы Firebird в Excel без циклов

186
09 декабря 2017, 05:39

Выход - использование буфера обмена или есть другой способ? Что нашел сам:

SaveFileDialog sfd = new SaveFileDialog();
        sfd.Filter = "Excel Documents (*.xls)|*.xls";
        sfd.FileName = "*.xls";            
        if (sfd.ShowDialog() == DialogResult.OK)
        {
            // Скопировать результаты DataGridView в буфер обмена
            copyAlltoClipboard();
            object misValue = System.Reflection.Missing.Value;
            Excel.Application xlexcel = new Excel.Application();
            xlexcel.DisplayAlerts = false; // Без этого вы получите два подтверждения перезаписи
            Excel.Workbook xlWorkBook = xlexcel.Workbooks.Add(misValue);
            Excel.Worksheet xlWorkSheet = (Excel.Worksheet)xlWorkBook.Worksheets.get_Item(1);
            // Название листа Excel
            xlWorkSheet.Name = "Title";
            // Вставка скопированного текста в область
            Excel.Range CR = (Excel.Range)xlWorkSheet.Cells[8, 2];
            CR.Select();
            xlWorkSheet.PasteSpecial(CR, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, true);
            // Выделяем ячейку A1
            xlWorkSheet.get_Range("A1").Select();
            // Сохраните файл excel под местоположением из SaveFileDialog
            xlWorkBook.SaveAs(sfd.FileName, Excel.XlFileFormat.xlWorkbookNormal, misValue, misValue, misValue, misValue, Excel.XlSaveAsAccessMode.xlExclusive, misValue, misValue, misValue, misValue, misValue);
            xlexcel.DisplayAlerts = true;
            xlWorkBook.Close(true, misValue, misValue);
            xlexcel.Quit();
            releaseObject(xlWorkSheet);
            releaseObject(xlWorkBook);
            releaseObject(xlexcel);
            // Очистить буфера обмена и DataGridView
            Clipboard.Clear();
            dataGridView1.ClearSelection();
            // Откройте сохраненный файл excel
            if (File.Exists(sfd.FileName))
                System.Diagnostics.Process.Start(sfd.FileName);
        }
    }
    private void releaseObject(object obj) // Освобождение памяти
    {
        try
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            obj = null;
        }
        catch (Exception ex)
        {
            obj = null;
            MessageBox.Show("Exception Occurred while releasing object " + ex.ToString());
        }
        finally
        {
            GC.Collect();
        }
    }
    private void copyAlltoClipboard() // Копирование в буфер
    {
        dataGridView1.SelectAll();
        DataObject dataObj = dataGridView1.GetClipboardContent();
        if (dataObj != null)
            Clipboard.SetDataObject(dataObj);
    }
READ ALSO
C# WPF PointCollection не обновляет UI

C# WPF PointCollection не обновляет UI

Необходимо сделать приложение, в котором по нажатию на кнопку к ней протягивалась бы ломанная линия, решил сделать это через Polyline

200
Какое из двух действий происходит?

Какое из двух действий происходит?

Доброго времени сутокЕсть код, в котором вызывается метод Object

156
Можно ли класс отправить через URI запрос?

Можно ли класс отправить через URI запрос?

Такой код с JSON запросом:

200