Экспорт нескольких элементов управления XtraGrid в один файл Excel

У меня есть несколько элементов управления XtraGrid, каждый из которых содержит различную информацию. Я получаю некоторую информацию о том, как вы можете экспортировать XtraGrid в файл Excel в следующем направлении: http://www.devexpress.com/Support/Center/p/Q362120.aspx

Есть ли способ экспортировать каждый элемент управления XtraGrid в один файл Excel, чтобы каждая информация XtraGrid экспортировалась в другой лист Excel.

Я попытался установить направление экспорта для того же файла Excel, но когда первый процесс экспорта завершен, второй процесс экспорта просто переопределяет файл Excel и так далее.

Я попытался использовать метод, описанный в этом направлении, XtraGrid - Экспорт в Excel, но я хотел узнать, есть ли другой способ без использования библиотек interop excel, потому что у меня возникли некоторые проблемы при использовании этой библиотеки (я имею в виду, что при использовании этой библиотеки вы создаете процесс Excel, но после того, как вы его создали, вы не можете убить его, даже если вы использовали метод, который должен это делать).

Любая помощь будет приветствоваться.

3 ответа

Решение

Для этого вам нужно добавить printableComponentLink к каждому gridControl, а затем создать составную ссылку, к которой вы можете добавить каждую из ссылок printableComponent.

Эта ссылка может доказать, что статья DevExpress KB может оказаться полезной, поскольку в ней есть пример этого.

Тогда вы будете использовать compositeLink.ExportToXlsx метод. Если вы создаете XlsxExportOptions с XlsxExportOptions.ExportMode свойство равное SingleFilePageByPage и передать его CompositeLink.ExportToXlsx Метод, каждая страница будет экспортирована на отдельный лист.

Я просто хотел дать более полный ответ, так как мне потребовалось некоторое время, чтобы найти решение, используя ответ Д...

И да - похоже, я пытаюсь что-то напечатать, но я просто экспортирую в Excel, обещаю.

using DevExpress.XtraPrinting;
using DevExpress.XtraPrintingLinks;
using DevExpress.XtraGrid;

class whatever
{
    GridControl grid1;
    GridControl grid2;
    //.....

    public void exportToExcel()
    {
        using (var saveDialog = new SaveFileDialog())
        {
            saveDialog.Filter = "Excel (.xlsx)|*.xlsx";
            if (saveDialog.ShowDialog() == DialogResult.OK)
            {
                var printingSystem = new PrintingSystemBase();
                var compositeLink = new CompositeLinkBase();
                compositeLink.PrintingSystemBase = printingSystem;

                var link1 = new PrintableComponentLinkBase();
                link1.Component = grid1;
                var link2 = new PrintableComponentLinkBase();
                link2.Component = grid2;

                compositeLink.Links.Add(link1);
                compositeLink.Links.Add(link2);

                var options = new XlsxExportOptions();
                options.ExportMode = XlsxExportMode.SingleFilePageByPage;

                compositeLink.CreatePageForEachLink();
                compositeLink.ExportToXlsx(saveDialog.FileName, options);
            }
        }
    }
}    

Надеюсь, это сэкономит кому-то немного времени.

В приведенном выше коде, compositeLink.ExportToXlsx не удалось для меня - нет такого метода. Конечно, я использую V10.2.5, который является старым. Я предлагаю эту ссылку с сайта DEVXPRESS, который использует ShowPreviewDialog метод, который позволяет экспортировать в различных форматах. Ссылка также показывает, как сделать некоторые настройки вывода. https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraPrintingLinksCompositeLinktopic

Другие вопросы по тегам